// Start FloatingWindows
var moveCounter = -1;
var startEventPos = new Array();
var startPosWindow = new Array();
var activeWindow = false;
var activeWindowContent = false;	
var windowSizeArray = new Array();
var windowPositionArray = new Array();
var currentZIndex = 1000000;
var activeWindowIframe = false;
var divCounter = 0;
var zIndexSet = false;

var MSIEWIN = (navigator.userAgent.indexOf('MSIE')>=0 && navigator.userAgent.indexOf('Win')>=0 && navigator.userAgent.toLowerCase().indexOf('opera')<0)?true:false;
var opera = navigator.userAgent.toLowerCase().indexOf('opera')>=0?true:false;

var ajaxObjects = new Array();

function cancelEvent() {
	return (moveCounter == -1)?true:false;
}

function initMove(e) {		
	if(document.all) {
		e = event;
	}
	moveCounter = 0;
	switchElement(false, this);
	startEventPos = [e.clientX,e.clientY];
	startPosWindow = [activeWindow.offsetLeft, activeWindow.offsetTop];
	startMove();
	if (!MSIEWIN) {
		return false;
	}
}

function startMove() {
	if(moveCounter >= 0 && moveCounter <= 10) {
		moveCounter++;
		setTimeout('startMove()', 5);
	}
}

function stopMove(e) {
	if (document.all) {
		e = event;
	}
	moveCounter = -1;
	if (!activeWindow) {// || !activeWindowContent) {
		return;
	}
}

function moveWindow(e) {
	if (document.all) {
		e = event;
	}
	if(moveCounter >= 10) {
		activeWindow.style.left = startPosWindow[0] + e.clientX - startEventPos[0]  + 'px';
		activeWindow.style.top = startPosWindow[1] + e.clientY - startEventPos[1]  + 'px';
	}
	if (!document.all) {
		return false;
	}
}

function switchElement(e,inputElement) {
	if (!inputElement) {
		inputElement = this;
	}
	currentZIndex = currentZIndex/1 + 1;
	if (inputElement.className == "floatingwindow") {
		activeWindow = document.getElementById(inputElement.id);	
	}
	activeWindow.style.zIndex = currentZIndex;
//	activeWindowContent = inputElement. document.getElementById('windowContent' + numericId);
}

function hideWindow() {
//	switchElement(false,document.getElementById(this.id));	
	activeWindow.style.display='none';
}

function initWindows(e,divObj) {
		var divs = document.getElementsByTagName('DIV');
		
		if(divObj) {
			var tmpDivs = divObj.getElementsByTagName('DIV');
			var divs = new Array();
			divs[divs.length] = divObj;
			
			for(var no = 0; no < tmpDivs.length; no++) {
				divs[divs.length] = tmpDivs[no];
			}
		}
		
		for (var no = 0; no < divs.length; no++) {
			if (divs[no].className=='floatingwindow') {	
				if(MSIEWIN) {
					var iframe = document.createElement("<IFRAME SECURITY='restricted' src='blank.html' frameborder=0>");
					iframe.style.border='0px';
					iframe.style.position = 'absolute';
					iframe.style.backgroundColor = '#FFFFFF';
					iframe.style.top = '0px';
					iframe.style.left = '0px';
					iframe.style.zIndex = 1000000;
					
					var subDiv = divs[no].getElementsByTagName('DIV')[0];
					divs[no].insertBefore(iframe,subDiv);
				}
				
				if(divObj) {
					divs[no].style.zIndex = currentZIndex;
					currentZIndex = currentZIndex /1 + 1;
				}
				
				divCounter = divCounter + 1;	
				if (divCounter == 1) {
					activeWindow = divs[no];
				}
				divs[no].onmousedown = switchElement;
				
				if (windowPositionArray[divCounter]){
					divs[no].style.left = windowPositionArray[divCounter][0] + 'px';	
					divs[no].style.top = windowPositionArray[divCounter][1] + 'px';	
				}
				
				var subImages = divs[no].getElementsByTagName('IMG');
				for (var no2 = 0; no2 < subImages.length; no2++) {
					if (subImages[no2].className == 'floatingwindow_closebutton'){
						subImages[no2].onclick = hideWindow;	
					}	
				}			
				
			}
			
			if (divs[no].className == 'floatingwindow_title'){
				divs[no].onmousedown = initMove;
				divs[no].style.zIndex = 1000000;
			}

			if (divs[no].className == 'floatingwindow_content') {
				divs[no].style.zIndex = 1000000;
				if (windowSizeArray[divCounter]) {
					divs[no].style.height = windowSizeArray[divCounter][1] + 'px';
					divs[no].parentNode.parentNode.style.width = windowSizeArray[divCounter][0] + 'px';
					
					if(MSIEWIN){
						iframe.style.width = (windowSizeArray[divCounter][0]) + 'px';
						iframe.style.height = (windowSizeArray[divCounter][1]+20) + 'px';
					}
				}
			}
		}	
		
		if(!divObj) {
			document.body.onmouseup = stopMove;	
			document.body.onmousemove = moveWindow;
			document.body.ondragstart = cancelEvent;
			document.body.onselectstart = cancelEvent;
		}
		
		return divCounter;
	}

