var sunriseStr="";
var sunsetStr="";
var launchDate = new Date("December 14, 2007 00:00:00");
var launchTime = launchDate.getTime();
var serverUTCTimeStr=null;
var zipTimeZone=null;
var numLaunchDays = 999;
var zipCode=null;
var countdownInt = null;
var initSunState = 1; //sun
var clientTimeZone = null;

function getWeatherRSS()
{
	clearInterval(countdownInt);
	var zip = '';
	if(Cookie.get("zipCode")!=false){
		zip = Cookie.get("zipCode");
	}
	if($("zip").value!=''){
		zip = $("zip").value;
	}

	var url = 'sunset.php?zip='+zip;
	var request = new Json.Remote(url, {
		onComplete: function(jsonObj) {
			initProcess(jsonObj.weather);
		}
	}).send();
}

function initProcess(responseDoc){
	sunriseStr="";
	sunsetStr="";
	serverUTCTimeStr=null;
	zipTimeZone=null;
	zipCode=null;
	countdownInt = null;
	//initSunState=1;

	var cleanupTags = new Array("today","todayTime","remainingDays","remainNumDays","countdown","sunrise","sunset","twilightStart","twilightEnd","longitude","latitude","location");
	for(var i=0;i<cleanupTags.length;i++){
		$(cleanupTags[i]).innerHTML="--";
	}
	hideZipInputBox();
	if(responseDoc!=''){

		sunriseStr = responseDoc.CTS;
		sunsetStr = responseDoc.CTE;
		serverUTCTimeStr = responseDoc.serverUTCTime;
		$("location").innerHTML = responseDoc.location;
		$("sunrise").innerHTML=responseDoc.formattedRise;
		$("sunset").innerHTML=responseDoc.formattedSet;
		$("twilightStart").innerHTML=responseDoc.formattedCivilStart;
		$("twilightEnd").innerHTML=responseDoc.formattedCivilEnd;
		$("longitude").innerHTML=responseDoc.longitude;
		$("latitude").innerHTML=responseDoc.latitude;
		$("zipText").innerHTML=responseDoc.zip;

		zipCode = responseDoc.zip;
		zipTimeZone = responseDoc.timezone;

		var serverUTCDate = new Date(serverUTCTimeStr);
		var serverUTCTime = serverUTCDate.getTime();
		clientTimeZone = Math.round(((new Date().getTime()-serverUTCTime)/(60*60))/1000);
		
		countdownInt = setInterval(countdown,1000)
	}
}

