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_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_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_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 mmLoadMenus() {
  if (window.mm_menu_1102222743_0) return;
  window.mm_menu_1102222743_0 = new Menu("root",262,17,"Verdana, Arial, Helvetica, sans-serif",11,"#ffffff","#ffcc66","#2E5A9C","#2D64A2","left","middle",3,1,500,-5,7,true,false,true,0,true,true);
  mm_menu_1102222743_0.addMenuItem("Dark&nbsp;Glow&nbsp;Photoluminescent&nbsp;Systems","window.open('products_darkglow.asp', '_self');");
  mm_menu_1102222743_0.addMenuItem("Workplace&nbsp;Safety&nbsp;Signs&nbsp;-&nbsp;Customised","window.open('products_workplace.asp', '_self');");
  mm_menu_1102222743_0.addMenuItem("Pipe&nbsp;Identification&nbsp;Systems&nbsp;-&nbsp;Customised","window.open('products_pipesystems.asp', '_self');");
  mm_menu_1102222743_0.addMenuItem("ISPS&nbsp;Code&nbsp;-&nbsp;Security&nbsp;Signs,&nbsp;Notices&nbsp;&amp;&nbsp;Plans","window.open('products_ispscode.asp', '_self');");
   mm_menu_1102222743_0.hideOnMouseOut=true;
   mm_menu_1102222743_0.menuBorder=0;
   mm_menu_1102222743_0.menuLiteBgColor='#7e9cd6';
   mm_menu_1102222743_0.menuBorderBgColor='#7e9cd6';
   mm_menu_1102222743_0.bgColor='#6086cc';
  window.mm_menu_1102223728_1 = new Menu("root",380,17,"Verdana, Arial, Helvetica, sans-serif",11,"#ffffff","#ffcc66","#2E5A9C","#2D64A2","left","middle",3,1,500,-5,7,true,false,true,0,true,true);
  mm_menu_1102223728_1.addMenuItem("Fire&nbsp;Control&nbsp;&&nbsp;Safety&nbsp;Plan&nbsp;accordingly&nbsp;to&nbsp;IMO","window.open('pdf/Services/Safety%20Plan%20Designing.pdf', '_blank');");
  mm_menu_1102223728_1.addMenuItem("CAD&nbsp;documentation&nbsp;of&nbsp;engineering&nbsp;drawings&nbsp;and&nbsp;reconstruction","window.open('pdf/Services/Cad%20Documentation%20of%20Engineering%20&%20Drawings.pdf', '_blank');");
   mm_menu_1102223728_1.hideOnMouseOut=true;
   mm_menu_1102223728_1.menuBorder=0;
   mm_menu_1102223728_1.menuLiteBgColor='#7e9cd6';
   mm_menu_1102223728_1.menuBorderBgColor='#7e9cd6';
   mm_menu_1102223728_1.bgColor='#6086cc';

  mm_menu_1102223728_1.writeMenus();
} // mmLoadMenus()

//Filter characters on keypress. eg. onKeypress="return FilterChar(event.keyCode,'numbkdash')"
function Filterchar(varchar,vartype)
{
	if(vartype == "nospc" && varchar == 32) return false;//No space allow.
	if(vartype == "num") //Numeric only.
	{
		if(varchar < 48 || varchar > 57) return false;
	}
	if(vartype == "numspc") //Numeric only. Space allow.
	{
		if(varchar < 48 && varchar != 32 || varchar > 57) return false;
	}
	if(vartype == "numdash") //Numeric only. - allow.
	{
		if(varchar < 48 && varchar != 45 || varchar > 57) return false;
	}
	if(vartype == "numbkdash") //Numeric only. / allow.
	{
		if(varchar < 48 && varchar != 47 || varchar > 57) return false;
	}
	if(vartype == "alp") //Alphabet only.
	{
		if(varchar < 65 || varchar > 90 && varchar < 97 || varchar > 122) return false;
	}
	if(vartype == "alpspc") //Alphabet only. Space allow.
	{
		if(varchar < 65 && varchar != 32 || varchar > 90 && varchar < 97 && varchar != 32 || varchar > 122) return false;
	}
	if(vartype == "alpnum_s") //Alphabet(Small Cap only) and numeric only.
	{
		if(varchar < 48 || varchar > 57 && varchar < 97 || varchar > 122) return false;
	}
	if(vartype == "alpnum") //Alphabet and numeric only.
	{
		if(varchar < 48 || varchar > 57 && varchar < 65 || varchar > 90 && varchar < 97 || varchar > 122) return false;
	}
	if(vartype == "email") //Alphabet and numeric only. Allow @.
	{
		if(varchar < 48 && varchar != 45 && varchar != 46 || varchar > 57 && varchar < 65 && varchar != 64 || varchar > 90 && varchar < 97 && varchar != 95 || varchar > 122) return false;
	}
	return true;
}