// End FloatingWindows

// Begin App Functions

function openImageLayer(url, xpos, ypos, width, height) {
	mediaLayer(url,'I',xpos,ypos,width,height);
}

function openFlashLayer(url, xpos, ypos, width, height) {
	mediaLayer(url,'F',xpos, ypos, width, height);
}	
	
function openAppLayer(url, xpos, ypos, width, height) {
	mediaLayer(url,'A',xpos, 90, 800, height);
}

function openPostcards(url) {
	var xpos;
	var ypos;
	mediaLayer(url,'A',xpos, ypos, 800, 675);
}

function openSendFriend(url) {
	var xpos;
	var ypos;
	mediaLayer(url,'A', xpos, ypos, 440);
}

		
// End App Functions

// Start MediaLayer

var intervId;

var initialCoords = new Array();
var finalCoords = new Array();

var mediaLayerImg;
var ie5 = document.all&&document.getElementById;
var ns6 = document.getElementById&&!document.all;

function mediaLayer(url, urltype, xpos, ypos, width, height) {
	// get the type of the url
	if (urltype == undefined) {
		urltype = "I";
	}

	// initialize arguments
	if ((width == undefined || height == undefined)) {
		if (urltype == "I") {
			mediaLayerImg = new Image();
			clearInterval(intervId);
			intervId = setInterval("isImageReady('"+url+"','"+urltype+"',"+xpos+","+ypos+","+width+","+height+")", 10);
			mediaLayerImg.src = url;
			return;
		} else if (urltype == "F") {
			width = 320;
			height = 240;
		}
	}
	mediaLayerImageReady(url, urltype, xpos, ypos, width, height);
}

function isImageReady(url, urltype, xpos, ypos, width, height) {
	if (mediaLayerImg.complete) {
		clearInterval(intervId);
		if (width == undefined) {
			width = mediaLayerImg.width;
		}
		if (height == undefined) {
			height = mediaLayerImg.height;
		}
		mediaLayerImageReady(url, urltype, xpos, ypos, width, height);
	}
}

function loadImgContent(divId, url, xpos, ypos, width, height) {
	document.getElementById(divId + "content").innerHTML = 
		'<img alt="" id="cimg" src="' + url + '">';
	var imgObj = document.getElementById(divId + "content").getElementsByTagName("img");
	imgObj.width = width;
	imgObj.height = height;
}

function loadFlashContent(divId, url, xpos, ypos, width, height) {
	document.getElementById(divId + "content").innerHTML = 
		'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'
		+ '		codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,79,0"'
		+ '		width="' + width + '"'
		+ ' 	height="' + height + '">'
		+ '	<param name="movie" value="' + url + '">'
		+ '	<param name="quality" value="high">'
		+ '	<param name="menu" value="false">'
		+ '	<param name="bgcolor" value="#ffffff">'
		+ '	<param name="wmode" value="tranparent">'
		+ '	<embed src="' + url + '"'
		+ '		width="' + width + '"'
		+ '		height="' + height + '"'
		+ '		bgcolor="#ffffff"'
		+ '		type="application/x-shockwave-flash"'
		+ '		wmode="transparent"'
		+ '		pluginspage="https://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">'
		+ '	</embed>'
		+ '</object>';
}

