/**
 * sharedfunc 31AUG2006 Version 1.0
 * Anthony Hill, August 2006
 * Copyright (c) 2006-2007 Envision Multimedia
 *
 * Description: Library of common javascript methods used 
 *				throughout the system.  All methods are 
 *				listed in Alphabetic order, and for the sake 
 *				of keeping this code maintainable, Randy, 
 *				let's keep it that way.
 * 
 */
var gBrowserVer;
var gDivGrabbed=false;
var gMoveDiv;
var gDebug;
var gPreviousX=0; 
var gPreviousY=0;
var ob;



// Constants //
var C_DEBUGDIVNAME="dvDebug"; 
var C_CONTAINERNAME="dvContainer";
var C_POPUPLAYER=106; 
var C_PROTECTLAYER=105;
var C_MESSAGELAYER=99;
var C_ERRORDIV="dvErrorBlock";
var C_ERRORFULLMESSAGE="dvFullErrorMessage";
var C_ERRORFLAG="isError";
var C_DISPLAYOFF="none";
var C_DISPLAYON="";
// End Constants //


/** 
 * ========================================================
 *		AddExtra(chkCntrl)
 * ========================================================
 */
function AddExtra(chkCntrl){
	var cntrl;
	
	try{
		cntrl = document.getElementById("trExtraList_1");
		cntrl.innerHTML = "";
		
		//if(chkCntrl.checked){
		//	cntrl.innerHTML += "<li>" + chkCntrl.value + "</li>";
		//}
		
		var cntrl1 = document.getElementById("chkExtra1");
		if(cntrl1.checked){
			cntrl.innerHTML += "<li>" + cntrl1.value + "</li>";
		}
		
		
		var cntrl2 = document.getElementById("chkExtra2");
		if(cntrl2.checked){
			cntrl.innerHTML += "<li>" + cntrl2.value + "</li>";
		}
		
	}
	catch(ex){
		alert(ex.toString());
	}
}


/** 
 * ========================================================
 *		centerOnScreen(obj)
 * ========================================================
 * This method will center the object passed in, a div, on 
 * on the screen.
 * ======================================================== 
 * Parameters: 
 *		obj - the div passed in as an object
 * ========================================================
 */
/**function centerOnScreen(obj) {
	var winl = screen.width/2;
	var wint = screen.height/2;
	if (winl < 0) winl = 0;
	obj.style.top = 180; 
	if (winl > 0) obj.style.left = winl - (obj.offsetWidth / 2);
}*/


/** 
 * ========================================================
 *		ChangeParentLocation(location)
 * ========================================================
 * This method will open the given URL in the parent window
 * ======================================================== 
 * Parameters: 
 * ========================================================
 */
function ChangeParentLocation(location){
	opener.location = location;
	window.close();
}


/** 
 * ========================================================
 *		displayErrors()
 * ========================================================
 * If an error occured that must be written to the screen
 * we use this function to find it, and display it.
 * ========================================================
 */
function displayErrors(){
	var cntrl;
	var errorCntrl; 
	
	cntrl = document.getElementById(C_ERRORFLAG); 
	errorCntrl = document.getElementById(C_ERRORDIV);
	
	if(cntrl.value.toUpperCase()=="TRUE"){
		showControl(C_ERRORDIV, true, true);
		errorCntrl.style.zIndex=C_MESSAGELAYER;
	}
	else { 
		showControl(C_ERRORDIV, false, true);
		errorCntrl.style.display="NONE";
	}
}


/** 
 * ========================================================
 *		divShim(theDiv,theShim)
 * ========================================================
 * This method will shim the popup div with an iframe 
 * control, which will keep controls on lower layers from 
 * displaying through the popup
 * ========================================================
 */
function divShim(theDiv,theShim)
{
       theDiv.style.zIndex = 999;
       theShim.style.width = theDiv.offsetWidth;
       theShim.style.height = theDiv.offsetHeight;
       theShim.style.top = theDiv.offsetTop;
       theShim.style.left = theDiv.offsetLeft;
       theShim.style.zIndex = theDiv.style.zIndex - 1;
       theShim.style.display = "block";
}


/** 
 * ========================================================
 *		findPos(obj)
 * ========================================================
 */
function findPos(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];
}



/** 
 * ========================================================
 *		FlipTabs(selectedTabID)
 * ========================================================
 * Flip green tabs to their gray equivalent
 * ========================================================
 */