function countdown(){
	if(serverUTCTimeStr!=null&&zipTimeZone!=null){
		var clientDate = new Date();
		var clientTime = clientDate.getTime();

		var zipTime = clientTime-clientTimeZone*60*60*1000+zipTimeZone*60*60*1000;

		var zipDate = new Date(zipTime);

		var zipDateText = (zipDate.getMonth()+1)+"/"+zipDate.getDate()+"/"+zipDate.getFullYear();
		var ampm = "am";
		var zipTimeHour = zipDate.getHours();
		if(zipTimeHour>=12){
			ampm="pm";
		}
		if(zipTimeHour>12){
			zipTimeHour=zipTimeHour-12;
		}
		var zipTimeText = zipTimeHour+":"+PadDigits(zipDate.getMinutes(),2)+":"+PadDigits(zipDate.getSeconds(),2)+" "+ampm;


		var sunriseDate = new Date(sunriseStr);
		var sunriseTime = sunriseDate.getTime();

		var sunsetDate = new Date(sunsetStr);
		var sunsetTime = sunsetDate.getTime();

		//check if it is the new date. if yes, get the new sunrise/sunset
		if(zipDate.getDate()-sunriseDate.getDate()>0){
			clearInterval(countdownInt);
			getWeatherRSS();
			return false;
		}

		//calculate remaining time
		var remainDays = Math.floor((launchTime - zipTime)/(60*60*24*1000));
		var remainHours = Math.floor(((launchTime - zipTime) / (60*60)) / 1000)-remainDays*24;
		var remainMinutes = Math.floor(((launchTime - zipTime) / (60)) / 1000)-remainHours*60-remainDays*24*60;
		var remainSeconds = Math.floor(((launchTime - zipTime) ) / 1000)-remainHours*60*60-remainMinutes*60-remainDays*24*60*60;

		var remainingText = remainDays+" + "+PadDigits(remainHours,2)+":"+PadDigits(remainMinutes,2)+":"+PadDigits(remainSeconds,2);

		//calculate remain number of days to 999
		var remainNumDays = numLaunchDays-remainDays-1;
		//

		var hideCountdown=false;
		var targetName="";
		var sunState = 1;
		if(zipTime<sunriseTime){
			targetTime = sunriseTime;
			targetName = "darkness.png";
			sunState = 0;
		}
		else if(zipTime>=sunriseTime&&zipTime<sunsetTime){
			targetTime = sunsetTime;
			targetName = "daylight.png";
			sunState = 1;
		}
		else{
			targetTime = sunriseTime+24*60*60*1000;
			targetName = "darkness.png";
			sunState = 0;
		}
		
		//change sun image
		
		if(Math.abs(initSunState-sunState)==1){
			initSunState = sunState;
			if(sunState==1){
				$('sunImage').src="images/sun.png?rand="+Math.random();
			}
			else if(sunState==0){
				$('sunImage').src="images/moon.png?rand="+Math.random();
			}
			$("countdownText2").src = "images/"+targetName;
		}
		

		if(hideCountdown){
			//$("countdown").style.display="none";
			$("countdown").innerHTML = "--";
		}
		else{
			var hoursLeft = Math.floor(((targetTime - zipTime) / (60*60)) / 1000);
			var minutesLeft = Math.floor(((targetTime - zipTime) / (60)) / 1000)-hoursLeft*60;
			var secondsLeft = Math.floor(((targetTime - zipTime) ) / 1000)-hoursLeft*60*60-minutesLeft*60;
			var hoursText ="";
			if(hoursLeft>0){
				hoursText = hoursLeft+":";
			}
			//$("countdown").style.display="inline";
			$("countdown").innerHTML = PadDigits(hoursLeft,2)+":"+PadDigits(minutesLeft,2)+":"+PadDigits(secondsLeft,2);
		}
		$("today").innerHTML = zipDateText;
		$("todayTime").innerHTML = zipTimeText;
		$("remainingDays").innerHTML = remainingText;
		$("remainNumDays").innerHTML = remainNumDays;
		//$("remainNumDays").innerHTML = initSunState;
	}
}

function PadDigits(n, totalDigits)
{
	n = n.toString();
	var pd = '';
	if (totalDigits > n.length)
	{
		for (i=0; i < (totalDigits-n.length); i++)
		{
			pd += '0';
		}
	}
	return pd + n.toString();
}

function showZipInputBox(){
	$("zipText").style.display="none";
	$("zipInput").style.display="inline";

	//$("zip").value=$("zipText").innerHTML;
	$("zip").value = "";
	//$("zip").focus();
	//$("zip").select();
}

function hideZipInputBox(){
	$("zipText").style.display="inline";
	$("zipInput").style.display="none";
	if($("zip").value!=""){
		$("zipText").innerHTML = $("zip").value;
		Cookie.set("zipCode",$("zip").value);
	}
}

//NEWS RSS
//uses xmlhttpreq to get the raw rss xml
function getRSS()
{
	var url = 'ajaxproxy.php?url=http://rss.warnerbros.com/iamlegend/index.xml';
	var myXhr = new XHR({method: 'get',
		onSuccess:processRSS});
	myXhr.send(url, null);
}

//processes the received rss xml
function processRSS (req,rssxml)
{
	//var rssJsonObj=xml2json.parser(req,'b,i,em');
	RSS = new RSS2Channel(rssxml);
	//showRSS(rssJsonObj.rss.channel.item);
	showRSS(RSS);
}

//object containing the parsed RSS 2.0 channel
function RSS2Channel(rssxml)
{
	//required
	this.title;
	this.link;
	this.description;

	//array of RSS2Item objects
	this.items = new Array();

	//optional vars
	this.language;
	this.copyright;
	this.managingEditor;
	this.webMaster;
	this.pubDate;
	this.lastBuildDate;
	this.generator;
	this.docs;
	this.ttl;
	this.rating;

	//optional objects
	this.category;
	this.image;

	var chanElement = rssxml.getElementsByTagName("channel")[0];
	var itemElements = rssxml.getElementsByTagName("item");

	for (var i=0; i<itemElements.length; i++)
	{
		Item = new RSS2Item(itemElements[i]);
		this.items.push(Item);
		//chanElement.removeChild(itemElements[i]);
	}

	var properties = new Array("title", "link");
	var tmpElement = null;
	for (var i=0; i<properties.length; i++)
	{
		tmpElement = chanElement.getElementsByTagName(properties[i])[0];
		if (tmpElement!= null)
			eval("this."+properties[i]+"=tmpElement.childNodes[0].nodeValue");
	}

	//this.category = new RSS2Category(chanElement.getElementsByTagName("category")[0]);
	//this.image = new RSS2Image(chanElement.getElementsByTagName("image")[0]);
}

