var General = {
	
	movieElm : "movie",
	movieHeader : "movie-header",
	movieTextHeader : "movie-text-header",
	movieText : "movie-maintext",
	movieFacts : "movie-facts",
	movieOpen : false,
	
	imageElm : "image",
	imageOpen : false,
	
	init : function () {
		if(document.getElementById){
			this.LoopDocument();
		}
	},

	LoopDocument : function (){
		var oLinks = document.body.getElementsByTagName("a");
		for(var i=0; i<oLinks.length; i++){
			if(oLinks[i]){
				elm = oLinks[i];
				if(/movie-close/i.test(elm.className)){
					elm.onclick = this.CloseMovie;
				}
				if(/view-image/i.test(elm.className)){
					elm.onclick = this.ViewImages;
				}
				if(/view-image-more/i.test(elm.className)){
					elm.onclick = this.OpenThumbnails;
				}
			}
		}
	},
	
	OpenInformation : function (e){
		var posx = 0;
		var posy = 0;
		if (!e) var e = window.event;
		if (e.pageX || e.pageY) 	{
			posx = e.pageX;
			posy = e.pageY;
		}
		else if (e.clientX || e.clientY) 	{
			posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
			posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
		}
		var informationElm = $("information");
		informationElm.style.top = parseInt(posy) + "px";
		informationElm.style.left = parseInt(posx + this.offsetWidth) + "px";
		General.removeClassName(informationElm,"display-none");
	},
	
	CloseInformation : function (e){
		var parentElm = this.parentNode;
		var informationElm = $("information");
		General.addClassName(informationElm,"display-none");
	},
	
	OpenTimeline : function (state){
		var strYear = this.getAttribute("title");
		if(strYear){
			var timeLine = $(General.timelineElm)
			var listItems = timeLine.getElementsByTagName("td");
			var targetElm = document.getElementById("timeline-content");
			for(var i=0; i<listItems.length; i++){
				if(listItems[i]){
					General.removeClassName(listItems[i], "selected");
				}
			}
			if(targetElm){
				General.addClassName(this.parentNode,"selected");
				General.addClassName(targetElm,"display-block");
			}
			
		}
		return false;
		General.removeClassName(targetElm,"display-block");
	},
	
	CloseTimeline : function (){
		var timeLine = $(General.timelineElm);
		var movieElm = $(General.movieElm);
		var listItems = timeLine.getElementsByTagName("td");
		for(var i=0; i<listItems.length; i++){
			if(listItems[i]){
				General.removeClassName(listItems[i], "selected");
			}
		}
		var timelineContent = $(General.timelineContentElm);
		General.removeClassName(timelineContent,"display-block");
		if(movieElm){
			General.removeClassName(movieElm,"display-block");
		}
		return false
	},
	
	ViewMovie : function (oElm,strMovieID,strMovieHeader,strMovieSubHeader,strMovieText,strMovieFacts,strPermaLink){
		var movieElm = $(General.movieElm);
		var movieHeader = $(General.movieHeader);
		var movieTextHeader = $(General.movieTextHeader);
		var movieText = $(General.movieText);
		var movieFacts = $(General.movieFacts);
		var movieShowMoviesLink = $("show-all-movies");
		var movieList = $("film-list");
		var moviePermaLink = $("permalink-movie");
		var movieShare = $("share-field");
		
		if(movieHeader&&strMovieHeader){
			movieHeader.childNodes[0].innerHTML = strMovieHeader;
		}
		if(movieTextHeader&&strMovieSubHeader){
			movieTextHeader.innerHTML = strMovieSubHeader;
		}
		if(movieText&&strMovieText){
			movieText.innerHTML = strMovieText;
		}
		if(movieFacts&&strMovieFacts){
			movieFacts.innerHTML = strMovieFacts;
		}
		if(strMovieID){
			var so = new SWFObject("/gui/flash/Mellan_film.swf", "film", "610", "500", "8", "#ffffff");
	        so.addVariable("filmUrl", strMovieID);
	        so.addVariable("filmSkin", "/gui/flash/skin.swf");
	        so.addParam("wmode", "opaque");
            so.write("movie-player");
		}
		if($("archive")){
			General.PositionMovie(oElm,"movie");
		}
		if(General.shareStoryOpen){
			General.removeClassName($(General.shareStory), "display-block");
		}
		if(General.imageOpen){
			General.removeClassName($(General.imageElm), "display-block");
		}
		if(movieShowMoviesLink){
		    General.removeClassName(movieShowMoviesLink, "display-none");
		}
		if(moviePermaLink&&strPermaLink){
		    moviePermaLink.value = strPermaLink;
		    u=strPermaLink;
		    t=strMovieSubHeader;
    	    if(movieShare){
		        General.addClassName(movieShare, "display-block");
	            General.removeClassName(movieShare, "display-none");
	        }
		}
		General.addClassName(movieElm, "display-block");
	    General.removeClassName(movieElm, "display-none");
	    if(movieList){
		    General.addClassName(movieList, "display-block");
		    General.removeClassName(movieList, "display-none");
		}
		General.movieOpen = true;
		if (Cufon) {
            Cufon.replace('h1');
        }
        //General.SetOverlay();
	},
	
	ViewMovieList : function (oElm,strMovieID,strMovieHeader,strMovieSubHeader,strMovieText,strMovieFacts){
		var movieHeader = $("movie-list-header");
		var movieText = $("movie-list-maintext");
		var movieFacts = $("movie-list-facts");
		
		if(movieHeader&&strMovieHeader){
			movieHeader.childNodes[0].innerHTML = strMovieHeader;
		}
		if(movieText&&strMovieText){
			movieText.innerHTML = strMovieText;
		}
		if(movieFacts&&strMovieFacts){
			movieFacts.innerHTML = strMovieFacts;
		}
		if(strMovieID){
			var so = new SWFObject("/gui/flash/Film.swf", "film", "382", "328", "8", "#ffffff");
	        so.addVariable("filmUrl", strMovieID);
	        so.addVariable("filmSkin", "/gui/flash/Skin_Movie.swf");
	        so.addParam("wmode", "opaque");
	    alert("test");
            so.write("movie-list-player");
		}
		if (Cufon) {
            Cufon.replace('h1');
        }
        //General.SetOverlay();
	},
	
	ViewSound : function (oElm,strMovieID,strMovieHeader,strMovieSubHeader,strMovieText,strMovieFacts,timeLine){
		var movieElm = $(General.movieElm);
		var movieHeader = $(General.movieHeader);
		var movieTextHeader = $(General.movieTextHeader);
		var movieText = $(General.movieText);
		var movieFacts = $(General.movieFacts);
		var movieShowMoviesLink = $("show-all-movies");
		var movieList = $("film-list");
		var movieShare = $("share-field");
		
		if(movieHeader&&strMovieHeader){
			movieHeader.childNodes[0].innerHTML = strMovieHeader;
		}
		if(movieTextHeader&&strMovieSubHeader){
			movieTextHeader.innerHTML = strMovieSubHeader;
		}
		if(movieText&&strMovieText){
			movieText.innerHTML = strMovieText;
		}
		if(movieFacts&&strMovieFacts){
			movieFacts.innerHTML = strMovieFacts;
		}
		if(strMovieID){
	        var so = new SWFObject("/gui/flash/Sound.swf", "film", "368", "48", "8", "#ffffff");
	        so.addVariable("urlSound", strMovieID);
	        so.addParam("wmode", "opaque");
	        so.write("movie-player");
		}
		if(!timeLine){
			General.PositionMovie(oElm,"movie");
		}
		if(General.shareStoryOpen){
			General.removeClassName($(General.shareStory), "display-block");
		}
		if(General.imageOpen){
			General.removeClassName($(General.imageElm), "display-block");
		}
		if(movieShowMoviesLink){
		    General.addClassName(movieShowMoviesLink, "display-none");
		}
		General.addClassName(movieElm, "display-block");
		General.removeClassName(movieElm, "display-none");
	    if(movieList){
		    General.addClassName(movieList, "display-none");
		    General.removeClassName(movieList, "display-block");
		}
	    if(movieShare){
		    General.addClassName(movieShare, "display-none");
	        General.removeClassName(movieShare, "display-block");
		}
		General.movieOpen = true;
		if (Cufon) {
            Cufon.replace('h1');
        }
        //General.SetOverlay();
	},
	
	CloseMovie : function (){
		var movieElm = $(General.movieElm);
		var movieHeader = $(General.movieHeader);
		var movieText = $(General.movieText);
		var movieFacts = $(General.movieFacts);
		/*movieHeader.childNodes[0].innerHTML = "";
		movieText.innerHTML = "";
		movieFacts.innerHTML = "";
		var so = new SWFObject("http://www.ericssonhistory.com/CfN/flash/Film.swf", "film", "382", "328", "8", "#ffffff");
        so.addVariable("filmUrl", "");
		so.write("movie-player");*/
		$("movie-player").innerHTML = "";
		General.removeClassName(movieElm, "display-block");
		General.addClassName(movieElm, "display-none");
		General.movieOpen = false;
		return false
	},
	
	ShareStory : function (){
		var oElm = $(General.shareStory);
		
		if(General.movieOpen){
			General.removeClassName($(General.movieElm), "display-block");
		}
		if(General.imageOpen){
			General.removeClassName($(General.imageElm), "display-block");
		}
		if(!/display-block/i.test(oElm.className)){
			General.addClassName(oElm, "display-block");
			General.shareStoryOpen = true;
		}else{
			General.removeClassName(oElm, "display-block");
			General.shareStoryOpen = false;
		}
		return false;
	},
	
	ViewImages : function (){
		var imageElm = $(General.imageElm);
		var arrayItem = this.className.replace(/.*array-(\d+).*/,"$1");
		Images.currentImage = arrayItem;
		if(General.shareStoryOpen){
			General.removeClassName($(General.shareStory), "display-block");
		}
		if(General.movieOpen){
			General.removeClassName($(General.movieElm), "display-block");
		}
		General.PositionImage(this,"image");
		General.removeClassName(imageElm, "display-none");
		General.addClassName(imageElm, "display-block");
		Ajax.GetImages("/gui/html/image.html");
        //General.SetOverlay();
		return false;
	},
	
	OpenThumbnails : function () {
		var imageElm = $(General.imageElm);
		General.PositionImage(this,"image");
		if(General.shareStoryOpen){
			General.removeClassName($(General.shareStory), "display-block");
		}
		if(General.movieOpen){
			General.removeClassName($(General.movieElm), "display-block");
		}
		General.addClassName(imageElm, "display-block");
		Ajax.GetThumbNails("/gui/html/thumbnails.html");
        //General.SetOverlay();
		return false;
	},
	
	Thumbnails : function (fromImage) {
		var imageElm = $(General.imageElm);
		if(General.shareStoryOpen){
			General.removeClassName($(General.shareStory), "display-block");
		}
		if(General.movieOpen){
			General.removeClassName($(General.movieElm), "display-block");
		}
		General.addClassName(imageElm, "display-block");
		General.removeClassName(imageElm, "display-none");
		Ajax.GetThumbNails("/gui/html/thumbnails.html");
        //General.SetOverlay();
		return false;
	},
	
	ShowImageFromThumbNail : function (arrItem){
		Images.currentImage = arrItem;
		var imgContainer = $(General.imageElm);
		
		if(!/display-block/i.test(imgContainer.className)){
			General.addClassName(imgContainer, "display-block");
		}	
		Ajax.GetImages("/gui/html/image.html");	
		return false;
	},
	
	CloseImage : function (){
		General.removeClassName($(General.imageElm), "display-block");
		General.addClassName($(General.imageElm), "display-none");
		//Images.currentPage = 0;
		General.imageOpen = false;
		
        //General.CloseOverlay();		
		return false;
	},
	
	PositionImage : function (obj,lyr){
		var coors = General.FindPosition(obj);
		var elm = $(lyr);
		if(General.clientBrowser != "Microsoft Internet Explorer"){
			elm.style.top = parseInt(coors[1] - 200) + 'px';
		}else{
			elm.style.top = parseInt(coors[1] - 300) + 'px';
		}
	},
	
	PositionImageSearch : function (obj,lyr){
		var coors = General.FindPosition(obj);
		var elm = $(lyr);
		if(General.clientBrowser != "Microsoft Internet Explorer"){
			elm.style.top = parseInt(coors[1] - 450) + 'px';
		}else{
			elm.style.top = parseInt(coors[1] - 150) + 'px';
		}
	},

	PositionMovie : function (obj,lyr){
		var coors = General.FindPosition(obj);
		var elm = document.getElementById(lyr);
		elm.style.top = parseInt(coors[1] - 250) + "px";
	},
	
	PositionMovieList : function (){
	    var objMovie = $("movie");
	    var objMovieList = $("movie-list");
	    if (objMovie&&objMovieList) {
		    var coors = General.FindPosition(objMovie);
		    objMovieList.style.top = parseInt(coors[1] - 50) + "px";
		}
	},
	
	addClassName : function (oElm, strClassName){
		var strCurrentClass = oElm.className;
		if(!new RegExp(strClassName, "i").test(strCurrentClass)){
			oElm.className = strCurrentClass + ((strCurrentClass.length > 0)? " " : "") + strClassName;
		}
	},
	
	FindPosition : function (obj){
		var curleft = curtop = 0;
		if (obj.offsetParent) {
			curleft = obj.offsetLeft
			curtop = obj.offsetTop
			while (obj = obj.offsetParent) {
				curleft += obj.offsetLeft
				curtop += obj.offsetTop
			}
		}
		return [curleft,curtop];
	},
	
	removeClassName : function (oElm, strClassName){
		var oClassToRemove = new RegExp((strClassName + "\s?"), "i");
		oElm.className = oElm.className.replace(oClassToRemove, "").replace(/^\s?|\s?$/g, "");
	},	
		
	showObject : function (oElm){
		var elm = $(oElm);
	    /*General.removeClassName(elm,"disblay-none");
	    General.addClassName(elm,"disblay-block");*/
	    elm.style.display = "block";
	},
	
	hideObject : function (oElm,oElmContent,path,width,height){
		var elm = $(oElm);
	    /*General.addClassName(elm,"disblay-none");
	    General.removeClassName(elm,"disblay-block");*/
	    elm.style.display = "none";

        if (width&&height)
            var soFlash = new SWFObject(path, "test", width, height, "8", "");
        else
            var soFlash = new SWFObject(path, "test", "664", "426", "8", "");
        soFlash.write(oElmContent);
	},
	

    SetOverlay : function(){
		var elm = $("overlay");
		elm.innerHTML = "&nbsp;";
		var arr = General.getPageSizeWithScroll();
		//var height = arr[1] + "px";
		var height = arr[1] + "px";
		var background;

		background = document.createElement("div");
		background.innerHTML = "&nbsp;";
		background.className = "background";
		background.style.height = height;
		document.getElementById("overlay").appendChild(background);
		
		General.removeClassName(elm,"display-none");
    },
    
    CloseOverlay : function(){
		var elm = $("overlay");
		General.removeClassName(elm, "display-block");
		General.addClassName(elm, "display-none");
    },

getPageSizeWithScroll : function(){ 
if (window.innerHeight && window.scrollMaxY) {// Firefox 
yWithScroll = window.innerHeight + window.scrollMaxY; 
xWithScroll = window.innerWidth + window.scrollMaxX; 
} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac 
yWithScroll = document.body.scrollHeight; 
xWithScroll = document.body.scrollWidth; 
} else { // works in Explorer 6 Strict, Mozilla (not FF) and Safari 
yWithScroll = document.body.offsetHeight; 
xWithScroll = document.body.offsetWidth; 
} 
arrayPageSizeWithScroll = new Array(xWithScroll,yWithScroll); 
//alert( 'The height is ' + yWithScroll + ' and the width is ' + xWithScroll ); 
return arrayPageSizeWithScroll; 
} ,	

	end : function (oEvent){
		General = null;
		delete General;
	}		
		
}
	
function addEvent(oObj, evType, fn, useCapture){
	if (oObj.addEventListener){
		oObj.addEventListener(evType, fn, useCapture);
		return true;
	} else if (oObj.attachEvent){
		var r = oObj.attachEvent("on"+evType, fn);
		return r;
	} else {
		alert("Handler could not be attached");
	}
}

addEvent(window, "load",function(){General.init();})
addEvent(window, "unload", function(){General.end();}, false);

function $(strId){
	return document.getElementById(strId);
}