function FlipTabs(selectedTabID){
	var numTabs = document.getElementById("hidNumTabs").value;
	var cntrl;
	var i;
	
	try{
		for (i=1; i<numTabs+1; i++){
			if(i!=selectedTabID){
				try{
					cntrl = document.getElementById("tdMenuItemGreen_" + i.toString());
					cntrl.style.display = displayOff;
				}
				catch(green_ex){}
			}
		}
		
		for (i=1; i<numTabs+1; i++){
			if(i!=selectedTabID){
				try{
					cntrl = document.getElementById("tdMenuItemGray_" + i.toString());
					cntrl.style.display = displayOn;
				}
				catch(gray_ex){}
			}
		}
	}
	catch(ex){
		// eventual error handling
		alert(ex.toString());
	}
}


/** 
 * ========================================================
 *		getBrowserVersion()
 * ========================================================
 */
function getBrowserVersion(){
	var browserAppName = navigator.appName;
	var browserAppVersion = navigator.appVersion;
	var cntrl = document.getElementById("dvBrowserVersion"); 
	var startPos;
	var versionHTML="";
	
	
	if(browserAppName == "Microsoft Internet Explorer"){
		browserAppName = "IE";
	}
	
	versionHTML="You're using " + navigator.appName + " (" + browserAppVersion + ")";
	cntrl.innerHTML = versionHTML;
	
	gBrowserVer=browserAppName.toUpperCase();
}


/** 
 * ========================================================
 *		HideUnselectedContent(selectedTabID)
 * ========================================================
 * Hides all of the unselected content areas
 * ========================================================
 */		

function HideUnselectedContent(selectedTabID){
	var numTabs = document.getElementById("hidNumTabs").value;
	var cntrl;
	
	try{
		for (var i=1; i<numTabs+1; i++){
			if(i!=selectedTabID){
				cntrl = document.getElementById("dvMenuItem_" + i.toString());
				cntrl.style.display = displayOff;
			}
		}
	}
	catch(ex){
		// eventual error handling
	}
}


/** 
 * ========================================================
 *		MM_findObj(n, d)
 * ========================================================
 */
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}


/** 
 * ========================================================
 *		MM_swapImage(n, d)
 * ========================================================
 */
function MM_swapImage() { //v3.0
	var i,j=0,x,a=MM_swapImage.arguments; 
	try{
		document.MM_sr=new Array; 
		for(i=0;i<(a.length-2);i+=3){
			if ((x=MM_findObj(a[i]))!=null){
				document.MM_sr[j++]=x; 
				if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];
			}
		}
	}
	catch(e){
		alert(e);
	}
}


/** 
 * ========================================================
 *		MM_swapImgRestore()
 * ========================================================
 */
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}


/** 
 * ========================================================
 *		moveDiv(divName)
 * ========================================================
 */
function moveDiv(divName) { 
	var divCntrl;
	var mouseX, mouseY;
	var moveDifX, moveDifY;
	var cntrlLeft, cntrlTop;
	var X,Y;
	
	try{
		divCntrl=document.getElementById(divName);
		
		mouseX=window.event.clientX; 
		mouseY=window.event.clientY;
		
		if(gDivGrabbed){
			/**moveDifX=gPreviousX - mouseX;
			moveDifY=gPreviousY - mouseY;
		
			cntrlTop = divCntrl.style.top.replace("px", "");
			cntrlLeft = divCntrl.style.left.replace("px", "");
			
			divCntrl.style.left = (cntrlLeft + moveDifX);
			divCntrl.style.top = (cntrlTop + moveDifY);
			*/
			X=event.offsetX;
			Y=event.offsetY;
			divCntrl.pixelLeft = event.clientX-X + document.body.scrollLeft;
			divCntrl.pixelTop = event.clientY-Y + document.body.scrollTop;
		}
	}
	catch(ex){
		alert(ex);
	}
}


/** 
 * ========================================================
 *		positionNavigation()
 * ========================================================
 */
function positionNavigation() {
	var navCntrl = document.getElementById("dvNavigation"); 
	var anchorImage = document.getElementById("header_r2_c1");
	var arPos = findPos(anchorImage);
	
	navCntrl.style.left = arPos[0] + 10;
	navCntrl.style.top = arPos[1] + 15;
	navCntrl.style.display="";
}


