﻿if (!window.FireStarter)
	window.FireStarter = {};

FireStarter.Scene = function() 
{
}

FireStarter.Scene.prototype =
{
	hLoad: function(control, userContext, rootElement) 
	{
		this.control = control;
		this.status = this.control.content.findName("status");	
		this.timerID = null;
		
		this.playList = document.getElementById("playList");		
		this.downloads = document.getElementById("downloads");		
		window.onresize = Silverlight.createDelegate(this, this.resize);
		this.resize();
		this.playList.style.visibility = "visible";
		
		this.mediaElement = this.control.content.findName("VideoWindow");		
		this.mediaElement.addEventListener("MediaOpened", Silverlight.createDelegate(this, this.hMediaOpened));
		this.mediaElement.addEventListener("CurrentStateChanged", Silverlight.createDelegate(this, this.hMediaStateChanged));
		this.mediaElement.addEventListener("BufferingProgressChanged", Silverlight.createDelegate(this, this.hBufferingProgressChanged));		
		this.mediaElement.addEventListener("MediaEnded", Silverlight.createDelegate(this, this.hMediaCompleted));		
		this.mediaElement.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hMediaEnter));
		this.mediaElement.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hMediaLeave));
		this.mediaElement.addEventListener("MouseMove", Silverlight.createDelegate(this, this.hMediaMove));
		this.mediaSelectedIndex = -1;
		this.mediaPlayingIndex = -1;
		this.mediaPlaying = false;
		this.mediaMouseOver = false;
		
		this.controlSlideIn = this.control.content.findName("controlSlideIn");
		this.controlSlideOut = this.control.content.findName("controlSlideOut");
		this.controlPlay = this.control.content.findName("controlPlay");
		this.cPlayHlight = this.control.content.findName("controlPlayHlight");
		this.cPlayIcon = this.control.content.findName("playIcon");
		this.cPauseIcon = this.control.content.findName("pauseIcon");
		this.cProgress = this.control.content.findName("playedProgress");
		this.cTime = this.control.content.findName("playedTime");
		this.cTotalTime = this.control.content.findName("totalTime");
		this.cPlayHead = this.control.content.findName("playHead");
		this.cPlayHead.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hCPlayHeadEnter));
		this.cPlayHead.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hCPlayHeadLeave));
		this.cPlayHead.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hCPlayHeadDown));
		this.cPlayHead.addEventListener("MouseLeftButtonUp", Silverlight.createDelegate(this, this.hCPlayHeadUp));
		this.cPlayHead.addEventListener("MouseMove", Silverlight.createDelegate(this, this.hCPlayHeadMove));
		this.playHeadDown = false;
		this.cPlayHeadTranslate = this.control.content.findName("playHeadTranslate");
		this.cPlayHeadHlight = this.control.content.findName("playHeadHlight");
		this.controlPlay.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hCPlayUp));
		this.controlPlay.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hCPlayEnter));
		this.controlPlay.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hCPlayLeave));
		this.controlPanel = this.control.content.findName("controlPanel");		
		this.controlPanel.addEventListener("MouseMove", Silverlight.createDelegate(this, this.hCPanelMove));
		this.controlPanel.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hCPanelLeave));
		this.controlPanelShown = false;
		this.controlPanelMouseOver = false;
				
		this.infoPanel = this.control.content.findName("infoPanel");
		this.infoTitle = this.control.content.findName("infoTitle");
		this.infoPresenter = this.control.content.findName("infoPresenter");
		this.infoDescription = this.control.content.findName("infoDescription");
		this.infoFadeIn = this.control.content.findName("infoFadeIn");
		this.infoFadeOut = this.control.content.findName("infoFadeOut");
		this.infoPanelShown = false;
		
		this.playPanel = this.control.content.findName("playPanel");
		this.playBgd = this.control.content.findName("playBgd");
		this.playHlight = this.control.content.findName("playHlight");
		this.playText = this.control.content.findName("playText");
		this.playPanel.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPlayUp));
		this.playPanel.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPlayEnter));
		this.playPanel.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPlayLeave));
		this.hidePanel = this.control.content.findName("hidePanel");
		this.hideHlight = this.control.content.findName("hideHlight");
		this.hidePanel.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hHideUp));
		this.hidePanel.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hHideEnter));
		this.hidePanel.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hHideLeave));
		
		this.loadingFadeIn = this.control.content.findName("loadingFadeIn");
		this.loadingFadeIn.addEventListener("Completed", Silverlight.createDelegate(this, this.hLoadingIn));
		this.loadingFadeOut = this.control.content.findName("loadingFadeOut");
		this.loadingFadeOut.addEventListener("Completed", Silverlight.createDelegate(this, this.hLoadingOut));
		this.f1Fade = this.control.content.findName("f1Fade");		
		this.f2Fade = this.control.content.findName("f2Fade");		
		this.f3Fade = this.control.content.findName("f3Fade");		
		
		this.rollAnimation = this.control.content.findName("rollAnimation");
		this.heightTransform = this.control.content.findName("heightTransform");		
		this.roll1 = this.control.content.findName("roll1");
		this.roll2 = this.control.content.findName("roll2");
		this.roll3 = this.control.content.findName("roll3");
		this.roll4 = this.control.content.findName("roll4");
		this.lastRollY = 20;	
		this.lastRollHeight = 48;
		this.selection = this.control.content.findName("selection");
		this.imageShown = true;
		
		
		this.p1 = this.control.content.findName("p1");
		this.p1.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p1.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p1.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
		this.p2 = this.control.content.findName("p2");
		this.p2.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p2.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p2.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
		this.p3 = this.control.content.findName("p3");
		this.p3.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p3.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p3.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
		this.p4 = this.control.content.findName("p4");
		this.p4.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p4.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p4.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
		this.p5 = this.control.content.findName("p5");
		this.p5.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p5.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p5.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
		this.p6 = this.control.content.findName("p6");
		this.p6.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p6.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p6.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
		this.p7 = this.control.content.findName("p7");
		this.p7.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p7.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p7.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
		this.p8 = this.control.content.findName("p8");
		this.p8.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p8.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p8.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
		this.p9 = this.control.content.findName("p9");
		this.p9.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p9.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p9.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
		this.p10 = this.control.content.findName("p10");
		this.p10.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p10.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p10.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
		this.p11 = this.control.content.findName("p11");
		this.p11.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p11.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p11.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
		this.p12 = this.control.content.findName("p12");
		this.p12.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p12.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p12.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
		this.p13 = this.control.content.findName("p13");
		this.p13.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p13.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p13.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
		this.p14 = this.control.content.findName("p14");
		this.p14.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p14.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p14.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
		this.p15 = this.control.content.findName("p15");
		this.p15.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p15.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p15.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
		this.p16 = this.control.content.findName("p16");
		this.p16.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p16.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p16.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
		this.p17 = this.control.content.findName("p17");
		this.p17.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p17.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p17.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
		this.p18 = this.control.content.findName("p18");
		this.p18.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p18.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p18.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
		this.p19 = this.control.content.findName("p19");
		this.p19.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p19.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p19.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
		this.p20 = this.control.content.findName("p20");
		this.p20.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.hPDown));
		this.p20.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.hPEnter));
		this.p20.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.hPLeave));
	},
	hREnter: function(senderTop, newHeight){
        var changed = false;
        if(senderTop != this.lastRollY){
            this.roll1.Value = this.lastRollY;
            if(senderTop > this.lastRollY){
                this.roll2.Value = senderTop - 19;
		        this.roll3.Value = senderTop - 9;
            }
            else{
                this.roll2.Value = senderTop + 19;
		        this.roll3.Value = senderTop + 9;
            }		    
		    this.roll4.Value = senderTop;
	        this.lastRollY = senderTop;
	        changed = true;
        }
        if(newHeight != this.lastRollHeight){
            this.heightTransform.To = newHeight;
            this.heightTransform.From = this.lastRollHeight;            
            this.lastRollHeight = newHeight;
            changed = true;
        }        
        if(changed){
            this.rollAnimation.Begin();
        }
	},
	hPDown: function(sender){
	    var id = Number(sender.name.substr(1));
	    switch(id){
	        case 2:
	        case 11:
	            this.showMedia(0);
	            break;
	        case 5:
	        case 7:
	        case 17:
	            this.showMedia(1);
	            break;
	        case 1:
	        case 6:
	        case 18:
	            this.showMedia(2);
	            break;
	        case 14:
	        case 16:
	            this.showMedia(3);
	            break;
	        case 3:
	        case 8:
	        case 9:
	            this.showMedia(4);
	            break;
	        case 12:
	        case 13:
	        case 15:
	            this.showMedia(5);
	            break;
	        case 10:
	        case 19:
	        case 4:
	            this.showMedia(6);
	            break;
	        case 20:
	            this.showMedia(7);
	            break;
	    }
	},
	hPEnter: function(sender){
	    sender.opacity = 1;
	},	
	hPLeave: function(sender){
	    sender.opacity = 0;
	},
	hMediaOpened: function(){
	    this.loadingFadeOut.begin();
	    this.playVideo();
	},
	hMediaStateChanged: function(){
	    switch(this.mediaElement.currentState){
	        case "Opening":
	            this.setStatus("Opening");
	            this.mediaPlaying = false; 
	            break;
	        case "Buffering":	            	            
	            this.mediaPlaying = false; 
	            break;
	        case "Playing":
	            this.setStatus("Playing");
	            this.mediaPlaying = true; 
	            this.cPlayIcon.opacity = 0;
                this.cPauseIcon.opacity = 1;
                this.beginTimer();
	            break;
	        case "Paused":
	            this.setStatus("Paused");
	            this.mediaPlaying = false; 
	            this.cPlayIcon.opacity = 1;
                this.cPauseIcon.opacity = 0;
                this.pauseTimer();
	            break;
	        case "Stopped":
	            this.setStatus("Stopped");
	            this.mediaPlaying = false; 
	            break;
	    }
	},
	hBufferingProgressChanged: function(){
	    if(this.mediaElement.BufferingProgress == 1){
	        this.setStatus("Playing");
	    }
	    else{
	        this.setStatus("Loading...");
	    }	    
	},
	hMediaCompleted: function(){
	    this.resetVideo();
	},
	hMediaEnter: function(){
	    if(!this.controlPanelShown){
	        this.controlSlideIn.begin();
	        this.controlPanelShown = true;
	    }
	},	
	hMediaMove: function(){
	    this.mediaMouseOver = true;
	},	
	hMediaLeave: function(){
	    this.mediaMouseOver = false;
	    setTimeout(Silverlight.createDelegate(this, this.hMediaOut),300);
	},	
	hMediaOut: function(){
	    if(!this.controlPanelMouseOver && !this.mediaMouseOver){
	        this.controlSlideOut.begin();
	        this.controlPanelShown = false;
	    }
	},
	hCPanelMove: function(){
	    this.controlPanelMouseOver = true;
	},
	hCPanelLeave: function(){
	    this.controlPanelMouseOver = false;
	    setTimeout(Silverlight.createDelegate(this, this.hMediaOut),300);
	},
	hCPlayUp: function(){
	    this.playVideo();    
	},
	hCPlayHeadEnter: function(){
	    this.cPlayHeadHlight.opacity = 1;
	},
	hCPlayHeadLeave: function(){
	    this.cPlayHeadHlight.opacity = 0;
	},
	hCPlayHeadMove: function(sender, mouseEventArgs){
	    if(this.playHeadDown){
	        var xPos = mouseEventArgs.getPosition(null).x -124;
	        if(xPos < 0){
	            xPos = 0
	        }
	        else if(xPos > 354){
	            xPos = 354;
	        }
	        this.cPlayHeadTranslate.X = xPos;	        
	    }
	},
	hCPlayHeadDown: function(){
	    this.cPlayHead.captureMouse();
	    this.playHeadDown = true;
	},
	hCPlayHeadUp: function(){
	    this.cPlayHead.releaseMouseCapture();
        this.pauseTimer();
        var d = null;
        var e = null;
	    if(this.mediaPlayingIndex > -1){
	        d = Math.round((mediaData[this.mediaPlayingIndex].video.duration*this.cPlayHeadTranslate.X) / 360);    
	        e = (360*this.mediaElement.position.seconds) / mediaData[this.mediaPlayingIndex].video.duration;             
        }
        else {
            d = Math.round((253*this.cPlayHeadTranslate.X) / 360);             
            e = (360*this.mediaElement.position.seconds) / 253;
        }	 
        this.mediaElement.position = formatTime(d, true); 
        this.cTime.Text = formatTime(d);        
        this.cProgress.Width = 2+e;
	    this.playHeadDown = false;
	},
	playVideo: function(){
	    if(this.mediaPlaying){
            this.mediaElement.pause();                       
        }
        else{
            this.mediaElement.play();           
        }
	},
	resetVideo: function(){
	    this.mediaElement.position = "00:00:00";
	},
	beginTimer: function(){
	    this.timerID = setTimeout(Silverlight.createDelegate(this, this.tickTimer),1000);
	},
	pauseTimer: function(){
	    clearTimeout(this.timerID);
	},
	tickTimer: function(){
	    this.cTime.Text = formatTime(this.mediaElement.position.seconds);
	    this.timerID = setTimeout(Silverlight.createDelegate(this, this.tickTimer),1000);
	    if(this.mediaPlayingIndex > -1){
            this.cProgress.Width = 2+((360*this.mediaElement.position.seconds) / mediaData[this.mediaPlayingIndex].video.duration); 
        }
        else {
            this.cProgress.Width = 2+((360*this.mediaElement.position.seconds) / 253); 
        }
        if(this.cProgress.Width > 6 && !this.playHeadDown){
            this.cPlayHeadTranslate.X = this.cProgress.Width - 5.5;
        }
	},
	hCPlayEnter: function(){
	    this.cPlayHlight.opacity = 1;
	},
	hCPlayLeave: function(){
	    this.cPlayHlight.opacity = 0;
	},
	showMedia: function(index){
	    if(this.mediaSelectedIndex != index){
	        this.mediaSelectedIndex = index;
	    
	        if(index == 2){
	            this.infoTitle["Canvas.Top"] = 60;
	        }
	        else{
	            this.infoTitle["Canvas.Top"] = 100;
	        }
	        this.infoTitle.Text = mediaData[this.mediaSelectedIndex].video.title;
		    this.infoPresenter.Text = "presented by " + mediaData[this.mediaSelectedIndex].presenter.name;
		    this.infoDescription.Text = mediaData[this.mediaSelectedIndex].video.description;
		    this.downloads.innerHTML = '<a href="' + mediaData[this.mediaSelectedIndex].video.wmvUrl + '">WMV</a>, <a href="' + mediaData[this.mediaSelectedIndex].video.wmaUrl + '">WMA</a>, <a href="' + mediaData[this.mediaSelectedIndex].video.mp3Url + '">MP3</a>';
    		
		    if(this.mediaSelectedIndex == this.mediaPlayingIndex){
		        this.playBgd.width = 380;
		        this.playHlight.width = 374;
		        this.playText.Text = "This Video is playing now.  Start the Video over?";
		    }
		    else{
		        this.playBgd.width = 160;
		        this.playHlight.width = 154;
		        this.playText.Text = "Play this Video";
		    }
		    
		    if(this.mediaPlayingIndex > -1){
		        this.mediaElement.pause();
		    }
    		
		    if(!this.infoPanelShown){
		        this.downloads.style.visibility = "visible";
		        this.infoFadeIn.begin();
		        this.infoPanelShown = true;
		        this.infoPanel.IsHitTestVisible = true;
		    }
	    }	    
	    else{
	        this.hideMedia();
	    }	    
	},
	hideMedia: function(overridePlay){
	    this.downloads.style.visibility = "hidden";
	    this.infoFadeOut.begin();
	    this.infoPanelShown = false;
	    this.infoPanel.IsHitTestVisible = false;
	    this.mediaSelectedIndex = -1;
	    if(!overridePlay && this.mediaPlayingIndex > -1){
            this.mediaElement.play();
        }
	},	
	hPlayUp: function(sender){	    	    
	    if(this.imageShown){
	        sender.findName("previewWindow").visibility = "Collapsed";
	        sender.findName("previewLinks").visibility = "Collapsed";
	        this.imageShown = false;
	    }
	    this.mediaPlayingIndex = this.mediaSelectedIndex;	    
	    
	    var yPos = 0;
	    switch(this.mediaPlayingIndex){
	        case 0:
	            yPos = 28;
	            break;
	        case 1:
	            yPos = 83;
	            break;
            case 2:
	            yPos = 154;
	            break;
            case 3:
	            yPos = 225;
	            break;
            case 4:
	            yPos = 278;
	            break;
            case 5:
	            yPos = 331;
	            break;
            case 6:
	            yPos = 383;
	            break;
            case 7:
	            yPos = 436;
	            break;
	    }
	    this.selection["Canvas.Top"] = yPos;
	    this.selection.opacity = 1;
	    
	    this.hideMedia(true);
	    this.loadingFadeIn.begin();
	    this.mediaElement.stop();
	    this.mediaElement.Source = mediaData[this.mediaPlayingIndex].video.url;
	    this.cTotalTime.Text = "/ " + formatTime(mediaData[this.mediaPlayingIndex].video.duration);
	    this.cPlayHeadTranslate.X = 0;
	},
	hPlayEnter: function(){
	    this.playHlight.opacity = 1;
	},
	hPlayLeave: function(){
	    this.playHlight.opacity = 0;
	},
	hHideUp: function(){	    	    
	    this.hideMedia();
	},
	hHideEnter: function(){
	    this.hideHlight.opacity = 1;
	},
	hHideLeave: function(){
	    this.hideHlight.opacity = 0;
	},
	hLoadingIn: function(){
	    this.f1Fade.begin();
		this.f2Fade.begin();
		this.f3Fade.begin();
	},
	hLoadingOut: function(){
	    this.f1Fade.stop();
		this.f2Fade.stop();
		this.f3Fade.stop();
	},		
	resize: function(){
	    this.shiftLeft = (getPageSize()[0] - 904) / 2;
	    if(this.shiftLeft < 0){
	        this.shiftLeft = 0;
	    }
	    this.playList.style.left = (676 + this.shiftLeft) + "px";
	    this.downloads.style.left = (126 + this.shiftLeft) + "px";
	},
	setStatus: function(text){
	    this.status.Text = String(text);
	}
}

