/*
The code in this file or document and its designs, methods, data, know-how and all other related elements are the property of LUXSON ltd © Copyright 2009-2010 and/or may contain code operated under third party licence(s); unauthorised use is therefore prohibited, including (without limitation) copying, editing, adapting, reverse engineering or any other similar or related action, in part or in full. Separate rights may also exist for LUXSON and/or client and/or third party content and/or services. For licensing information please contact LUXSON ltd.
*/

// This will stop image flickering in IE6 when elements with images are moved
try {
	document.execCommand("BackgroundImageCache", false, true);
} catch(e) {};

var luxBox = new LuxBox();

function LuxBox () {

	var scrollOff;
	var winSize;
	var imageSize;
	var docSize;
	var padding = 0;
	var textAreaH = 40;
	var curFade = 0;
	var intervalId;
	var showIntervalId;
	var fileType;
	var fileExt;
	var liteLoadImg = new Image();
	var liteImg = new Image();
	var hideObj = false;
	var buildStr = '';
	var blLoading = false;
	
	var intTime = 40;
	var intNumber = 20;
	
	var prefix = "ls";
	var type = "luxBox";
	
	var url = "";
	
	var loadingImg = url+"images/loading.gif";
	
	var b = navigator.appName;
	
	this.liteW = function(s, e){
		
		if (buildStr.length == 0) {
			//buildElements();
			
			buildStr += '<div id="'+prefix+'_lite_media"></div>';
			buildStr += '<div id="'+prefix+'_lite_text"></div>';
			buildStr += '<div id="'+prefix+'_lite_close"><a href="javascript:;" onclick="'+type+'.close_lite_window();">Close</a></div>';
			
			var lo = document.createElement('div');
			lo.setAttribute('id', prefix+'_lite_overlay');
			
			var lc = document.createElement('div');
			lc.setAttribute('id', prefix+'_lite_content');
			
			document.body.appendChild(lo);
			document.body.appendChild(lc);
			
			document.getElementById(prefix+'_lite_content').innerHTML += buildStr;
			
		}
		
		if(b == "Microsoft Internet Explorer" || b == "Opera") hideObj = true;
	
		if(window.addEventListener){
			window.addEventListener("scroll", adjustForScroll, false);
			window.addEventListener("resize", adjustForResize, false);
		}else if(window.attachEvent){
			window.attachEvent("onscroll", adjustForScroll);
			window.attachEvent("onresize", adjustForResize);
		}else{
			alert("error: add/attach event");
		}
		
		var visWidth = 0, visHeight = 0;
		winSize = getWindowSize();
		scrollOff = getScrollOffset();
		docSize = getDocumentSize();
		
		document.getElementById(prefix+"_lite_overlay").style.display = "block";
		
		if(docSize.w < winSize.w){
			document.getElementById(prefix+"_lite_overlay").style.width = winSize.w+'px';
		}else{
			document.getElementById(prefix+"_lite_overlay").style.width = docSize.w+'px';
		}
		if(docSize.h < winSize.h){
			document.body.style.height = '100%';
			document.getElementById(prefix+"_lite_overlay").style.height = winSize.h+'px';
		}else{
			document.body.style.height = 'auto';
			docSize = getDocumentSize();
			document.getElementById(prefix+"_lite_overlay").style.height = docSize.h+'px';
		}
		
		//Check type of file i.e. jpg, gif, png, swf
		
		//fileExt = s.substr(s.lastIndexOf(".")+1);
		//fileExt = s.substr(-3);
		
		fileExt = s.substr(s.length-3,3);
		
		if(checkType(e)){
			fileType = e.type;
		}else{
			switch (fileExt) 
			{ 
				case "jpg" : 
				fileType = "image";
				break;
				case "gif" :
				fileType = "image";
				break;
				case "png" :
				fileType = "image";
				break;
				case "swf" :
				fileType = "flash";
				break;
				case "flv" :
				fileType = "video";
				break;
				case "mp4" :
				fileType = "video";
				break;
				case "mp3" :
				fileType = "audio";
				break;
				case "txt" :
				fileType = "text";
				break;
				default : 
					if(s.indexOf("youtube") > -1 && s.indexOf("http://") > -1){
						fileType = "youtube";
					}else{
						fileType = "iframe";
					}
			}
		}
		
		if(e){
			if(e.title){
				document.getElementById(prefix+"_lite_text").innerHTML = e.title;
			}
		}
		
		if(fileType == "image")
		{
			liteImg.onload = function() {
				if(hideObj) hideElements();
				imageSize = {w : this.width, h : this.height};
				//document.getElementById("lite_media").appendChild(liteImg);
				blLoading = true;
				positionContent();
			}
			
			liteImg.onresize = function() {
				imageSize = {w : this.width, h : this.height};
				positionContent();
			}
			
			liteLoadImg.onload = function() {
				if(hideObj) hideElements();
				imageSize = {w : this.width, h : this.height};
				document.getElementById(prefix+"_lite_media").appendChild(liteLoadImg);
				intervalId = setInterval(function(){fadeLiteWindow(1)}, intTime);
				positionContent();
				liteImg.src = s;
			}
			
			liteLoadImg.onresize = function() {
				imageSize = {w : this.width, h : this.height};
				positionContent();
			}
			
			document.getElementById(prefix+'_lite_text').style.display = 'none';
			document.getElementById(prefix+'_lite_close').style.display = 'none';
			
			liteLoadImg.src = loadingImg;
			
		}
		
		var tw = 0;
		var th = 0;
		var tv = 0;
		
		if(fileType == "flash" || fileType == "video" || fileType == "audio" || fileType == "text" || fileType == "youtube"){
			
			document.getElementById(prefix+"_lite_media").innerHTML = '<div id="'+prefix+'_lite_flash"></div>';
			
			var lite_v = false;
			if(fileType == "audio" || fileType == "text" || fileType == "video"){
				lite_v = {fileURL: s};
			}else if(fileType == "youtube"){
				lite_v = {fileURL: escape(s)};
			}else if(e.vars){
				lite_v = e.vars;
			}
			var lite_p = {
				wmode: "transparent",
				scale: "noscale"
			};
			var lite_a = {
				id: prefix+"_lite_flash",
				name: prefix+"_lite_flash"
			};
			
			if(fileType == "video"){
				tw = 640;
				th = 390;
				tv = 9;
				if(e.w) tw = e.w;
				if(e.h) th = e.h;
				if(e.v) tv = e.v;
				swfobject.embedSWF(url+"flash/LUXSON-Video-Player.swf", prefix+"_lite_flash", String(tw), String(th), String(tv)+".0.0", "", lite_v, lite_p, lite_a);
			}else if(fileType == "youtube"){
				tw = 640;
				th = 390;
				tv = 7;
				if(e.w) tw = e.w;
				if(e.h) th = e.h;
				if(e.v) tv = e.v;
				swfobject.embedSWF(url+"flash/LUXSON-Youtube-Player.swf", prefix+"_lite_flash", String(tw), String(th), String(tv)+".0.0", "", lite_v, lite_p, lite_a);
			}else if(fileType == "audio"){
				tw = 640;
				th = 200;
				tv = 7;
				if(e.w) tw = e.w;
				if(e.h) th = e.h;
				if(e.v) tv = e.v;
				swfobject.embedSWF(url+"flash/LUXSON-Audio-Player.swf", prefix+"_lite_flash", String(tw), String(th), String(tv)+".0.0", "", lite_v, lite_p, lite_a);
			}else if(fileType == "text"){
				tw = 560;
				th = 500;
				tv = 7;
				if(e.w) tw = e.w;
				if(e.h) th = e.h;
				if(e.v) tv = e.v;
				swfobject.embedSWF(url+"flash/LUXSON-Text-Player.swf", prefix+"_lite_flash", String(tw), String(th), String(tv)+".0.0", "", lite_v, lite_p, lite_a);
			}else{
				tw = 640;
				th = 480;
				tv = 8;
				if(e.w) tw = e.w;
				if(e.h) th = e.h;
				if(e.v) tv = e.v;
				swfobject.embedSWF(s, prefix+"_lite_flash", String(tw), String(th), String(tv)+".0.0", "", lite_v, lite_p, lite_a);
			}
			
			imageSize = {w : tw, h : th};
			
			positionContent();
			
			if(hideObj) hideElements();
			
			intervalId = setInterval(function(){fadeLiteWindow(1)}, intTime);
			
		}
		
		if(fileType == "iframe"){
			tw = 800;
			th = 600;
			
			if(e.w) tw = e.w;
			if(e.h) th = e.h;
			
			document.getElementById(prefix+"_lite_media").innerHTML = '<iframe src ="'+s+'" width="'+tw+'" height="'+th+'" frameborder=0><p>Your browser does not support iframes.</p></iframe>';
			
			imageSize = {w : tw, h : th};
			
			positionContent();
			
			if(hideObj) hideElements();
			intervalId = setInterval(function(){fadeLiteWindow(1)}, intTime);
		}
			
	}
	
	function checkType(e){
		if(e){
			if(e.type){
				return true;
			}else{
				return false;
			}
		}else{
			return false;	
		}
	}
	
	function addLiteImage(){
		clearInterval(showIntervalId);
		document.getElementById(prefix+"_lite_media").removeChild(liteLoadImg);
		liteLoadImg = new Image();
		document.getElementById(prefix+"_lite_media").appendChild(liteImg);	
		document.getElementById(prefix+"_lite_text").style.display = 'block';
		document.getElementById(prefix+"_lite_close").style.display = 'block';
	}
	
	function positionContent(){
		document.getElementById(prefix+"_lite_content").style.width = (imageSize.w+(padding*2))+"px";
		document.getElementById(prefix+"_lite_content").style.height = (imageSize.h+(padding*2)+textAreaH)+"px";
		document.getElementById(prefix+"_lite_content").style.top = ((winSize.h-(padding*2)-textAreaH-imageSize.h)/2)+scrollOff.y+"px";
		document.getElementById(prefix+"_lite_content").style.left = ((winSize.w-(padding*2)-imageSize.w)/2)+scrollOff.x+"px";
		document.getElementById(prefix+"_lite_content").style.display = "block";
		
		if(blLoading == true){
			blLoading = false;
			addLiteImage();
		}
	}
	
	function hideElements(){
		//Hide form elements
		var arrHolder = new Array();
			
		var arrSelect = document.getElementsByTagName("select");
		var arrObject = document.getElementsByTagName("object");
			
		arrHolder.push(arrSelect);
		arrHolder.push(arrObject);
			
		for (var i = 0; i < arrHolder.length; i++){
			for(var j = 0; j < arrHolder[i].length; j++){
				if(arrHolder[i][j].name != prefix+'_lite_flash') arrHolder[i][j].style.visibility = 'hidden';
			}
		}	
	}
	
	function getWindowSize(){
		
		var myWidth = 0, myHeight = 0;
		var results;
		
		if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
			//Non-IE
			myWidth = document.documentElement.clientWidth;
			myHeight = document.documentElement.clientHeight;
			//IE 6+ in 'standards compliant mode'
			myWidth = document.documentElement.clientWidth;
			myHeight = document.documentElement.clientHeight;
		} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
			//IE 4 compatible
			myWidth = document.body.clientWidth;
			myHeight = document.body.clientHeight;
		}
		
		results = {w : myWidth, h : myHeight}
		return results;
	}
	
	function getScrollOffset(){
		var x,y;
		var results;
		
		if (self.pageYOffset) // all except Explorer
		{
			x = self.pageXOffset;
			y = self.pageYOffset;
		}
		else if (document.documentElement && document.documentElement.scrollTop)
			// Explorer 6 Strict
		{
			x = document.documentElement.scrollLeft;
			y = document.documentElement.scrollTop;
		}
		else if (document.body) // all other Explorers
		{
			x = document.body.scrollLeft;
			y = document.body.scrollTop;
		}
		
		results = {x : x, y : y};
		return results;
	}
	
	function getDocumentSize(){
		var docWidth = 0, docHeight = 0;
		var results;
		
		docWidth = (document.width !== undefined) ? document.width : document.body.offsetWidth;
		docHeight = (document.height !== undefined) ? document.height : document.body.offsetHeight;
				
		results = {w : docWidth, h : docHeight};
		return results;
	}
	
	this.close_lite_window = function(){
	
		intervalId = setInterval(function (){fadeLiteWindow(-1)}, intTime);
		
		if(window.removeEventListener){
			window.removeEventListener("resize", adjustForResize);
			window.removeEventListener("scroll", adjustForScroll);
		}else if(window.detachEvent){
			window.detachEvent("onresize", adjustForResize);
			window.detachEvent("onscroll", adjustForScroll);
		}
	}
	
	function adjustPos(){
		alert('test');
	}
	
	function adjustForScroll(){
		scrollOff = getScrollOffset();
		document.getElementById(prefix+"_lite_content").style.top = ((winSize.h-(padding*2)-textAreaH-imageSize.h)/2)+scrollOff.y+"px";
		document.getElementById(prefix+"_lite_content").style.left = ((winSize.w-(padding*2)-imageSize.w)/2)+scrollOff.x+"px";
	};
	
	function adjustForResize(){
		if(imageSize){
			winSize = getWindowSize();
			scrollOff = getScrollOffset();
			docSize = getDocumentSize();
			document.getElementById(prefix+"_lite_overlay").style.width = docSize.w+'px';
			document.getElementById(prefix+"_lite_overlay").style.height = docSize.h+'px';
			document.getElementById(prefix+"_lite_content").style.width = (imageSize.w+(padding*2))+"px";
			document.getElementById(prefix+"_lite_content").style.height = (imageSize.h+(padding*2)+textAreaH)+"px";
			document.getElementById(prefix+"_lite_content").style.top = ((winSize.h-(padding*2)-textAreaH-imageSize.h)/2)+scrollOff.y+"px";
			document.getElementById(prefix+"_lite_content").style.left = ((winSize.w-(padding*2)-imageSize.w)/2)+scrollOff.x+"px";
		}
	}
	
	function fadeLiteWindow(val){
		curFade += val;
		
		if(imageSize.w == 0 || imageSize.h == 0){
			imageSize = {w : document.getElementById(prefix+"_lite_image").width, h : document.getElementById(prefix+"_lite_image").height};
			adjustForResize();
		}
		var clearLoop = 0;
		
		if(curFade <= 0){
			curFade = 0;
			clearLoop = 1;
			document.getElementById(prefix+"_lite_overlay").style.display = "none";
			document.getElementById(prefix+"_lite_content").style.display = "none";
			
			liteImg = new Image();
			document.getElementById(prefix+"_lite_media").innerHTML = "";
			
			document.getElementById(prefix+"_lite_text").innerHTML = "";
			
			if(hideObj) showElements();
			
			document.body.style.height = 'auto';
			
		}else if(curFade >= intNumber){
			curFade = intNumber;
			clearLoop = 1;
		}
		
		document.getElementById(prefix+"_lite_overlay").style.opacity = ((curFade/intNumber)/10)*8;
		document.getElementById(prefix+"_lite_overlay").style.filter = 'alpha(opacity=' + ((((curFade/intNumber)*100)/10)*8) + ')';
		
		document.getElementById(prefix+"_lite_content").style.opacity = curFade/intNumber;
		document.getElementById(prefix+"_lite_content").style.filter = 'alpha(opacity=' + (curFade/intNumber)*100 + ')';
	
		if(clearLoop == 1){
			clearInterval(intervalId);
			clearLoop = 0;
		}
	
	}
	
	function showElements(){
		var arrHolder = new Array();
		
		var arrSelect = document.getElementsByTagName("select");
		var arrObject = document.getElementsByTagName("object");
		
		arrHolder.push(arrSelect);
		arrHolder.push(arrObject);
		
		for (var i = 0; i < arrHolder.length; i++){
			for(var j = 0; j < arrHolder[i].length; j++){
				if(arrHolder[i][j].name != prefix+'_lite_flash') arrHolder[i][j].style.visibility = 'visible';
			}
		}
	}
}