/** 
 * ========================================================
 *		releaseDiv(divName)
 * ========================================================
 * Will set the grab flag for div to false
 * ========================================================
 */
 function releaseDiv(divName){
	var cntrl;
	try{
		// Do this just to make sure we don't set the grabbed flag
		// and the div name passed in is an invalid object.
		cntrl = document.getElementById(divName);
		gDivGrabbed=false;
		debugWrite("releaseDiv()", "gDivGrabbed=" + gDivGrabbed);
	}
	catch(ex){
		//ERROR HANDLING
		
	}
 }


/** 
 * ========================================================
 *		showControl(obj)
 * ========================================================
 */
/**function showControl(objName, visible, isProtected, cos) {
	var cntrl; 
	var protectCntrl;
	
	try{
		cntrl = document.getElementById(objName);
		protectCntrl = document.getElementById("dvProtect");
		if(visible){
			cntrl.style.zIndex=C_POPUPLAYER;
			cntrl.style.visibility="visible";
			cntrl.style.display="";
			if(cos){
				centerOnScreen(cntrl);
			}
		}
		else{
			cntrl.style.display="NONE";
			cntrl.style.visibility="HIDDEN";
		}
		if (isProtected){
			protectCntrl.style.zIndex=C_PROTECTLAYER;
			protectCntrl.style.display=cntrl.style.display;
			protectCntrl.style.height = document.body.clientHeight;
		}
	}
	catch(e){alert(e);}
}
*/

/** 
 * ========================================================
 *		ShowExtras(selectedID)
 * ========================================================
 */
function ShowExtras(selectedID){
	var cntrl;
	var cntrl_img;
	
	if(selectedID > 0){	
		try{
			cntrl = document.getElementById("trExtras_"	+ selectedID.toString());
			cntrl_img = document.getElementById("imgMenuExtra_" + selectedID.toString());
			
			if(cntrl.style.display == displayOff){
				cntrl.style.display = displayOn;
				cntrl_img.src = "images/arrow_selected.gif";	
			}
			else{
				cntrl.style.display = displayOff;
				cntrl_img.src = "images/arrow_unselected.gif";
			}
		}
		catch(ex){
			alert(ex.toString());
		}
	}
}


/** 
 * ========================================================
 *		ShowOrderTotal()
 * ========================================================
 */
function ShowOrderTotal(){
	var strMsg="";
	var cntrl
	
	try{ 
		cntrl = document.getElementById("dvFinished");
		cntrl.style.display=displayOff;
		
		cntrl = document.getElementById("dvMenuOrderTotal");
		// Set the content area for the dvMenuOrderTotal to visible by
		// setting the display style property to nothing.
		cntrl.style.display=displayOn;
		
		HideUnselectedContent(0);
		FlipTabs(0);
	}
	catch(ex){
		alert(ex + " : " + strMsg);
	}
}


/** 
 * ========================================================
 *		ShowTab(selectedTabID)
 * ========================================================
 */
function ShowTab(selectedTabID){
	var strMsg="";
	var cntrl;
	
	try{ 
		cntrl = document.getElementById("dvFinished");
		cntrl.style.display=displayOn;
		
		// Set the selected tab to it's green equivalent
		cntrl = document.getElementById("tdMenuItemGreen_" + selectedTabID.toString());
		cntrl.style.display=displayOn;
		
		cntrl = document.getElementById("tdMenuItemGray_" + selectedTabID.toString());
		cntrl.style.display=C_DISPLAYOFF;
		
		// Set the content area for the selected tab to visible by setting 
		// the display style property to nothing.
		cntrl = document.getElementById("dvMenuItem_" + selectedTabID.toString());
		cntrl.style.display=C_DISPLAYON;
		
		// Hide the order total stuff
		cntrl = document.getElementById("dvMenuOrderTotal");
		cntrl.style.display=displayOff;
		
		FlipTabs(selectedTabID);
		HideUnselectedContent(selectedTabID);
	}
	catch(ex){
		alert(ex + " : " + strMsg);
	}
}

/** 
 * ========================================================
 *		WindowLoad()
 * ========================================================
 */
function WindowLoad(){
	// Browser Version
	getBrowserVersion();
	
	// Position controls
	positionNavigation();	
	setDebugStatus();
	displayErrors();
}


/** 
 * ========================================================
 *		WindowResize()
 * ========================================================
 */
function WindowResize(){
	positionNavigation();
}


function SetPermissions(intPageID){
	var cntrlUserList = document.getElementById("hidPermissionList");
	window.open("./PagePermissions.aspx?pageid=" + intPageID.toString(), "UserList", "height=400, width=500, status=yes, toolbar=no, scrolling=no, resizeable=no");
}		
		

		

 