formatTime = function(time, fullString) {
	var hours = Math.floor(time / (60*60));
	var minutes = Math.floor(time / 60) - (hours*60);
	var seconds = Math.floor(time) - (hours*60*60) - (minutes*60);
    var timeString = "";
	if (hours > 0) {
	    timeString = hours < 10 ? ("0" + hours) : ("" + hours);
	    timeString += ":";
	}
	else if(fullString){
	    timeString += "00:";
	}
    timeString += minutes < 10 ? ("0" + minutes) : ("" + minutes);
    timeString += ":";
    timeString += seconds < 10 ? ("0" + seconds) : ("" + seconds);
    return timeString;
}
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
getPageSize = function()
{
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY)
	{
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	}
	else if (document.body.scrollHeight > document.body.offsetHeight) // all but Explorer Mac
	{
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	}
	else // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
	{
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	
	if (self.innerHeight) // all except Explorer
	{
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight) // Explorer 6 Strict Mode
	{
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	}
	else if (document.body) // other Explorers
	{
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if (yScroll < windowHeight)
		pageHeight = windowHeight;
	else
		pageHeight = yScroll;

	// for small pages with total width less then width of the viewport
	if (xScroll > windowWidth)
		pageWidth = windowWidth;
	else
		pageWidth = xScroll;

	return new Array(pageWidth, pageHeight, windowWidth, windowHeight);
}
