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_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_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_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_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];}
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

//###################################################################
//BEGIN : Utilities Functions
//###################################################################
// JavaScript Document
var errorList 	=  "";
var errorFocus	= "";

function buildError(errorMsg, errorElem) {
	errorList 	= (errorList == "") ? errorMsg : errorList + "\n" + errorMsg;
	
	if(errorFocus == "") {
		errorFocus = errorElem;
	}
}

function errorFound(docForm) {
	if(errorList != "") {
		alert("The following error(s) occured:\n" + errorList);
		errorList = "";
		
		if(errorFocus != "") {			
			docForm[errorFocus].focus();
			if(docForm[errorFocus].value != "") {
				if(docForm[errorFocus].type == "text" || docForm[errorFocus].type == "password" || docForm[errorFocus].type == "textarea") {
					docForm[errorFocus].select();
				}
			}
			errorFocus = "";
		}	

		return true;
	}
	else {
		return false;
	}
}

function openWin (URL, winName, width, height)
{
	if(!width && !height) {
		width  = 520;
		height = 500;
	}
	
	var str;
	str  = "height=" + height + ",innerHeight=" + height;
	str += ",width=" + width + ",innerWidth=" + width;
	if (window.screen) {
		var ah = screen.availHeight - 30;
		var aw = screen.availWidth - 10;
		
		var xc = (aw - width) / 2;
		var yc = (ah - height) / 2;
		
		str += ",left=" + xc + ",screenX=" + xc;
		str += ",top=" + yc + ",screenY=" + yc;
		str += "resizable=no,scrollbars=yes,status=no,menubar=no,toolbar=no";
	}
  	window.open (URL, winName, str);
}

// chkBoxAll ( BOOLEAN chk [, OBJECT tg_form, STRING elemName ] )
// chkBoxAll( true, self.document.frmMailList, 'chkMsgID')
function chkBoxAll (chk) {
	if (chkBoxAll.arguments.length >= 2 )
    	{ var tg_form = chkBoxAll.arguments[1]; }
	else
		{ var tg_form = document.forms[0]; }

	for (var i=0; i<tg_form.elements.length; i++ )
	{
		var elem = tg_form.elements[i];
        if ( elem.type != "checkbox" ) { continue; }
		        
		if ( chkBoxAll.arguments.length >= 3 )
        {
        	var elemName = chkBoxAll.arguments[2];
            if ( elem.name == elemName ) { elem.checked = chk; }
		}
        else
        	{ elem.checked = chk; }
	}
}

// chkBoxCount ( [ OBJECT tg_form, STRING elemName ] )
// chkBoxCount ( self.document.frmMailList, 'chkMsgID')
function chkBoxCount()
{
	var chkCount = 0;

	if ( chkBoxCount.arguments.length >= 1 )
    	{ var tg_form = chkBoxCount.arguments[0]; }
	else
    	{ var tg_form = document.forms[0]; }

	for ( var i=0; i<tg_form.elements.length; i++ ) {
		var elem = tg_form.elements[i];
        if ( elem.type != "checkbox" ) { continue; }

        if ( chkBoxCount.arguments.length >= 2 )
        {
        	var elemName = chkBoxCount.arguments[1];
            if ( elem.name == elemName )
            	{ if ( elem.checked ) { chkCount += 1; } }
		}
        else
        	{ if ( elem.checked ) { chkCount += 1; } }
	}

	return chkCount;
}

// chkBoxValue ( [ OBJECT tg_form, STRING elemName ] )
// chkBoxValue ( self.document.frmMailList, 'chkMsgID')
function chkBoxValue()
{
	var chkValue = "";

	if ( chkBoxValue.arguments.length >= 1 )
    	{ var tg_form = chkBoxValue.arguments[0]; }
	else
    	{ var tg_form = document.forms[0]; }

	for ( var i=0; i<tg_form.elements.length; i++ ) {
		var elem = tg_form.elements[i];
        if ( elem.type != "checkbox" ) { continue; }
		
        if ( chkBoxValue.arguments.length >= 2 ) {
        	var elemName = chkBoxValue.arguments[1];
            if ( elem.name == elemName )
            {
            	if ( elem.checked )
                	{ chkValue = (chkValue==null || chkValue.length==0 || chkValue=="")? elem.value:chkValue+","+elem.value; }
			}
		}
        else {
			if ( elem.checked )
            	{ chkValue = (chkValue==null || chkValue.length==0 || chkValue=="")? elem.value:chkValue+","+elem.value; }
		}
	}

	return chkValue;
}