//object containing the RSS 2.0 item
function RSS2Item(itemxml)
{
	//required
	this.title;
	this.link;
	this.description;

	//optional vars
	this.author;
	this.comments;
	this.pubDate;

	//optional objects
	this.category;
	this.enclosure;
	this.guid;
	this.source;

	var properties = new Array("title", "link", "description");
	var tmpElement = null;
	for (var i=0; i<properties.length; i++)
	{
		tmpElement = itemxml.getElementsByTagName(properties[i])[0];
		if (tmpElement != null)
			eval("this."+properties[i]+"=tmpElement.childNodes[0].nodeValue");
	}

	//this.category = new RSS2Category(itemxml.getElementsByTagName("category")[0]);
	//this.enclosure = new RSS2Enclosure(itemxml.getElementsByTagName("enclosure")[0]);
	//this.guid = new RSS2Guid(itemxml.getElementsByTagName("guid")[0]);
	//this.source = new RSS2Source(itemxml.getElementsByTagName("source")[0]);
}

//shows the RSS content in the browser
function showRSS(itemsObj)
{
	//default values for html tags used
	var startItemTag = "<div id='item' class='newsitem'>";
	var startTitle = "<div id='item_title'>";
	var startDesc = "<div id='item_desc' style='color: #cccccc;'>";
	var startMore = "<div id='item_more'>";
	var endTag = "</div>";
	var desc = "";
	var formattedDesc="";
	var title="";
	var formattedTitle="";
	
	//populate the items
	$("chan_items").innerHTML = "";
	
	for (var i=0; i<itemsObj.items.length; i++)
	{
		desc = itemsObj.items[i].description;
		desc = desc.replace(/<(?:.|\s)*?>/g,"");
		//desc = desc.replace(/<a.*>/ig,"");
		//desc = desc.replace(/<\/a>/ig,"");
		formattedDesc = desc.substring(0,75);
		formattedDesc = formattedDesc.replace(/\s+\w+$/, '');
		if(desc.length>75){
			formattedDesc+="...";
			
		}
		
		title = itemsObj.items[i].title;
		title = title.replace(/<(?:.|\s)*?>/g,"");
		formattedTitle = title.substring(0,40);
		formattedTitle = formattedTitle.replace(/\s+\w+$/, '');
		if(title.length>40){
			formattedTitle+="...";
		}
		
		item_html = startItemTag;
		item_html += '<div class="newsitemtxt">';
		item_html += (itemsObj.items[i].title == null) ? "" : startTitle + "<a target='_blank' href='"+itemsObj.items[i].link+"'>"+formattedTitle+"</a>" + endTag;
		item_html += (itemsObj.items[i].description == null) ? "" : startDesc +formattedDesc+endTag;
		item_html += endTag;
		item_html += endTag;
		document.getElementById("chan_items").innerHTML += item_html;
	}
	
	/*
	for (var i=0; i<itemsObj.length; i++)
	{
		desc = itemsObj[i].description;
		formattedDesc = desc.substring(0,66);
		formattedDesc = formattedDesc.replace(/\s+\w+$/, '');
		if(desc.length>66){
			formattedDesc+="...";
			
		}
		
		title = itemsObj[i].title;
		formattedTitle = title.substring(0,37);
		formattedTitle = formattedTitle.replace(/\s+\w+$/, '');
		if(title.length>37){
			formattedTitle+="...";
		}
		*/
		/*
		descSenIndex = desc.indexOf(". ");
		if(descSenIndex!=-1){
			desc = desc.substring(0,descSenIndex+1);
		}
		*/
		/*
		item_html = startItemTag;
		item_html += '<div class="newsitemtxt">';
		item_html += (itemsObj[i].title == null) ? "" : startTitle + "<a target='_blank' href='"+itemsObj[i].link+"'>"+formattedTitle+"</a>" + endTag;
		item_html += (itemsObj[i].description == null) ? "" : startDesc +formattedDesc+endTag;
		item_html += endTag;
		item_html += endTag;
		$("chan_items").innerHTML += item_html;
	}
*/
	return true;
}

//get url parameter
function gup( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

function jumpToPage(){
	var page = gup('page');
	if(page=="widget"){
		Zap('front','widget');
	}
}