var DefaultChannel = "";
var DefaultLocation = "";
var DefaultModule = ""	
var WeatherModuleData = "";
var TVGuideModuleData = "";
var objTVData = "";
var objCurrentTVData = "";
var loopChannels = ['6','1','7','31'];
var chanNames=['TV2','TV3','TVOne','PRIME'];



/**** Weather Popup Variables *****/
var PopupEnabled = false;
var PopupOnlyId = 1;
var DisplayCount = 0;
var now = new Date();
var PopupConditions = [
{'name':'VideoEzy','valRE':/[a-z][a-z]+/,'idx':0,'eval':'"rain,thunder,drizzle,hail,showers".indexOf(val)>-1','hlid':'197798','trackurl':'http://adsfac.net/link.asp?cc=VID001.103552.0&clk=1&creativeID=152178&ord='+now.getHours()+now.getMinutes()+now.getSeconds(),'expires':new Date(now.getFullYear(), now.getMonth(), now.getDate(),23,59,59)},
{'name':'Fujitsu','valRE':/\/\s(\-?\d+)/,'idx':1,'eval':'parseInt(val)<18','hlid':'224779','trackurl':'http://ad.au.doubleclick.net/clk;225530463;49309847;n','expires':now.getHours()>11?new Date(now.getFullYear(), now.getMonth(), now.getDate(),23,59,59):new Date(now.getFullYear(), now.getMonth(), now.getDate(),12,00,00)}
];