function checkTextEntry(field) {
	var valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789()'@-_,./?!&-+=[]|\r\n "
	var ok = "yes";
	var temp;
	
	for (var i=0; i<field.value.length; i++)
	{
		temp = "" + field.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") {
			field.value = field.value.substring(0, field.value.length - 1);
			field.focus();
		}
	}	
} 

function checkMsgEntry(field) {
	var valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789()'@-_,./?!&-+=[]|;:^<>\r\n "
	var ok = "yes";
	var temp;
	
	for (var i=0; i<field.value.length; i++)
	{
		temp = "" + field.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") {
			field.value = field.value.substring(0, field.value.length - 1);
			field.focus();
		}
	}	
}

function checkAlphaEmail(field) {
	var valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@-_."
	var ok = "yes";
	var temp;
	
	for (var i=0; i<field.value.length; i++)
	{
		temp = "" + field.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") {
			field.value = field.value.substring(0, field.value.length - 1);
			field.focus();
		}
	}	
} 

function checkICPassport(field) {
	var valid = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
	var ok = "yes";
	var temp;
	
	for (var i=0; i<field.value.length; i++)
	{
		temp = "" + field.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") {
			field.value = field.value.substring(0, field.value.length - 1);
			field.focus();
		}
	}	
} 

function checkAlphaName(field) {
	var valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/.' "
	var ok = "yes";
	var temp;
	
	for (var i=0; i<field.value.length; i++)
	{
		temp = "" + field.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") {
			field.value = field.value.substring(0, field.value.length - 1);
			field.focus();
		}
	}		
} 

function checkAlpha(field) {
	var valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789()'@-_/,.\r\n "
	var ok = "yes";
	var temp;
	
	for (var i=0; i<field.value.length; i++)
	{
		temp = "" + field.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") {
			field.value = field.value.substring(0, field.value.length - 1);
			field.focus();
		}
	}	
} 

function checkURL(field) {
	var valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:/-_[]().? "
	var ok = "yes";
	var temp;
	
	for (var i=0; i<field.value.length; i++)
	{
		temp = "" + field.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") {
			field.value = field.value.substring(0, field.value.length - 1);
			field.focus();
		}
	}		
} 

function checkUsername(field) {
	var valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789()-_."
	var ok = "yes";
	var temp;
	
	for (var i=0; i<field.value.length; i++)
	{
		temp = "" + field.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") {
			field.value = field.value.substring(0, field.value.length - 1);
			field.focus();
		}
	}		
} 

function checkNum(field) {
	var valid = "0123456789"
	var ok = "yes";
	var temp;
	
	for (var i=0; i<field.value.length; i++)
	{
		temp = "" + field.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") {
			field.value = field.value.substring(0, field.value.length - 1);
			field.focus();
		}
	}	
} 

function upperCase(frmObj) {
	frmObj.value = frmObj.value.toUpperCase();
}

function lowerCase(frmObj) {
	frmObj.value = frmObj.value.toLowerCase();
}

function textCounter(field, countfield, maxlimit) {
	if (field.value.length > maxlimit) // if too long...trim it!
		field.value = field.value.substring(0, maxlimit);
		// otherwise, update 'characters left' counter
	else 
		countfield.value = maxlimit - field.value.length;
}

function isValidEmail(strEmail)
{
	var x = strEmail;
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(x)) {
		return true;
	}
	else {
		return false;
	}
}
//###################################################################
//END	: Utilities Functions
//###################################################################
