// season functions

//create "season" namespace
if(LJSeason==undefined) var LJSeason={
	
	arrWinterImageSrcList:new Array(),
	strNextWinterImageSrc:"",
	intWinterImageInterval:6000, //time in milliseconds
	objWinterImageInterval:null,
	
	initializeStyles:function()
	{
		//clear style additions
		this.clearWinter();
		
		//check current season stylesheet
		if(document.getElementById("seasonStylesheet"))
		{
			if(document.getElementById("seasonStylesheet").href.indexOf(this.getStylesheetFromId(4))>=0)
			{
				this.initializeWinter();
			}
		}
	},
	
	//initialize winter styles
	initializeWinter:function()
	{
		//find first element of the "container" class
		var eleContainer=null;
		eleDivs=document.getElementsByTagName("div");
		for(var i=0;i<eleDivs.length;i++)
		{
			if(eleDivs[i].className=="container")
			{
				eleContainer=eleDivs[i];
				break;
			}
		}
		
		//insert rounded bottom images
		var eleContainerBottom=document.createElement("div");
		eleContainerBottom.id="containerBottom";
		eleContainer.insertBefore(eleContainerBottom,eleContainer.firstChild);
		
		var eleContentBottom=document.createElement("div");
		eleContentBottom.id="contentBottom";
		document.getElementById("content").appendChild(eleContentBottom);
		
		//insert "winterImages"
		var eleWinterImages=document.createElement("div");
		eleWinterImages.id="winterImages";
		eleContainer.insertBefore(eleWinterImages,eleContainer.firstChild);
		
		var eleImageA=document.createElement("img");
		eleImageA.alt="";
		eleImageA.title="";
		eleImageA.height="215";
		eleImageA.width="510";
		eleImageA.style.position="absolute";
		var eleImageB=eleImageA.cloneNode(false);
		
		eleImageA.id="winterImageA";
		eleImageA.src="/assets/images/winter/main/14.jpg";
		eleImageA.style.zIndex="2";
		
		eleImageB.id="winterImageB";
		eleImageB.src="/assets/images/winter/main/14.jpg";
		eleImageB.style.zIndex="1";
		LJAnimation.setOpacity(eleImageB,0)
		
		//add images to document
		eleWinterImages.appendChild(eleImageA);
		eleWinterImages.appendChild(eleImageB);
		
		//get winter image list
		objWinterImageRequest=LJ.createRequest();
		objWinterImageRequest.open("GET","/assets/php/season.receiver.php?action=getWinterImageSrcList");
		objWinterImageRequest.onreadystatechange=this.initializeWinterImage;
		objWinterImageRequest.send(null);
	},
	
	//initilize the winter image to start changing them
	initializeWinterImage:function()
	{
		if(objWinterImageRequest.readyState==4)
		{
			if(objWinterImageRequest.status==200)
			{
				//get image source list
				for(var i=0;i<objWinterImageRequest.responseXML.documentElement.getElementsByTagName("imageSrc").length;i++)
				{
					LJSeason.arrWinterImageSrcList.push(objWinterImageRequest.responseXML.documentElement.getElementsByTagName("imageSrc")[i].childNodes[0].nodeValue);
				}
				
				//select next image (randomly)
				LJSeason.strNextWinterImageSrc=LJSeason.arrWinterImageSrcList[Math.floor(Math.random()*LJSeason.arrWinterImageSrcList.length)];
				//preload next image
				LJAnimation.imagePreload(LJSeason.strNextWinterImageSrc);
				//start image rotation
				LJSeason.objWinterImageInterval=setInterval("LJSeason.winterImageNext()",LJSeason.intWinterImageInterval);
			}
		}
	},
	
	//display next winter image
	winterImageNext:function()
	{
		//define new image
		var img=document.createElement("img");
		var blnTransitionComplete=true;
		var strSrc="";
		
		//define function to execute when image is loaded
		img.onload=function(evnt)
		{
			var imgHolderFore=null;
			var imgHolderBack=null;
			
			//check if elements exist on the page
			if(document.getElementById("winterImageA") && document.getElementById("winterImageB"))
			{
				if(document.getElementById("winterImageA").style.zIndex==2)
				{
					imgHolderFore=document.getElementById("winterImageA");
					imgHolderBack=document.getElementById("winterImageB");
				}
				else
				{
					imgHolderFore=document.getElementById("winterImageB");
					imgHolderBack=document.getElementById("winterImageA");
				}
				
				//hide back image
				LJAnimation.setOpacity(imgHolderBack,0);
				
				//transfer preloaded image properties to back image
				imgHolderBack.src=this.src;
				imgHolderBack.width=this.width;
				imgHolderBack.height=this.height;
				if(LJAnimation.isSafari()) //remove size attributes in Safari, which sets them to 0
				{
					imgHolderBack.removeAttribute("width");
					imgHolderBack.removeAttribute("height");
				}
				
				//switch z-index levels
				imgHolderFore.style.zIndex="1";
				imgHolderBack.style.zIndex="2";
				
				//fade in back image
				LJAnimation.fadeIn(imgHolderBack);
				
				//select next image (randomly)
				LJSeason.strNextWinterImageSrc=LJSeason.arrWinterImageSrcList[Math.floor(Math.random()*LJSeason.arrWinterImageSrcList.length)];
				//preload next image
				LJAnimation.imagePreload(LJSeason.strNextWinterImageSrc);
			}
		}
		
		//load and display next image
		img.src=this.strNextWinterImageSrc;
	},
	
	//clear winter style additions
	clearWinter:function()
	{
		clearInterval(LJSeason.objWinterImageInterval);
		
		if(document.getElementById("containerBottom"))
		{
			//document.getElementById("containerBottom").removeNode(true);  //removeNode() doesn't work in Firefox
			document.getElementById("containerBottom").parentNode.removeChild(document.getElementById("containerBottom"));
		}
		if(document.getElementById("contentBottom"))
		{
			document.getElementById("contentBottom").parentNode.removeChild(document.getElementById("contentBottom"));
		}
		if(document.getElementById("winterImages"))
		{
			document.getElementById("winterImages").parentNode.removeChild(document.getElementById("winterImages"));
		}
	},

	initializeSeasonSelect:function()
	{
		//declare variables
		var arrTagName=new Array("div","span");
		var strClassName="hijaxed";
		
		//loop through tag names
		for(j=0;j<arrTagName.length;j++)
		{
			//store array of given tags
			arrElements=document.getElementsByTagName(arrTagName[j]);
			
			//loop through array
			for(i=0;i<arrElements.length;i++)
			{
				//check if element class name matches
				if(arrElements[i].className==strClassName)
				{
					//hide element
					arrElements[i].style.display="none";
				}
			}
		}
	},

	changeIndex:function(intId)
	{
		//change season
		objRequest=LJ.createRequest();
		objRequest.open("GET","/assets/php/season.receiver.php?action=setSeasonIndex&seasonIndex="+intId,true);
		objRequest.onreadystatechange=this.changeAppearance;
		objRequest.send(null);
	
		return false; //cancel link
	},
	
	changeAppearance:function()
	{
		if(objRequest.readyState==4)
		{
			if(objRequest.status==200)
			{
				//change stylesheet of current page
				document.getElementById("seasonStylesheet").href=objRequest.responseXML.documentElement.getElementsByTagName("stylesheet")[0].childNodes[0].nodeValue;
				
				//remove current favicon link
				this.removeFavicon;
				//create new favicon link
				eleLink=document.createElement("link");
				eleLink.id="seasonFavicon";
				eleLink.type="image/x-icon";
				eleLink.rel="shortcut icon";
				eleLink.href=objRequest.responseXML.documentElement.getElementsByTagName("favicon")[0].childNodes[0].nodeValue;
				document.getElementsByTagName("head")[0].appendChild(eleLink);
				
				LJSeason.initializeStyles();
			}
		}
	},
	
	removeFavicon:function()
	{
		//remove element from "head" tag
		document.getElementsByTagName("head")[0].removeChild(document.getElementById("seasonFavicon"));
		return;

		//find all "link" elements in "head" tag
		var eleLinks=document.getElementsByTagName("head")[0].getElementsByTagName("link");
		
		for(var i=0;i<eleLinks.length;i++)
		{
			if(eleLinks[i].rel=="shortcut icon" && eleLinks[i].type=="image/x-icon") //check for shortcut icon link
			{
				//remove element
				document.getElementsByTagName("head")[0].removeChild(eleLinks[i]);
				
				break;
			}
		}
	},
	
	getStylesheetFromId:function(intId)
	{
		var strReturn="";
		
		switch(intId)
		{
			case(1):
				//strReturn="/assets/css/seasons/spring.css";
				strReturn="/assets/css/seasons/summer.css";
				break;
			case(2):
				strReturn="/assets/css/seasons/summer.css";
				break;
			case(3):
				//strReturn="/assets/css/seasons/fall.css";
				strReturn="/assets/css/seasons/winter.css";
				break;
			case(4):
				strReturn="/assets/css/seasons/winter.css";
				break;
		}
		
		return strReturn;
	},
	
	getFaviconFromId:function(intId)
	{
		var strReturn="";
		
		switch(intId)
		{
			case(1):
				//strReturn="/assets/images/spring/favicon.ico";
				strReturn="/assets/images/summer/favicon.ico";
				break;
			case(2):
				strReturn="/assets/images/summer/favicon.ico";
				break;
			case(3):
				//strReturn="/assets/images/fall/favicon.ico";
				strReturn="/assets/images/winter/favicon.ico";
				break;
			case(4):
				strReturn="/assets/images/winter/favicon.ico";
				break;
		}
		
		return strReturn;
	}
	
}