var PopupMethod = function(ad) {
    if(!PopupEnabled)return false;
    $('#cat_hl_'+ad.hlid).clearQueue();
    $('#cat_hl_'+ad.hlid).fadeIn(1000).delay(10000).fadeOut(1000);
    $('#cat_hl_'+ad.hlid).click(function(){window.open(ad.trackurl);return false;});
    $('#cat_hl_'+ad.hlid+' img').click(function(){$('#cat_hl_'+ad.hlid).clearQueue();$('#cat_hl_'+ad.hlid).fadeOut(1000);return false;});
}

	$(document).ready(function(){

		// get the div ID to be displayed
		var currentLi;
		var displayDiv;
		//var cookieData = "WeatherDiv|WeatherDiv:link_18_85020|TVGuideDiv:7_Tab";
		
		cookieData = $.cookie('wthcookie');
		if(cookieData==null) 
		{
			cookieData = "WeatherDiv";
			if (PopupEnabled) {
				Popup("link_0_85011");
			}
		}

		
		var cookieArr = cookieData.split("|");
		//alert(cookieData);
		
		DefaultModule = cookieArr[0];
		
		
		var tempArr,nCtr;
		for(nCtr = 1;nCtr<cookieArr.length;nCtr++)
		{
			
			tempArr = cookieArr[nCtr].split(":");
			
			switch(tempArr[0])
			{
				case "WeatherDiv" :
					WeatherModuleData = tempArr[nCtr];
					DefaultLocation = tempArr[1];
					//alert("DefaultLocation = " + DefaultLocation)
					showCityWeather(DefaultLocation);	
				
					if (typeof(execMe) == "function")
					{
						 var _oArrAnid2 = 'pref09'; 
						 var _oArrCats2 = '85011,84907,85010,85012,85013,85014,85015,85016,85017,85018,85019,85020,85022,85023,85024,85025,85026,85027,85028,85029,85030,85031,85032,85033,85034,85035,85036,85037,85038,85039,85040,85041,85042,85043,85044,85045,85046,85047,85048,85049,85050,85051,85052'; 
						 var _oArrGroups2 = '7762, 7760, 7761, 7763, 7764, 7766, 7767, 7768, 7769, 7770, 7771, 7772, 7773, 7774, 7775, 7776, 7777, 7778, 7779, 7780, 7781, 7782, 7783, 7784, 7785, 7786, 7787, 7788, 7789, 7790, 7791, 7792, 7793, 7794, 7795, 7796, 7797, 7798, 7799, 7800, 7801, 7802, 7803'; var ARR_85011_SUPER_GROUPS = JS_85011_SUPER_GROUPS.split(',');  var JS_85011_SUPER_MODE = '0'; var ARR_85011_SUPER_MODE = JS_85011_SUPER_MODE.split(',');  
						 var _ArrMode2 = '0';
						 var _oArrAnid2 = 'pref09'; 
						 execMe(_ArrMode2,_oArrCats2,_oArrGroups2,DefaultLocation,_oArrAnid2);
						 
					}


					break;
				case "TVGuideDiv" :
					TVGuideModuleData = cookieArr[nCtr];
					DefaultChannel = tempArr[1];
					showChannelPrograms(DefaultChannel);
					break;
			}
		}	
		
		changeTab(DefaultModule);
	})

	
	function showCityWeather(WeatherCityId)
	{
	
		if(WeatherCityId=="")
		{
			WeatherCityId ="link_2_85010";
		}
		var WeatherCitySelect = $('#WeatherDiv #cat_hl_85011 #cat_hl_85011_tabLoc select');
		var found = false;
		$(WeatherCitySelect).find('option').each(function(){
			
			//alert($(this).attr('value') + "<=>" + WeatherCityId);
			
			if($(this).attr('value') == WeatherCityId)
			{
				$(this).attr('selected','selected'); 
				DefaultLocation = $(this).attr('value');
				//alert($(WeatherCitySelect))
				$(WeatherCitySelect).change(function(){
					$(WeatherCitySelect).attr('id',WeatherCityId);
				})
				WeatherModuleData = "WeatherDiv:" + WeatherCityId;
				//alert(WeatherModuleData )
				setCookieData();
				cookieData = $.cookie('wthcookie');
				if(cookieData==null) 
				{
					cookieData = "WeatherDiv";
				}
				if (PopupEnabled) {
					Popup(WeatherCityId);
				}

				return false;
			}
		})
			
	}
	
	function Popup(cityStr) {
	    var city = cityStr.split("_")[2];
	    var num = cityStr.split("_")[1];
	    var _oArrGroups3 = '7762, 7760, 7761, 7763, 7764, 7766, 7767, 7768, 7769, 7770, 7771, 7772, 7773, 7774, 7775, 7776, 7777, 7778, 7779, 7780, 7781, 7782, 7783, 7784, 7785, 7786, 7787, 7788, 7789, 7790, 7791, 7792, 7793, 7794, 7795, 7796, 7797, 7798, 7799, 7800, 7801, 7802, 7803';
	    var gpArr = _oArrGroups3.split(",");
	    currentGroup = gpArr[num];
	    
	    var popupCookieData = $.cookie('wpopupcookie');
		var cookieDate; 
	    if (popupCookieData == null) {
	        popupCookieData = "";
	    }

	    var popupCookieArr = popupCookieData.split("|");

	    var newData = "";
	    var currentCityCount = 0;
	    var cityExistsInCookie = false;
	    if (popupCookieData.indexOf(city) >= 0) {
	        cityExistsInCookie = true;
	        var removeStr = popupCookieData.substring(popupCookieData.indexOf(city), popupCookieData.indexOf("|", popupCookieData.indexOf(city)) + 1);
	        newData = popupCookieData.replace(removeStr, "");
	        for (var nCtr = 0; nCtr < popupCookieArr.length; nCtr++) {
	            var cityData = popupCookieArr[nCtr].split(":");
	            if (cityData[0] == city) {
	                newData = newData + city + ":" + (parseInt(cityData[1]) + 1) + "|";
	                currentCityCount = parseInt(cityData[1]) + 1;
	            }
	        }
	    }
	    else {
	        newData = city + ":1|" + popupCookieData;
	    }

	    var match = false;

	   
	//alert (currentCityCount);    
	    if (currentCityCount <= DisplayCount) {

	        var dataUrl = "/share/com/highlights/hl_template.aspx?ngcVer=1256167200000&category=" + city + "&group=" + currentGroup + "&HLGROUP=" + currentGroup + "&HLDATE=1/11/2007&siteid=2328&PAGEURL=any";
//alert (dataUrl);
	        $.get(dataUrl, function(data) {
	            var mainCityHL = "#cat_hl_" + city + "_items";
	            var todaySpan = $(data).find(mainCityHL + " span:eq(0) span:eq(1)");
	            for(var i = 0;i<PopupConditions.length;i++){
					var val = $.trim($(todaySpan).text()).toLowerCase().match(PopupConditions[i].valRE)[PopupConditions[i].idx];
					if (eval(PopupConditions[i].eval)&&$('#cat_hl_'+PopupConditions[i].hlid).length>0){
	                    if (typeof (PopupMethod) == "function") {
							match = true;
							$.cookie('wpopupcookie', newData, { expires: PopupConditions[i].expires });
							PopupMethod(PopupConditions[i]);
							return;
						}
					}
	            }

	         //   alert(newData);
	           // alert("match=" + match);


	            if (!match) {
	                var removeStr2 = city + ":1|";
//	                alert("removeStr2=" + removeStr2);
	                var x = newData.replace(removeStr2, "");
	                //newData = x;
//	                alert("replaced =" + x);
	                $.cookie('wpopupcookie', x, { expires: PopupConditions[PopupOnlyId].expires });
	            }

	        });


	    }

	    

	    
	    
    }


	function changeTab(divID)
	{

		var displayDiv = document.getElementById(divID);
		var currentLi;
		var selectedOption;
		var cookieStr = "";
		var currentDivId;
		var nCtr = 0;
		
		// start by setting the current selected Div in Cookie Value String
		cookieStr = divID ;
		
		//alert("changeTab divID=" + divID)

		// create the Cookie Value based on current options selected in each of the Divs
		
		if((divID=="TVGuideDiv") && (objTVData==""))
		{
			loadTVGuideData();
		}
		
		$('#tabsBase div').each(function(){
			$(this).removeClass("SelectedDiv");
			currentDivId =$(this).attr('id'); 	
			currentLi = document.getElementById($(this).attr('id').replace('Div',''));
			$(currentLi).removeClass("SelectedLi")
		})
	
		//alert(cookieStr)
		$(displayDiv).addClass("SelectedDiv")
		currentLi = document.getElementById(divID.replace('Div',''));
		$(currentLi).addClass("SelectedLi");

			
		DefaultModule = divID;
		setCookieData();
$('#mainloading').css("display","none");	

	}



	function setCookieData()
	{
		// setting cookie for current tab
		var cookieStr = DefaultModule + "|" + TVGuideModuleData + "|" + WeatherModuleData;
		
		//alert("Setting Cookir = " + cookieStr)
		$.cookie('wthcookie',cookieStr, { expires: 2 });
	}

	function limitLength(str,maxlen,dots,maxword){
		maxlen=maxlen||105;
		maxword=maxword||18;
		dots=dots||'...';
		var dlim=' ';
		if(str.length>maxlen){
			var str1 = str.substring(0,maxlen-maxword);
			var str2 = $.trim(str.substring(maxlen-maxword,maxlen));
			return str1+str2.substring(0,str2.lastIndexOf(dlim))+dots;
		}else{
			return str;
		}	
	}



	function displayTVGuideData(o)
	{
		//alert("displayTVGuideData");
		objTVData = o;
		
		var TVDiv = document.getElementById("TVGuideDiv");
        var now = new Date();
        var sPayTvLink = "http://entertainment.msn.co.nz/tv-guide?starttime=" + now + "&channelset=1";
		if(objTVData.RowList)
		{
			var arrPrograms = objTVData.RowList.Row;
			
			//alert("Programs Count : " + arrPrograms.length)

			var nCtr = 0;
			var sChannelList="";
			var arrChannelNames = new Array(0);
			var arrChannelIds = new Array(0);

			for(nCtr=0;nCtr<arrPrograms.length;nCtr++)
			{

				if(sChannelList.indexOf(arrPrograms[nCtr].Channel)<0)
				{
					sChannelList = arrPrograms[nCtr].Channel + "," + sChannelList;
					arrChannelNames.push(arrPrograms[nCtr].Channel);
					arrChannelIds.push(arrPrograms[nCtr].ChannelId);
				}

			}

			if(arrChannelNames.length>0)
			{
				$('#TVGuideDiv').attr("innerHtml","");
				$('#tvloading').css("display","none");
				
				$("<table id='tblChannelList' cellspacing='0' cellpadding='0' border='0'><tr><td><div id='ChannelDiv'></div></td></tr><tr><td><div id='ProgramsDiv'></div></td></tr></table>").appendTo("#TVGuideDiv")
				

				$("<ul id='ChannelUL'></ul>").appendTo("#ChannelDiv");

				var liChannel = "";

				for(nCtr=0;nCtr<arrChannelNames.length;nCtr++)
				{
					var sChName = arrChannelNames[nCtr]
					
					switch(sChName)
					{
						case 'PRIM':
							sChName = 'PRIME';
							break;
						case 'C4TV':
							sChName = 'C4';
							break;
					}
					
					liChannel = liChannel  + "<li class='ChannelLI' id='" + arrChannelIds[nCtr] + "_Tab' onclick='showChannelPrograms(this.id)'>" ;
					liChannel = liChannel  + "<span class='ChannelName'>" + sChName + "</span>";
					liChannel = liChannel  + "</li>";	
					liChannel = liChannel  + "<li class='ChannelLIDivider'></li>";
						
						
					// for current channel create a DIV.
					var nCounter = 0;
					$("<div class='ChannelPrograms' id='" + arrChannelIds[nCtr] + "_Div'></div>").appendTo("#ProgramsDiv")
					// create TABLE for current channel and add it to above DIV
					$("<table class='ProgramTable' cellpadding='0' cellspacing='0' border='0' id='" + arrChannelIds[nCtr] + "_tbl'></table>").appendTo($("#" + arrChannelIds[nCtr] + "_Div"))
					
					var sProgramClass = "PgrClassAlt";
					var sPrimeProgramTitle = "";
					var sProgramTitle = "";
					var nMinRows = 5;
					var nRowCount = 0;
					
					for(nCounter=0;	nCounter<arrPrograms.length;nCounter++)
					{
						
						if(arrPrograms[nCounter].ChannelId==arrChannelIds[nCtr])
						{
							nRowCount = nRowCount+ 1;
							if (sProgramClass=="PgrClassAlt")
							{
								sProgramClass = "PgrClass";
							}
							else
							{
								sProgramClass = "PgrClassAlt";
							}
							
							sProgramTitle = arrPrograms[nCounter].Title.replace("&apos;", "'");
							if(sProgramTitle.length>30)
							{
								sProgramTitle = sProgramTitle.substring(0,30) + "..."
							}
							
							if(arrPrograms[nCounter].PrimeFlag=="True")
							{
								//alert(arrPrograms[nCounter].PrimeFlag)
								// create rows for each programs of current channel and add then to above TABLE
								//$("<tr><td><span class='TimeSpanNowOn'>Now :</span><span class='TitleSpanNowOn'>" + arrPrograms[nCounter].Title.replace("&apos;", "'") + "</span></td></tr>").appendTo($("#" + arrChannelIds[nCtr] + "_tbl"))
								sPrimeProgramTitle = sProgramTitle;
							}
							else
							{
								// create rows for each programs of current channel and add then to above TABLE
								
								
								$("<tr class='" + sProgramClass + "'><td><span class='TimeSpan'>" + fncCreateTimeForProgram(arrPrograms[nCounter].StartTime) + "</span><span class='TitleSpan'>" + sProgramTitle + "</span></td></tr>").appendTo($("#" + arrChannelIds[nCtr] + "_tbl"))
								
							}
						}
						
					}
					
					if(nRowCount<5)
					{
						var nAdditionalRows = nMinRows - nRowCount
						//alert("Channel " + arrChannelIds[nCtr] + " found: nAdditionalRows" + nAdditionalRows);
						var nCounter2 = 0;
						if (sProgramClass=="PgrClassAlt")
						{
							sProgramClass = "PgrClass";
						}
						else
						{
							sProgramClass = "PgrClassAlt";
						}						
						for(nCounter2=0;nCounter2<nAdditionalRows;nCounter2++)
						{
							$("<tr class='" + sProgramClass + "'><td><span class='TimeSpanNoImage'>&nbsp;</span><span class='TitleSpan'>&nbsp;</span></td></tr>").appendTo($("#" + arrChannelIds[nCtr] + "_tbl"))
						}
						nAdditionalRows =0;
						nRowCount=0;
					}
					

					if(sPrimeProgramTitle.length>0)
					{

						$("<div class='DivNowOn'><span class='TimeSpanNowOn'>TONIGHT </span><span class='TitleSpanNowOn'><a href='http://entertainment.msn.co.nz/tv-guide'>" + sPrimeProgramTitle + "</a></span><span class='MoreLink'>Full <a href='" + sPayTvLink +"'>TV Guide</a></span></div>").appendTo($("#" + arrChannelIds[nCtr] + "_Div"))
					}
					else
					{
						$("<div class='DivNowOn'><span class='TimeSpanNowOnHidden'>&nbsp;</span><span class='TitleSpanNowOn'>&nbsp;</span><span class='MoreLink'>Full <a href='" + sPayTvLink +"'>TV Guide</a></span></div>").appendTo($("#" + arrChannelIds[nCtr] + "_Div"))
					}
					
					
					
				}
				
				$(liChannel).appendTo("#ChannelUL");
			}	

			
			if(DefaultChannel=="")
			{
				DefaultChannel = $('#ChannelDiv #ChannelUL Li:eq(0)').attr('id');
			}
			showChannelPrograms(DefaultChannel)
		}
	}


	function showChannelPrograms(ChannelTabId)
	{
		// hide all the ProgramDivs 
		$('#ProgramsDiv div').each(function(){
			$(this).removeClass("ChannelProgramsSelected");
			$(this).addClass("ChannelPrograms");
		})

		// change all Channel names to standard CSS
		$('#ChannelDiv ul li').each(function(){
			$(this).addClass("ChannelLI");
			$(this).removeClass("ChannelLISelected");
		})


		// show only the selected Channel's ProgramDiv
		var ChannelProgramsDiv = document.getElementById(ChannelTabId.replace('Tab','Div'));
		$(ChannelProgramsDiv).removeClass("ChannelPrograms");
		$(ChannelProgramsDiv).addClass("ChannelProgramsSelected");

		var ChannelLi = document.getElementById(ChannelTabId);
		$(ChannelLi).removeClass("ChannelLI");
		$(ChannelLi).addClass("ChannelLISelected");

		TVGuideModuleData = "TVGuideDiv:" + ChannelTabId;
		//alert("showChannelPrograms = " + TVGuideModuleData) ;
		setCookieData();
	}




	// load the data from the service
	function load( url ) {
		var script = document.createElement( 'script' );
		script.type = 'text/javascript';
		script.src = url+'&_='+Math.round(Math.random()*10000000);
		document.getElementsByTagName('head')[0].appendChild( script );
	}

	function loadTVGuideData()
	{
		//alert("loadTVGuideData");
		load('http://data.ninemsn.com.au/Services/Service.axd?ServiceFormat=JSON&ServiceName=NewZealand&ServiceAction=GetTVGuideTop5Schedules&ChannelIDs=6,7,1,31,24072&PrimeTimeOnly=0&UTCHrs=12&AttributeStyle=true&callback=displayTVGuideData')
							return false;

	}
	
	function loadPrimeTimeTVGuideData(strChannelId)
	{
		//alert("loadPrimeTimeTVGuideData");
		load('http://data.ninemsn.com.au/Services/Service.axd?ServiceFormat=JSON&ServiceName=NewZealand&ServiceAction=GetTVGuideTop5Schedules&ChannelIDs='+strChannelId+'&PrimeTimeOnly=1&UTCHrs=12&AttributeStyle=true&callback=displayPrimeTimeTVGuideData')
							return false;

	}
	
	
	function displayPrimeTimeTVGuideData(o)
	{
		//alert("displayPrimeTimeTVGuideData");
		var objCurrentTVData = o;
		
			
		if(objCurrentTVData.RowList)
		{
			var arrPrograms = objCurrentTVData.RowList.Row;
			//alert("Programs Count : " + arrPrograms.length)

			var nCtr = 0;
			var sChannelList="";
			var arrChannelNames = new Array(0);
			var arrChannelIds = new Array(0);
			
			for(nCtr=0;nCtr<arrPrograms.length;nCtr++)
			{

				var p = (arrPrograms[nCtr].Title).match(/[^\:]*/)[0];
				p=p.replace("&apos;","'");
				p=limitLength(p,15,'&hellip;',1);
				var s = "<span class='odd'>"+(parseInt(arrPrograms[nCtr].StartTime.substring(11,13))-12)+':'+arrPrograms[nCtr].StartTime.substring(14,16)+"&nbsp;<span class='onlytitle'><a href='http://entertainment.msn.co.nz/tv-guide/' onclick=\" OMNTRLinkTracking(this,'NZHomepagePrimeTVClick',null,null,'msnportalaumisc');\" class='linkItem orderedItem1'  title=\""+arrPrograms[nCtr].Title.replace("&apos;","'")+"\">" + p + "</a></span></span>"
				$(s).appendTo('#tv_outer');
			}
		}
	}

function fncCreateTimeForProgram(convert_time) {
	//Date Format: 2009-12-02T19:30:00.0000000+10
    var strMonth = 0;
    var strHour = 0;
    var arrDate = convert_time.split("T");
    var strDateIs = arrDate[0];
    var strDatePart = strDateIs.split("-");
    var strYear = strDatePart[0];
    var strMonth = strDatePart[1] - 1;
    var strDateIs = strDatePart[2];
    var strTimeIs = arrDate[1];
    var splitedTime = strTimeIs.split("+");
    var timePart = splitedTime[0].split(":");
    var strHour = timePart[0];
    var strMinute = timePart[1];
    var strSecond = timePart[2];
    //var FormattedTime = new Date(strYear, strMonth, strDateIs, strHour, strMinute, strSecond);
var FormattedTime = strHour + ":" + strMinute
    return FormattedTime;
};