function showAjaxContent(ajaxIndex, divId, url, xpos, ypos, width, height) {
	var divObj = document.getElementById(divId);
	var divContentObj = document.getElementById(divId + "content");
	divObj.style.top="-1000px";
	divObj.style.left="-1000px";
	divObj.style.display='';
	divContentObj.innerHTML = ajaxObjects[ajaxIndex].response;
	// evaluate javascript scriplets
	var scriptlets = divContentObj.getElementsByTagName("script");
	for (var i = 0; i < scriptlets.length; i++) {
		var scriptElem = document.createElement('script');
		scriptElem.setAttribute('type', 'text/javascript');
		scriptElem.text = scriptlets[i].innerHTML;
		document.getElementsByTagName("head")[0].appendChild(scriptElem);
	}

	if (width == undefined) {
		width = divContentObj.lastChild.offsetWidth;
	}
	if (height == undefined) {
		height = divContentObj.lastChild.offsetHeight;
	}

	mediaLayerDisplay(divId, url, xpos, ypos, width, height, null);
}

function loadAjaxContent(divId, url, xpos, ypos, width, height) {
	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = url;	// Specifying which file to get
	ajaxObjects[ajaxIndex].onCompletion = function(){ showAjaxContent(ajaxIndex, divId, url, xpos, ypos, width, height); };	// Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function			
}

function mediaLayerImageReady(url, urltype, xpos, ypos, width, height) {
	if (urltype == "F") {
		mediaLayerDisplay("mediawindow", url, xpos, ypos, width, height, loadFlashContent);
	} else if (urltype == "A") {
		loadAjaxContent("mediawindow", url, xpos, ypos, width, height);
	} else { // urltype == "I"
		mediaLayerDisplay("mediawindow", url, xpos, ypos, width, height, loadImgContent);
	}
}

function mediaLayerDisplay(divId, url, xpos, ypos, width, height, loadContent) {
		var divObj = document.getElementById(divId);
	
		// get the horizontal and vertical center of the page
		var dm = getCenter();
		var centerXpos = dm[0];
		var centerYpos = dm[1];
		
		if (xpos == undefined) {
			xpos = centerXpos - (width + 6) / 2;
		}
		
		if (ypos == undefined) {
			ypos = centerYpos - (height + 13) / 2;
		}

		initialCoords = getInitialCoords(divId, xpos, ypos, width, height);
		finalCoords = getFinalCoords(divId, xpos, ypos, width, height);
	
		divObj.style.display='';
		divObj.style.left = initialCoords[0] +"px";
		divObj.style.top = initialCoords[1] + "px";
		divObj.style.width = initialCoords[2] + "px";
		divObj.style.height = initialCoords[3] + "px";
		if (MSIEWIN) {
			var iframe = divObj.getElementsByTagName("IFRAME")[0];
			iframe.style.width = initialCoords[2] + "px";
			iframe.style.height = initialCoords[3] + "px";
		}
		
		// load resource
		if (loadContent != null) {
			loadContent(divId, url, xpos, ypos, width, height);
		}
		
		startSlide(divId, 50, 10);
}

// animation behavior
function getTitleHeight(divId) {
	var divObj = document.getElementById(divId);
	var subDivs = divObj.getElementsByTagName('DIV');
	var titleHeight = -1;
	for (var i = 0; i < subDivs.length && titleHeight < 0; i++) {
		if (subDivs[i].className == 'floatingwindow_title') {
			titleHeight = subDivs[i].offsetHeight;
		}
	}
	return titleHeight;
}

function getInitialCoords(divId, xpos, ypos, width, height) {
	return [xpos, getScrollXY()[1]+ ypos, 0, 0];
}

function getFinalCoords(divId, xpos, ypos, width, height) {
	return [xpos, getScrollXY()[1]+ ypos, width , height + getTitleHeight(divId)];
}

var updaterTimer;

