/* (C) www.dhtmlgoodies.com, September 2005 */
	
var windowMinSize = [80,30];	// Mininum width and height of windows.

var moveCounter = -1;	
var startEventPos = new Array();
var startPosWindow = new Array();
var startWindowSize = new Array();
var initResizeCounter = -1;	
var activeWindow = false;
var activeWindowContent = false;	
var windowSizeArray = new Array();
var windowPositionArray = new Array();
var currentZIndex = 10000;
var windowStateArray = new Array();	// Minimized or maximized
var activeWindowIframe = false;
var zIndexSet = false;
var divCounter = 0;

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 && initResizeCounter==-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;
	initResizeCounter=-1;
	if(!activeWindow || !activeWindowContent)return;
	var state = '0';
	if(windowStateArray[activeWindow.id.replace(/[^0-9]/g,'')])state = '1';
}

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(initResizeCounter>=10){
		var newWidth = Math.max(windowMinSize[0],startWindowSize[0] + e.clientX - startEventPos[0]);
		var newHeight = Math.max(windowMinSize[1],startWindowSize[1] + e.clientY - startEventPos[1]);
		activeWindow.style.width =  newWidth + 'px';
		activeWindowContent.style.height = newHeight  + 'px';		

		if(MSIEWIN && activeWindowIframe){
			activeWindowIframe.style.width = (newWidth) + 'px';	
			activeWindowIframe.style.height = (newHeight+35) + 'px';	
		}
	}
	if(!document.all)return false;
}


function initResizeWindow(e)
{
	if(document.all)e = event;
	initResizeCounter = 0;
	switchElement(false,document.getElementById('dhtml_goodies_id' + this.id.replace(/[^\d]/g,'')));

	startWindowSize = [activeWindowContent.offsetWidth,activeWindowContent.offsetHeight];
	startEventPos = [e.clientX,e.clientY];

	if(MSIEWIN)activeWindowIframe = activeWindow.getElementsByTagName('IFRAME')[0];
	startResizeWindow();
	return false;
}

function startResizeWindow()
{
	if(initResizeCounter>=0 && initResizeCounter<=10){
		initResizeCounter++;
		setTimeout('startResizeWindow()',5);
	}
}

function switchElement(e,inputElement)
{
	if(!inputElement)inputElement = this;
	var numericId = inputElement.id.replace(/[^0-9]/g,'');
	var state = '0';
	if(windowStateArray[numericId])state = '1';

	currentZIndex = currentZIndex/1 + 1;
	activeWindow = document.getElementById('dhtml_goodies_id' + numericId);	
	activeWindow.style.zIndex = currentZIndex;
	activeWindowContent = document.getElementById('windowContent' + numericId);
}

function hideWindow()
{
	switchElement(false,document.getElementById('dhtml_goodies_id' + this.id.replace(/[^\d]/g,'')));	
	activeWindow.style.display='none';
}

function minimizeWindow(e,inputObj)
{
	if(!inputObj)inputObj = this;
	var numericID = inputObj.id.replace(/[^0-9]/g,'');
	switchElement(false,document.getElementById('dhtml_goodies_id' + numericID));
	var state;	
	if(inputObj.src.indexOf('minimize')>=0){
		activeWindowContent.style.display='none';
		document.getElementById('resizeImage'+numericID).style.display='none';
		inputObj.src = inputObj.src.replace('minimize','maximize');	
		windowStateArray[numericID] = false;
		state = '0';		
	}else{			
		activeWindowContent.style.display='block';
		document.getElementById('resizeImage'+numericID).style.display='';
		inputObj.src = inputObj.src.replace('maximize','minimize');
		windowStateArray[numericID] = true;
		state = '1';
	}
}

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=='dhtmlgoodies_window'){	
			if(MSIEWIN){
				var iframe = document.createElement('IFRAME');
				iframe.src='void(0)';
				iframe.style.border='0px';
				iframe.frameborder=0;
				iframe.style.position = 'absolute';
				iframe.style.backgroundColor = '#FFFFFF';
				iframe.style.top = '0px';
				iframe.style.left = '0px';
				iframe.style.zIndex = 100;

				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].id = 'dhtml_goodies_id' + divCounter;	
			divs[no].onmousedown = switchElement;
			if(windowPositionArray[divCounter - 1]){
				divs[no].style.left = windowPositionArray[divCounter - 1][0] + 'px';	
				divs[no].style.top = windowPositionArray[divCounter - 1][1] + 'px';	
			}

			var subImages = divs[no].getElementsByTagName('IMG');
			for(var no2=0;no2<subImages.length;no2++){
				if(subImages[no2].className=='resizeImage'){
					subImages[no2].style.cursor = 'nw-resize';
					subImages[no2].onmousedown = initResizeWindow;
					subImages[no2].id = 'resizeImage' + divCounter;
					break;
				}	
				if(subImages[no2].className=='closeButton'){
					subImages[no2].id = 'closeImage' + divCounter;
					subImages[no2].onclick = hideWindow;	
				}	
				if(subImages[no2].className=='minimizeButton'){
					subImages[no2].id = 'minimizeImage' + divCounter;
					subImages[no2].onclick = minimizeWindow;	
				}
			}			
		}	
		if(divs[no].className=='dhtmlgoodies_window_bottom_close'){
			divs[no].id = 'bottom_close'+divCounter;
			divs[no].onclick = hideWindow;
		}
		if(divs[no].className=='dhtmlgoodies_window_bottom'){
			divs[no].style.zIndex = 1000;
			if(MSIEWIN)divs[no].style.height = '0px';
		}
		if(divs[no].className=='dhtmlgoodies_windowMiddle' || divs[no].className=='dhtmlgoodies_window_bottom'){
			divs[no].style.zIndex = 1000;
		}
		if(divs[no].className=='dhtmlgoodies_window_top'){
			divs[no].onmousedown = initMove;
			divs[no].id = 'top_bar'+divCounter;
			divs[no].style.zIndex = 1000;
		}
		if(divs[no].className=='dhtmlgoodies_windowContent'){
			divs[no].id = 'windowContent'+divCounter;
			divs[no].style.zIndex = 1000;
			if(windowSizeArray[divCounter - 1]){
				divs[no].style.height = windowSizeArray[divCounter - 1][1] + 'px';
				divs[no].parentNode.parentNode.style.width = windowSizeArray[divCounter - 1][0] + 'px';

				if(MSIEWIN){
					iframe.style.width = (windowSizeArray[divCounter - 1][0]) + 'px';
					iframe.style.height = (windowSizeArray[divCounter - 1][1]+35) + 'px';
				}
			}
		}
	}	

	if(!divObj){
		document.body.onmouseup = stopMove;	
		document.body.onmousemove = moveWindow;
		document.body.ondragstart = cancelEvent;
		document.body.onselectstart = cancelEvent;
	}

	return divCounter;
}

