//add regex tests here
var currencyRegex = /^\d+\.\d{2}$/;
var numberRegex = /^\d+$/;
var emailRegex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
var mixedNumberRegex = /^[\d -_x|ext]+$/;


// semi-generic in-line form field validation.  Add Regex above to increase the usefulness of this function
// call function with regex of item you wish to test
// example:  <input type=text name=something value=something_else onBlur="javascript:fnValidateField(this.id, currencyRegex)" />
function fnValidateField(fieldId,regex) 
{
	var errMsg = "";
	if (regex == currencyRegex)
		errMsg = "Please ensure the value you have entered is a currency format (x.xx)";
	if (regex == numberRegex)
		errMsg = "Please ensure the value you have entered is a number";
	if (regex == mixedNumberRegex)
		errMsg = "Please ensure the value you have entered is a number, hyphen or 'x' for extension";
	if (regex == emailRegex)
		errMsg = "Please ensure the value you have entered is a valid email address";

	if (fieldId != null && fieldId != "undefined" && MM_findObj(fieldId) != null)
	{
		field = MM_findObj(fieldId).value;
		if(field.length > 0 && !field.match(regex)) 
		{
			alert(errMsg);
			MM_findObj(fieldId).focus();
			MM_findObj(fieldId).select();
		}
	}
}

function resizeIframeToFitContent(iframe) {
    // This function resizes an IFrame object
    // to fit its content.
    // The IFrame tag must have a unique ID attribute.
    iframe.height = document.frames[iframe.id].document.body.scrollHeight;
}


//generic form validation
// o - the form object
// frmFields - new array of field ID's to check--> 'name|title|phone|email|password' 
// tests for a standard "non-date" date (1900-01-01' as well as a default "select option" option (-1) 
function fnVerify(o,frmFields)
{
	for(var i=0; i < frmFields.length; i++ )
	{
		if (document.getElementById(frmFields[i]) != null )
		{
			val = Trim(document.getElementById(frmFields[i]).value);
			//if (val.length == 0) // check only for empty value
			if (val.length == 0 || val =='1900-01-01' || val == '-1')  // checks for empty, non-selected-date, non-selected SELECT option
			{
				alert("please enter a value for " + document.getElementById('lbl_'+frmFields[i]).innerHTML);
				document.getElementById('lbl_'+frmFields[i]).style.color='red';
				document.getElementById(frmFields[i]).style.background='#ffffcc';
				document.getElementById(frmFields[i]).focus();
				return false;
			}
			else
			{
				document.getElementById('lbl_'+frmFields[i]).style.color='#000000';
				document.getElementById(frmFields[i]).style.background='#ffffff';
			}
		}
	}
}


// check for only numeric characters
function IsNumeric(strString)
{	
	var val = strString.value.toString();
	var strValidChars = "0123456789.";
	var strChar;
	var blnResult = true;

	if (strString.length == 0) return false;
	
	//  test strString consists of valid characters listed above
	for (i = 0; i < val.length && blnResult == true; i++)
	{
		strChar = val.charAt(i);
		if (strValidChars.indexOf(strChar) == -1)
		{
			alert("value must be a number");
			document.getElementById(strString.id).select();
			document.getElementById(strString.id).focus();			
			return false;
		}
	}
	return true;
	}

function onlyNumeric(strString)
{
	var newString = strString.value.replace(/[^\d]/g,'');
	if (newString.length > 0) 
	{
		return newString;
	}
}

/// JavaScript method to check to see if an input value is a whole number or not
function isWholeNumber(inputStr) 
{
	str = inputStr.value.toString();
	
	for(var i=0; i < str.length; i++)
	{
		var curValue = str.charAt(i);
		
		if(curValue < "0" || curValue > "9")
		{
			alert("value must be a whole number");
			document.getElementById(inputStr.id).select();
			document.getElementById(inputStr.id).focus();			
		}
	}
	return true;
}



//trims any string of white spaces
function Trim(sInString) {
  sInString = sInString.replace( /^\s+/g, "" );// strip leading
  return sInString.replace( /\s+$/g, "" );// strip trailing
}

function fnCheckTextArea(obj, btn, limit)
{
	txt=Trim(obj.value);
	
	if(txt.length > 5)
	{
		if (txt.length > limit)
		{
			alert("Please limit your response to "+limit+" characters or less");
			obj.value = (obj.value.substring(0,limit));
		}
		else
		{
			if(document.getElementById(btn) != null)
			{
					document.getElementById(btn).disabled = false;
			}
		}
	}
}


//show or hide divs
function toggleNotified(cObj, tTable, sOpenText,sClosedText)
{
	//hide all open divs
   	if (document.getElementById('contentArea') != null)
	{
		var contentDivs = document.getElementById('contentArea').getElementsByTagName("div");
		var contentAnchors = document.getElementById('contentArea').getElementsByTagName("a");
		for (var i = 0; i < contentDivs.length; i++)
		{
			if(contentDivs[i].id != tTable)
			{
				contentDivs[i].style.display = "none";
			}
		}
	/*
		for (var i = 0; i < contentAnchors.length; i++)
		{
			if(contentAnchors[i].id != tTable)
			{
				contentAnchors[i].style.fontWeight = "normal";
			}
		}
	*/	
	}
	
   if (document.getElementById(tTable).style.display == "none") 
   {
	  document.getElementById(tTable).style.display = "block";
      cObj.innerHTML = sOpenText;
   }
   else 
   {
      document.getElementById(tTable).style.display = "none";
      cObj.innerHTML = sClosedText;
   }	
}


function fnShow(id)
{
	if (document.getElementById(id).style.display == "none") 
	{
		document.getElementById(id).style.display = "block";
	}
	else 
	{
		document.getElementById(id).style.display = "none";
	}	
}

//confirm delete
//input - the name of what you are confirming
function confirmDelete(sItem) {
	if (confirm(sItem)==true) {
	return true;
	} else {
		return false;
	}	
}

function checkEmail(myForm) {
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(myForm.email.value)){
		return(true)
	}else{
		alert("Invalid E-mail Address! Please re-enter.")
		return (false)
	}
}


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;
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}

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;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; 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];}
}
