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 ($("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;
        flowplayer("movie-player", "/gui/flowplayer/flowplayer-3.2.7.swf");
        if (strMovieID) {
            flowplayer("movie-player", "/gui/flowplayer/flowplayer-3.2.7.swf", {
                clip: {
                    url: strMovieID
                }
            });
        }
        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 (!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;
        flowplayer("movie-player", "/gui/flowplayer/flowplayer-3.2.7.swf");
        if (strMovieID) {
            flowplayer("movie-player", "/gui/flowplayer/flowplayer-3.2.7.swf", {

                plugins: {
                    audio: {
                        url: '/gui/flowplayer/flowplayer.audio-3.2.2.swf'
                    },
                    controls: {
                        fullscreen: false,
                        height: 30,
                        autoHide: false
                    }
                },
                clip: {
                    url: strMovieID
                }

            });

        }
        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);
}