function createNewWindow(name,width,height,left,top,imgPath)
{
	var div = document.createElement('DIV');
	div.name = name;
	div.className='dhtmlgoodies_window';
	document.body.appendChild(div);

	var topDiv = document.createElement('DIV');
	topDiv.className='dhtmlgoodies_window_top';
	div.appendChild(topDiv);

	var img = document.createElement('IMG');
	img.src = imgPath + 'top_left.gif';
	img.align='left';
	topDiv.appendChild(img);

	var img = document.createElement('IMG');
	img.src = imgPath + 'top_center.gif';
	img.className='topCenterImage';
	topDiv.appendChild(img);

	var buttonDiv = document.createElement('DIV');
	buttonDiv.className='top_buttons';
	topDiv.appendChild(buttonDiv);

	var img = document.createElement('IMG');
	img.src = imgPath + 'minimize.gif';
	img.className='minimizeButton';
	buttonDiv.appendChild(img);	

	var img = document.createElement('IMG');
	img.src = imgPath + 'close.gif';
	img.className='closeButton';
	buttonDiv.appendChild(img);	

	var img = document.createElement('IMG');
	img.src = imgPath + 'top_right.gif';
	buttonDiv.appendChild(img);		

	var middleDiv = document.createElement('DIV');
	middleDiv.className='dhtmlgoodies_windowMiddle';
	div.appendChild(middleDiv);

	var contentDiv = document.createElement('DIV');
	contentDiv.className='dhtmlgoodies_windowContent';
	middleDiv.appendChild(contentDiv);

	var bottomDiv = document.createElement('DIV');
	bottomDiv.className='dhtmlgoodies_window_bottom';
	div.appendChild(bottomDiv);
	
	var bottomCloseDiv = document.createElement('DIV');
	bottomCloseDiv.className='dhtmlgoodies_window_bottom_close';
	bottomCloseDiv.innerHTML='&lt; Close &gt;';
	bottomDiv.appendChild(bottomCloseDiv);

	var img = document.createElement('IMG');
	img.src = imgPath + 'bottom_right.gif';
	img.className='resizeImage';
	bottomDiv.appendChild(img);		

	windowSizeArray[windowSizeArray.length] = [width,height];
	windowPositionArray[windowPositionArray.length] = [left,top];

	return initWindows(false,div);
}

function showAjaxContent(ajaxIndex,windowId)
{
	document.getElementById('windowContent' + windowId).innerHTML = ajaxObjects[ajaxIndex].response;			
}

function addContentFromUrl(url,windowId)
{
	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = url;	// Specifying which file to get
	ajaxObjects[ajaxIndex].onCompletion = function(){ showAjaxContent(ajaxIndex,windowId); };	// Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function			
}

function popupWindow(e,name,width,height,left,leftRel,top,topRel,imgPath,urlToExternalFile)
{	
	if (!showWindow(name))
	{	
		if(document.all)e=event;
		if(e.target)targ=e.target;
		else targ=e.srcElement;
		
		if(!left)
			var leftPos=findPosX(targ);
		else
		{
			if(leftRel)var leftPos=findPosX(targ) + left;
			else var leftPos=left;	
		}
		if(!top)
			var topPos=findPosY(targ);
		else
		{
			if(topRel)var topPos=findPosY(targ) + top;
			else var topPos=top;	
		}

		var divId = createNewWindow(name,width,height,leftPos,topPos,imgPath);
		document.getElementById('windowContent' + divId).innerHTML = '<br/><img src="' + imgPath + 'loading_small.gif" style="border-width:0px;"/> Please wait while we load the content...';
		if(urlToExternalFile)addContentFromUrl(urlToExternalFile,divId);	// Add content from external file
	}
}

function showWindow(name)
{
	var divs = document.getElementsByTagName('DIV');

	for(var no=0;no<divs.length;no++){
		if(divs[no].name==name){
			divs[no].style.display='inline';
			return true
		}
	}
	return false;
}

window.onload = initWindows;