var $channel = new function(){
	var obj = {};
	
	var _isLoaded = false;
	
	var checkDisplay = function(){
		var timer = setInterval(function(){
			if(_isLoaded){
				clearInterval(timer);
				$(".tooltipContents").toolTip({
					'isUnderline' : 'none',
					'imgPath' : '/includes/js/tooltip/img/'
				});
			};
		},100);
	};
	
	/* -------------------------------------------------------------------- */
	// プログラムラインナップ
	/* -------------------------------------------------------------------- */
	obj.lineup = new function(){
		var FILE_NAME='program.txt';
		var PRG_LEN = 30;
		var WEEK_LEN= 5;
		var tsv = null;
		var column=null;
		var columnString = null;
		var isXMLLoaded = false;
		
		var show = function(chNum){
			var src="";

			for(var i=0;i<WEEK_LEN;i++){
				src+='<dl>';
				src+='<dt>'+tsv.date[i]+'</dt>';
				src+='<dd>';
				src+='<ul>';

				try{
					
					var program = tsv.program[chNum]['w'+i];
				}catch(e){
					src='<p>error:Chナンバーが不正です。= '+chNum+'</p>';
					alert('error:Chナンバーが不正です。= '+chNum);
					return;
				}
				var programName;
				for(var j=0,len=program.length;j<len;j++){
					programName = (!program[j] || program[j]=="-")?'':program[j];
					
					if(programName == undefined) continue;
					
					if(!!columnString){
						var n = programName.split("■")[1];
						if(columnString.indexOf(n)!=-1){
							for(var k=0,cLen=column.length;k<cLen;k++){
								if(programName == column[k].title){
									programName = '<span class="tooltipContents">'+n+'</span><span style="display:none">'+column[k].text+'</span>';
									break;
								}
							}
						}else{
							programName = '<span class="normalPrg">'+programName+'</span>';
						}
					}else{
						programName = '<span class="normalPrg">'+programName+'</span>';
					}
					src+='<li>'+programName+'</li>';
				};
				src+='</ul>';
				src+='</dd>';
				src+='</dl>';
			}
			$('#Import_'+chNum+'_js').html(src);
			
		}
		
		var resObj = {
		 	init : function(columnTextPath){
				var isProgramLoaded = false;
				var isColumnLoaded = false;
				var checkLoaded = setInterval(function(){
					if(isProgramLoaded){
						if(!!columnTextPath){
							if(isColumnLoaded){
								clearInterval(checkLoaded);
								isXMLLoaded = true;
							}
						}else{
							clearInterval(checkLoaded);
							isXMLLoaded = true;
						}
					}
				},100)
				
				//programテキスト読み込み
				$.ajax({
				  url: FILE_NAME,
				  dataType : "text",
				  cache: false,
				  success: function(data){
				  	var LF = String.fromCharCode(10);
					var reg = /\t/;
					var lines = data.split(LF);
					var tsvObj = {};
					var dateArray = lines[0].split(reg);
					tsvObj.date = [];
					for(var i =0,len=dateArray.length;i<len;i++){
						if(dateArray[i].indexOf('～')!=-1) tsvObj.date.push(dateArray[i]);
					}
					if(tsvObj.date.length != WEEK_LEN){alert('error：週の数が不正')};
					
					tsvObj.program = {};
					var counter=1;
					var pastCh=null;
					for(var i=0;i<PRG_LEN;i++){
						var obj={};
						obj.w0=[];
						obj.w1=[];
						obj.w2=[];
						obj.w3=[];
						obj.w4=[];
						do{
							var a = lines[counter].split(reg);
							if(!tsvObj.program[a[0]]){
								tsvObj.program[a[0]] = "def";
								pastCh = a[0];
							}
							obj.w0.push(a[1]);
							obj.w1.push(a[2]);
							obj.w2.push(a[3]);
							obj.w3.push(a[4]);
							obj.w4.push(a[5]);
							
							counter++;
							var nextCh;
							try{
								nextCh = lines[counter].split(reg)[0];
							}catch(e){
								break
							}
						}while(pastCh == nextCh);

						tsvObj.program[a[0]] = obj;
					}
					tsv = tsvObj;
					isProgramLoaded = true;
				  },
				  error : function(XMLHttpRequest, textStatus, errorThrown){
				  	 alert(textStatus+':'+errorThrown);
				  }
				});
				if(!!columnTextPath){
					checkDisplay();
					//columnテキスト読み込み
					$.ajax({
					  url: columnTextPath,
					  dataType : "text",
					  cache: false,
					  success: function(data){
					  	column = [];
					  	columnString = String(data);
					  	var LF = String.fromCharCode(10);
						var reg = /\t/;
						var lines = data.split(LF);
						
						var obj;
						for(var i =0,len=lines.length;i<len;i++){
							if (!lines[i]) continue;
							var c = lines[i].split(reg);
							obj={};
							obj.title = c[0];
							obj.text = c[1];
							column.push(obj);
						}
						isColumnLoaded = true;
					  },
					  error : function(XMLHttpRequest, textStatus, errorThrown){
					  	 alert(textStatus+':'+errorThrown);
					  }
					});
				}
			},
			
			set : function(chNum){
				document.write('<div id="Import_'+chNum+'_js"></div>')
				var check = setInterval(function(){
					if(isXMLLoaded){
						clearInterval(check);
						show(chNum);
						if(!_isLoaded) _isLoaded=true;
					};
				},100);
			}
		};
		return resObj;
	}
	
	/* -------------------------------------------------------------------- */
	// トピックス表示
	/* -------------------------------------------------------------------- */
	var _XML_FILE = '../../topics/topics_images.xml';
	obj.topics = function(genre){
		$.ajax({
		  url: _XML_FILE,
		  dataType : "xml",
		  cache: false,
		  success: function(xml){
		  	var genreArray = [];
		    $(xml).find('imageData').each(function(i,obj){
		    	if($(this).attr('genre')==genre){
		    		var obj = {
		    			url:$(this).attr('url'),
		    			path:$(this).attr('thumPath'),
		    			channel:$(this).attr('channel'),
		    			subtitle:$(this).attr('subtitle'),
		    			title:$(this).text(),
		    			genre:$(this).attr('genre')
		    		}
		    		genreArray.push(obj);
		    	};
			});
			
			var src = '';
		  	var ulId=0;
		  	$(genreArray).each(function(i,obj){
		  		src+=(i%2==0)?'<ul class="'+((ulId%2==0)?'odd':'even')+' clearfix '+((ulId==0)?'topUl':'')+'">':'';
		    	src+='<li class="'+obj.genre+'">';
				src+='<div class="photo">';
				src+='<p class="slash"><a href="'+obj.url+'"><img src="'+obj.path+'" alt="'+obj.title+'" /></a></p>';
				src+='</div>';
				src+='<div class="text">';
				src+='<div class="ch">Ch:'+obj.channel+'</div>';
				src+='<a href="'+obj.url+'">'+obj.subtitle+'<br />'+obj.title+'</a>';
				src+='</div>';
				src+='<br class="clear" />';
				src+='</li>';
				src+=(i%2==0)?'':'</ul>';
				
				ulId = (i%2==0)?ulId:ulId+1;
			 });
			if(!!src){
				$('#TopicsList').html(src);
			}else{
				$('#Topics').css("display","none");
			};
			
		  },
		  error : function(XMLHttpRequest, textStatus, errorThrown){
		  	 alert(textStatus+':'+errorThrown);
		  }
		});
	};
	return obj;
};