function updateSizeAsync(divId) {
	clearTimeout(updaterTimer);

	var divObj = document.getElementById(divId);
	var divContentObj = document.getElementById(divId + "content");

	if (divObj.clientWidth != divContentObj.offsetWidth) {
		if (MSIEWIN) {
			var iframe = divObj.getElementsByTagName("IFRAME")[0];
			iframe.style.width = (divObj.scrollWidth)+ "px";
		}
		divObj.style.width = (divObj.scrollWidth)+ "px";
	}

	if (MSIEWIN) {
		iframe.style.height = divObj.offsetHeight + "px";
	}
	divObj.style.clip = "rect(0px,  2000px, 2000px, 0px)";
	divObj.style.height = "";

}

function updateSize(divId)  {
	updaterTimer = setTimeout("updateSizeAsync('" + divId + "')", 1000);
}

var animIncrements = new Array();
var animCoords = new Array();
var animSpeed = 0;

function startSlide(divId, duration, speed) {
	animSpeed = speed;

	animIncrements[0] = (finalCoords[0] - initialCoords[0]) / speed;
	animIncrements[1] = (finalCoords[1] - initialCoords[1]) / speed;
	animIncrements[2] = (finalCoords[2] - initialCoords[2]) / speed;
	animIncrements[3] = (finalCoords[3] - initialCoords[3]) / speed;
	
	animCoords[0] = initialCoords[0];
	animCoords[1] = initialCoords[1];
	animCoords[2] = initialCoords[2];
	animCoords[3] = initialCoords[3];

	var divObj = document.getElementById(divId);
	divObj.style.width = finalCoords[2] + "px";
	divObj.style.height = finalCoords[3] + "px";
	if (MSIEWIN) {
		var iframe = divObj.getElementsByTagName("IFRAME")[0];
		iframe.style.width = finalCoords[2] + "px";
		iframe.style.height = finalCoords[3] + "px";
	}
	divObj.style.clip = "rect(" + 0 + "px, " + initialCoords[2] + "px, " + initialCoords[3] + "px, " + 0 + "px)";
	clearInterval(intervId);
	intervId = setInterval("nextFrame('" + divId +"')", duration / speed);
}

function nextFrame(divId) {	
	var divObj = document.getElementById(divId);
	
	animCoords[0] = Math.floor(animCoords[0] + animIncrements[0]);
	animCoords[1] = Math.floor(animCoords[1] + animIncrements[1]);
	animCoords[2] = Math.floor(animCoords[2] + animIncrements[2]);
	animCoords[3] = Math.floor(animCoords[3] + animIncrements[3]);
	
	var newClipVal = "rect(" + 0 + "px, " + animCoords[2] + "px, " + animCoords[3] + "px, " + 0 + "px)";
	divObj.style.clip = newClipVal;
	divObj.style.left = animCoords[0] +"px";
	divObj.style.top = animCoords[1] + "px";
	animSpeed--;
	
	if (animSpeed == 0) {
		divObj.style.left = finalCoords[0] +"px";
		divObj.style.top = finalCoords[1] + "px";
		divObj.style.width = finalCoords[2] + "px";
		divObj.style.height = "";
		if (MSIEWIN) {
			var iframe = divObj.getElementsByTagName("IFRAME")[0];
			iframe.style.width = finalCoords[2] + "px";
			iframe.style.height = finalCoords[3] + "px";
		}
		divObj.style.clip = "rect(0px,  2000px, 2000px, 0px)";
		clearInterval(intervId);
	}
}

// utilities for getting coordinates
function getCenter() {
	var frameWidth = 0;
	var frameHeight = 0;

	if (window.innerWidth != undefined) {
		frameWidth = window.innerWidth;
		frameHeight = window.innerHeight;
	} else if (document.documentElement && document.documentElement.clientWidth) {
		frameWidth = document.documentElement.clientWidth;
		frameHeight = document.documentElement.clientHeight;
	} else if (document.body) {
		frameWidth = document.body.clientWidth;
		frameHeight = document.body.clientHeight;
	}
	return [frameWidth/2, frameHeight/2];
}

function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}
// End MediaLayer
