/* kick user to new mind source code browser upgrade page if using outdated browser */
if(!document.getElementById) {
	window.location.href='http://source.newmind.ca/browserupgrade.php';
}

/* fieldFocus -- set focus to target field */
function fieldFocus(id) {
	document.getElementById(id).focus();
	document.getElementById(id).style.background="#FFFF99";
}

/* MM_jumpMenu -- select list jump to link */
function MM_jumpMenu(targ,selObj,restore) {
	eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  	if (restore) selObj.selectedIndex=0;
}

/* showLayer -- shows/hides target layer; changes btton text (e.g. from "?" to "Close Box") */
function showLayer(btnName, btnTxt, layerName) {
	
	button = document.getElementById(btnName);
	layer = document.getElementById(layerName);
	
	/* hide layer */
	if(layer.style.display == 'block') { 
		layer.style.display = 'none'; 
		button.value = btnTxt; 
	}
	/* else, show layer */
	else { 
		layer.style.display = 'block'; 
		button.value = 'Close Box'; 
	}	
}

/* confirmDelete -- confirm deletion of target item (e.g. a file, DB entry, etc.) */
function confirmDelete(target) {
	return (confirm("Are you sure you want to delete [" + target + "]? Warning! This operation cannot be undone!")) ? true : false;
}

/*
*************
DROPDOWN MENU METHODS
*************
*/
/* initialize global last layer shown var -- use to hide the last layer  */
lastLayer = "";
HideLayerTimer = null;

/* hide currently displayed nav layer on window resize */
window.onresize = hideLayer;
	
/* showDropDown -- shows target dropdown menu layer (hides previous, if exists) */
function showDropDown(layerName, imgName, layerCnt, showLayer) {
	//alert(layerName);

	/* set last layer = to layer name if not yet set */
	if(lastLayer == "") {
		lastLayer = layerName;
	} 
	
	/* set doc layer references */	
	docLast = document.getElementById(lastLayer).style;
	docCur = document.getElementById(layerName).style;
	
	/* show layer request */
	if(showLayer) {
	
		/* set menu x coordinate based on passed border image location (if not hide menu or 1st link request) */
		if(imgName != "" && imgName != "border1") {
		
			/* substract 1 from current layer # to align menu with right-edge of previous menu */
			layerCnt = layerCnt - 1;
			imgName = "border" + layerCnt;
			img = document.getElementById(imgName);
			
			/* loop through image's parent offset x's to determine image position */
			x = img.offsetLeft;
			while ((img = img.offsetParent) != null) { 
				x += img.offsetLeft; 
			}
		
			/* set image postion based on calculated image offsetX value */
			img_pos = x; 
			sw = -12;	
		}
		/* set base layer position based on available screen width */
		else {
			sw = getScreenWidth() + 118;
			img_pos = 11;	
		}
	
		/* offset screen width base layer by passed link text length */
		sw = sw + img_pos;
		sw = sw + 12;
		
		/* hide last layer and display current dropdown */
		docLast.display = 'none';
		docCur.display = 'block'; 
		docCur.top = 170 + 'px';
		docCur.left= sw + 'px'; 
	}
	/* hide layer request */
	else {
		docLast.display = 'none';
	}

	/* set lastLayer for next user click */
	lastLayer = layerName; 
} 

/* showHideDropDown -- shows or hides target dropdown menu layer */
function showHideDropDown(layer_name) {
	var layer = document.getElementById(layer_name);
	if(layer.style.display=='block') {
		layer.style.display='none';
	}
	else {
		layer.style.display='block';
	}
}

/* hideLayer */
function hideLayer(cnt) {
	var layer = "navLayer" + cnt;
	if(document.getElementById(layer)) {
		showDropDown(layer, 0, 0);
	}
}

/* clearTimer -- clears the hide menu timer */
function clearTimer() {
	if(HideLayerTimer) {
		clearTimeout(HideLayerTimer);
	}
	HideLayerTimer = null;
}

/* startTimer -- starts hide menu timer */
function startTimer(cnt) {
	HideLayerTimer = setTimeout("hideLayer(" + cnt + ")", 3000); /* 1500 */
}

/* getScreenWidth -- determine dropdown menu layer offset based on screen width */
function getScreenWidth() {
	sw = window.innerWidth != null? window.innerWidth: document.body != null? document.body.clientWidth:null;
	sw = (sw <= 780) ? 2 : (sw - 780) / 2 + 6;
	//alert(sw);
	return sw;
}
/*
*************
END DROPDOWN MENU METHODS
*************
*/


/*
*************
VALIDATION METHODS
*************
*/
/* checkForm -- ensures required formfields have been filled out */
function checkForm(form_name, requiredFields) { 

	form = document.forms[form_name];
	required = requiredFields.split(','); /* set required fields comma delimited string to array */
	count = required.length;
	loop = 0;
	
	for (var j = 0; j < count; j++) { 
		for (var i = 0; i < form.elements.length; i++) {
			
			/* set replacement required field name if pipe delimiter in passed required field string */
			if(required[loop].indexOf("|") != -1) {
				list = required[loop].split('|');
				fieldName = list[1];
				requiredName = list[0];
			}
			/* else, set display name to required field name */
			else {
				fieldName = required[loop];
				requiredName = fieldName;
			}
	
			/* alert required field if blank and NOT disabled */
			if (form.elements[i].name == requiredName) {
				if (form.elements[i].value == "" && form.elements[i].disabled != 1) {
					fieldName = fieldName.replace("_", " ");
					fieldName = fieldName.toUpperCase( );
					alert("The " + fieldName + " field has been left blank.\n\nThis is a required field -- it cannot be left blank.");
					form.elements[i].focus();
					form.elements[i].style.background="#FFFF99";
			    	return false;
				}
			}
		}
		loop++;	
	}
	return true;
}

/* validateEmail -- check if valid email format entered */
function validateEmail(id) {
	email = document.getElementById(id).value;
	if((email.indexOf('@') < 0) || ((email.charAt(email.length-4) != '.') && (email.charAt(email.length-3) != '.'))) {
		document.getElementById(id).focus();
		alert('Please Enter a Valid Email Address (e.g. jdoe@aol.com)');
		document.getElementById(id).style.background="#FFFF99";
	}
}

/* isNumeric -- return boolean */
function isNumeric(val, extraChars) {
	
	/* set allowed characters to numbers by default */
	var validChars = "0123456789";
	
	/* append extra characters if exist (e.g. if phone field, we might want to allow ".()-" characters) */
	if(extraChars) {
		validChars += extraChars;
	}
	
	var IsNumber = true;
	for(i = 0; i < val.length && IsNumber == true; i++) {
		Char = val.charAt(i); 
		if(validChars.indexOf(Char) == -1) {
			IsNumber = false;
		}
	}
	return IsNumber;   
}
/*
*************
END VALIDATION METHODS
*************
*/