function findObj(n, d) 
{
	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=findObj(n,d.layers[i].document);
  	if(!x && d.getElementById) x=d.getElementById(n); return x;
}

//return ValidateForm('Add Test,Name,va000*000')
//nn005*012 - Validate if not blank. v - validate, n - validate if field is not blank.
//vb000*000 - Validate for blank only.
//vn003*012 - Validate for numeric only. Min char length - 3. Max char length - 12.
//vz000*000&Field Name - Check for tally.
//vp000*000 - Validate for combo box. Must make a selection besides the initial selection.
//vc000*000
function ValidateForm(strValidate)
{
  	var args,counter,myExp,intCharCode
	
	counter = 0
	
	//Split string into arrays.
	args = strValidate.split(",");
	
 	
	// loop through all the selected fields.
  	for (i=1; i<(args.length); i+=2) 
  	{
		//Validate for blank.
		if(findObj(args[i]).value == "" && args[i+1].substring(1,2) != "p" && args[i+1].substring(1,2) != "c" && args[i+1].substring(0,1) != "n")
		{
			alert(args[i] + " is required!");
			findObj(args[i]).focus();
			return false
		}
		
		//Validate for alphabet only.
		if(args[i+1].substring(1,2) == "a" && findObj(args[i]).value != "")
		{
			for(z=0; z<findObj(args[i]).value.length; z++)
			{
				//Checking individual character for number.
				if(isNaN(parseInt(findObj(args[i]).value.charAt(z))) == false)
				{
					counter ++
				}
			}
			if(counter != 0) //Number detected.
			{
				alert(args[i] + " allows alphabets only!");
				findObj(args[i]).focus();
				return false
			}
		}
		//Validate for numeric only.
		if(args[i+1].substring(1,2) == "n" && findObj(args[i]).value != "")
		{
			for(z=0; z<findObj(args[i]).value.length; z++)
			{
				//Checking individual character for number.
				if(isNaN(parseInt(findObj(args[i]).value.charAt(z))) == true)
				{
					counter ++
				}
			}
			if(counter != 0) //Number detected.
			{
				alert(args[i] + " allows numeric only!");
				findObj(args[i]).focus();
				return false
			}
		}
		//Validate for alphanumeric with no space allow.		
		if(args[i+1].substring(1,2) == "z" && findObj(args[i]).value != "")
		{
			for(z=0; z<findObj(args[i]).value.length; z++)
			{
				intCharCode = findObj(args[i]).value.charCodeAt(z)
				//Checking individual character.
				if(intCharCode < 48 || intCharCode > 57 && intCharCode < 65 || intCharCode > 90 && intCharCode < 97 || intCharCode > 122)
				{
					counter ++
				}
			}
			if(counter != 0) //Non alphanumeric detected.
			{
				alert(args[i] + " allows alphanumeric only!\n[0-9][a-z][A-Z]\nNote: Space is not allow.");
				findObj(args[i]).focus();
				return false
			}
		}
		//Validate for alphanumeric with space allow.		
		if(args[i+1].substring(1,2) == "s" && findObj(args[i]).value != "")
		{
			for(z=0; z<findObj(args[i]).value.length; z++)
			{
				intCharCode = findObj(args[i]).value.charCodeAt(z)
				//Checking individual character.
				if(intCharCode < 48 && intCharCode != 32 || intCharCode > 57 && intCharCode < 65 || intCharCode > 90 && intCharCode < 97 || intCharCode > 122)
				{
					counter ++
				}
			}
			if(counter != 0) //Non alphanumeric detected.
			{
				alert(args[i] + " allows alphanumeric only!\n[0-9][a-z][A-Z]");
				findObj(args[i]).focus();
				return false
			}
		}
		//Validate email address.
		if(args[i+1].substring(1,2) == "e" && findObj(args[i]).value != "")
		{
			// create a regular expression.
			myExp = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
			if(myExp.test(findObj(args[i]).value) == false)
			{
				alert("Invalid " + args[i] + "!");
				findObj(args[i]).focus();
				return false
			}
		}
		//Validate date. 01/02/2005.
		if(args[i+1].substring(1,2) == "d" && findObj(args[i]).value != "")
		{
			// create a regular expression.
			myExp = /^(\d{8}|\d{2}\/\d{2}\/\d{4})$/;
			if(myExp.test(findObj(args[i]).value) == false)
			{
				alert("Invalid " + args[i] + "!\nPlease enter in this format: DD/MM/YYYY.");
				findObj(args[i]).focus();
				return false
			}
		}
		//Validate time. 09:54.
		if(args[i+1].substring(1,2) == "t" && findObj(args[i]).value != "")
		{
			// create a regular expression.
			myExp = /^(\d{4}|\d{2}:\d{2})$/;
			if(myExp.test(findObj(args[i]).value) == false)
			{
				alert("Invalid " + args[i] + "!\nPlease enter in this format: HH:MM.");
				findObj(args[i]).focus();
				return false
			}
		}
		//Validate for combo box. Must make a selection besides the initial selection.
		if(args[i+1].substring(1,2) == "p" && findObj(args[i]).value != "")
		{
			if(findObj(args[i]).value == 0)
			{
				alert("Please make a selection for " + args[i] + "!");
				findObj(args[i]).focus();
				return false
			}
		}
		//Validate for combo box. Must make a selection besides the initial selection.
		if(args[i+1].substring(1,2) == "c" && findObj(args[i]).value != "")
		{
			for(var c=0;c < document.forms[0].length;c++) 
			{
			if(document.forms[0].elements[c].type == "checkbox" && document.forms[0].elements[c].checked == true)
			{
				counter ++				 
			}
			}
			
			if(counter == 0) //No checkbox selected.
			{
						alert("Please make a selection for " + args[i].substring(0,(args[i].length - 2)) + "!");
						findObj(args[i]).focus();
						return false
			}	
		}
		//Validate field minimum length.
		var intMinLen
		intMinLen = parseFloat(args[i+1].substring(2,5))
	
		if(intMinLen != 0)
		{
			if(findObj(args[i]).value.length < intMinLen && findObj(args[i]).value != "")
			{
				alert(args[i] + " requires at least " + intMinLen + " characters!");
				findObj(args[i]).focus();
				return false;
			}
		}
		//Validate field maximum length.
		var intMaxLen
		intMaxLen = parseFloat(args[i+1].substring(6,9))
	
		if(intMaxLen != 0)
		{
			if(findObj(args[i]).value.length > intMaxLen && findObj(args[i]).value != "")
			{
				alert(args[i] + " allows not more than " + intMaxLen + " characters!");
				findObj(args[i]).focus();
				return false;
			}
		}
		//Check for tally with another field.
		if(args[i+1].substring(9,10) == "&")
		{
			if(findObj(args[i]).value != findObj(args[i+1].substring(10)).value)
			{
				alert(args[i] + " not tally!");
				findObj(args[i]).focus();
				return false
			}
		}
	}
	
	//Prompt user to confirm before proceeding to update records.
	if(confirm("Confirm to " + args[0] + "?") == 0)
	{
		findObj(args[1]).focus();
		return false
	}
	document.forms[0].submit();
	return true;
}
