// JavaScript Document
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_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

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_changeProp(objName,x,theProp,theValue) { //v6.0
  var obj = MM_findObj(objName);
  if (obj && (theProp.indexOf("style.")==-1 || obj.style)){
    if (theValue == true || theValue == false)
      eval("obj."+theProp+"="+theValue);
    else eval("obj."+theProp+"='"+theValue+"'");
  }
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}

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 MP_swapMenuImagesBack() { //v1.0
	MM_swapImage('bathroomsuites','','ti/mmbathroomsuites.gif','bathsandspas','','ti/mmbathsandspas.gif','showers','','ti/mmshowers.gif','sanitaryware','','ti/mmsanitaryware.gif','brassware','','ti/mmbrassware.gif','heating','','ti/mmheating.gif','accessories','','ti/mmaccessories.gif','tiles','','ti/mmtiles.gif','fittedfurniture','','ti/mmfittedfurniture.gif','jacuzzi','','ti/mmjacuzzi.gif','vitra','','ti/mmvitra.gif','laufen','','ti/mmlaufen.gif','heritage','','ti/mmheritage.gif','vernontutbury','','ti/mmvernontutbury.gif','ideal','','ti/mmideal.gif','sanitan','','ti/mmsanitan.gif',1);
}

function MP_turnOffSubMenus() { //v1.0
	MM_showHideLayers('ddmbathroomsuites','','hide','ddmbathsandspas','','hide','ddmshowers','','hide','ddmsanitaryware','','hide','ddmbrassware','','hide','ddmheating','','hide','ddmaccessories','','hide','ddmtiles','','hide','ddmfittedfurniture','','hide','ddmjacuzzi','','hide','ddmvitra','','hide','ddmlaufen','','hide','ddmheritage','','hide','ddmvernontutbury','','hide','ddmideal','','hide','ddmsanitan','','hide','turnoffmenus','','hide'); MP_swapMenuImagesBack()
}

function MP_resetImagesAndMenus() {//v1.0
	MP_swapMenuImagesBack();
	MP_turnOffSubMenus();
}

function MP_subMenuImageSwap(imageFileNameS, imageAltNameS, imageNameS, imageHeightS) {//v1.0
	document.write("<img src=\"ti/" + imageFileNameS + ".gif\" alt=\"" + imageAltNameS + "\" name=\"" + imageNameS + "\" width=\"112\" height=\"" + imageHeightS + "\" border=\"0\" id=\"" + imageNameS + "\" onMouseOver=\"MM_swapImage('" + imageNameS + "','','ti/" + imageFileNameS + "_f2.gif',1)\" onMouseOut=\"MM_swapImgRestore()\">");
}

function MP_constructSubMenuEntry(phpPath, imageFileNameS, imageAltNameS, imageNameS, imageHeightS) {//v1.0
	document.write("<a href=\"showroom.php?" + phpPath + "&Submit=Submit\"><img src=\"ti/" + imageFileNameS + ".gif\" alt=\"" + imageAltNameS + "\" name=\"" + imageNameS + "\" width=\"112\" height=\"" + imageHeightS + "\" border=\"0\" id=\"" + imageNameS + "\" onMouseOver=\"MM_swapImage('" + imageNameS + "','','ti/" + imageFileNameS + "_f2.gif',1)\" onMouseOut=\"MM_swapImgRestore()\"></a><br>");
}

function MP_preLoadMenuSwapImages(){//v1.0
	MM_preloadImages('ti/resultsnavfirstpage_f2.gif','ti/resultsnavprevpage_f2.gif','ti/resultsnavnextpage_f2.gif','ti/resultsnavlastpage_f2.gif','ti/ddmvitra_f2.gif','ti/ddmaccessories3_f2.gif','ti/ddmsanitaryware4_f2.gif','ti/ddmfittedfurniture1_f2.gif','ti/tmsearch_f2.gif','ti/ddmfittedfurniture4_f2.gif','ti/ddmheritage_f2.gif','ti/mmideal_f2.gif','ti/mmheritage_f2.gif','ti/ddmshowers3_f2.gif','ti/ddmtotalhome1_f2.gif','ti/mmvitra_f2.gif','ti/ddmbrassware2_f2.gif','ti/ddmbathsandspas2_f2.gif','ti/ddmsearch2_f2.gif','ti/tmcontactus_f2.gif','ti/mmsanitan_f2.gif','ti/ddmaccessories1_f2.gif','ti/ddmsanitaryware2_f2.gif','ti/ddmbathsandspas5_f2.gif','ti/ddmtiles3_f2.gif','ti/mmshowers_f2.gif','ti/ddmaccessories4_f2.gif','ti/ddmsanitan_f2.gif','ti/ddmfittedfurniture2_f2.gif','ti/mmtiles_f2.gif','ti/ddmbathroomsuites_f2.gif','ti/ddmshowers1_f2.gif','ti/mmbathroomsuites_f2.gif','ti/ddmshowers4_f2.gif','ti/ddmtotalhome2_f2.gif','ti/tmaboutus_f2.gif','ti/ddmvernontutbury_f2.gif','ti/ddmbrassware3_f2.gif','ti/ddmbathsandspas3_f2.gif','ti/ddmtiles1_f2.gif','ti/mmaccessories_f2.gif','ti/ddmaccessories2_f2.gif','ti/ddmlaufen_f2.gif','ti/ddmsanitaryware3_f2.gif','ti/ddmsearch3_f2.gif','ti/ddmaccessories5_f2.gif','ti/ddmfittedfurniture3_f2.gif','ti/tmshowroomtour_f2.gif','ti/mmjacuzzi_f2.gif','ti/tmtotalhome_f2.gif','ti/mmbathsandspas_f2.gif','ti/ddmshowers2_f2.gif','ti/mmvernontutbury_f2.gif','ti/mmlaufen_f2.gif','ti/mmfittedfurniture_f2.gif','ti/ddmshowers5_f2.gif','ti/ddmbrassware1_f2.gif','ti/ddmbathsandspas1_f2.gif','ti/ddmjacuzzi_f2.gif','ti/ddmsearch1_f2.gif','ti/mmsanitaryware_f2.gif','ti/ddmideal_f2.gif','ti/ddmbrassware4_f2.gif','ti/ddmbathsandspas4_f2.gif','ti/ddmtiles2_f2.gif','ti/ddmsanitaryware1_f2.gif','ti/ddmtotalhome3_f2.gif','ti/mmbrassware_f2.gif','ti/ddmaccessories10_f2.gif','ti/ddmaccessories11_f2.gif','ti/ddmaccessories12_f2.gif','ti/ddmaccessories13_f2.gif','ti/ddmaccessories14_f2.gif','ti/ddmaccessories15_f2.gif','ti/ddmaccessories16_f2.gif','ti/ddmaccessories6_f2.gif','ti/ddmaccessories7_f2.gif','ti/ddmaccessories8_f2.gif','ti/ddmaccessories9_f2.gif','ti/ddmbrassware5_f2.gif','ti/ddmheating1_f2.gif','ti/ddmheating2_f2.gif','ti/ddmheating3_f2.gif','ti/mmheating_f2.gif');
}

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 MP_addSecondFilePath(userFileNameLg) { //v1.0
	//var pathAndFileName = document.addproduct.userFileLg.value;
	var posLastSlash = userFileNameLg.lastIndexOf('\\');
	var lengthString = userFileNameLg.length;
	var fileName = userFileNameLg.substring(posLastSlash+1,lengthString);
	var path = userFileNameLg.substring(0,posLastSlash);
	var posLastSlash = path.lastIndexOf('\\');
	var path = path.substring(0,posLastSlash);
	var newPathAndFileName = path + '\\sm\\' + fileName;
	document.addproduct.paste.value = newPathAndFileName;
	document.addproduct.image.value = fileName;
	document.addproduct.paste.focus();
}

function MP_validateAddProdForm() { //v1.0
	errfound = false;
	//alert ("validating add prod form");
	var error = "";
	//var image = document.addproduct.image.value;
	//alert("image value = " + image + " and length = " + image.length);
	if (document.addproduct.image.value.length < 5) {error = error + 'No image has been chosen.\n'; errfound = true; }
	if (document.addproduct.prod_name.value.length < 1) {error = error + 'No Product Name is given.\n'; errfound = true; }
	if (document.addproduct.prod_desc.value.length < 1) {error = error + 'No Product Description is given.\n'; errfound = true; }
	if (document.addproduct.prod_short_desc.value.length < 1) {error = error + 'No Product Short Description is given.\n'; errfound = true; }
	if (document.addproduct.prod_name.value.length < 1) {error = error + 'No Product Name is given.\n'; errfound = true; }
	if (!document.addproduct.prod_type1.value) {error = error + 'No Product Type 1 has been set.\n'; errfound = true; }
	if (!document.addproduct.showroom.checked) {
		if (!document.addproduct.heatandplumb.checked) {error = error + 'The product has not be set as Showroom or Heating and Plumbing.\n'; errfound = true; }
	}
	if (((!document.addproduct.userFileLg.value) && (document.addproduct.userFileSm.value)) || ((document.addproduct.userFileLg.value) && (!document.addproduct.userFileSm.value))) {
		error = error + 'Only one of the file upload fields are completed.\n';
		errfound = true;
	}
	if (errfound) {
		alert ("Your submission has errors:-\n" + error);
	}
	return !errfound;
}

function MP_TestScript() {
	window.alert("test script running");
}

function MP_ValidateEmail() {
	emailStr = document.contact.email.value;
	//window.alert(emailStr);
	validation = "true";
	if (emailStr.length > 0) {

		/* The following variable tells the rest of the function whether or not
		to verify that the address ends in a two-letter country or well-known
		TLD.  1 means check it, 0 means don't. */
		var checkTLD=0;
		
		/* The following is the list of known TLDs that an e-mail address must end with. */
		var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
		
		/* The following pattern is used to check if the entered e-mail address
		fits the user@domain format.  It also is used to separate the username
		from the domain. */
		var emailPat=/^(.+)@(.+)$/;
		
		/* The following string represents the pattern for matching all special
		characters.  We don't want to allow special characters in the address. 
		These characters include ( ) < > @ , ; : \ " . [ ] */
		var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
		
		/* The following string represents the range of characters allowed in a 
		username or domainname.  It really states which chars aren't allowed.*/
		var validChars="\[^\\s" + specialChars + "\]";
		
		/* The following pattern applies if the "user" is a quoted string (in
		which case, there are no rules about which characters are allowed
		and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
		is a legal e-mail address. */
		var quotedUser="(\"[^\"]*\")";
		
		/* The following pattern applies for domains that are IP addresses,
		rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
		e-mail address. NOTE: The square brackets are required. */
		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
		
		/* The following string represents an atom (basically a series of non-special characters.) */
		var atom=validChars + '+';
		
		/* The following string represents one word in the typical username.
		For example, in john.doe@somewhere.com, john and doe are words.
		Basically, a word is either an atom or quoted string. */
		var word="(" + atom + "|" + quotedUser + ")";
		
		// The following pattern describes the structure of the user
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
		
		/* The following pattern describes the structure of a normal symbolic
		domain, as opposed to ipDomainPat, shown above. */
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
		
		/* Finally, let's start trying to figure out if the supplied address is valid. */
		
		/* Begin with the coarse pattern to simply break up user@domain into
		different pieces that are easy to analyze. */
		var matchArray=emailStr.match(emailPat);
		
		if (matchArray==null) {
		
			/* Too many/few @'s or something; basically, this address doesn't
			even fit the general mould of a valid e-mail address. */
			
			alert("Email address seems incorrect (check @ and .'s)");
			validation = "false";
			return validation;
		}
		var user=matchArray[1];
		var domain=matchArray[2];
		
		// Start by checking that only basic ASCII characters are in the strings (0-127).
		for (i=0; i<user.length; i++) {
			if (user.charCodeAt(i)>127) {
				alert("Ths username contains invalid characters.");
				validation = "false";
				return validation;
		   }
		}
		for (i=0; i<domain.length; i++) {
			if (domain.charCodeAt(i)>127) {
				alert("Ths domain name contains invalid characters.");
				validation = "false";
				return validation;
		   }
		}
		
		// See if "user" is valid 
		if (user.match(userPat)==null) {
		
			// user is not valid
			alert("The username doesn't seem to be valid.");
			validation = "false";
			return validation;
		}
		
		/* if the e-mail address is at an IP address (as opposed to a symbolic
		host name) make sure the IP address is valid. */
		var IPArray=domain.match(ipDomainPat);
		if (IPArray!=null) {
			// this is an IP address
			for (var i=1;i<=4;i++) {
				if (IPArray[i]>255) {
					alert("Destination IP address is invalid!");
					validation = "false";
					return validation;
			   }
			}
			return true;
		}
		
		// Domain is symbolic name.  Check if it's valid.
		var atomPat=new RegExp("^" + atom + "$");
		var domArr=domain.split(".");
		var len=domArr.length;
		for (i=0;i<len;i++) {
			if (domArr[i].search(atomPat)==-1) {
				alert("The domain name does not seem to be valid.");
				validation = "false";
				return validation;
		   }
		}
		
		/* domain name seems valid, but now make sure that it ends in a
		known top-level domain (like com, edu, gov) or a two-letter word,
		representing country (uk, nl), and that there's a hostname preceding 
		the domain or country. */
		if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {
			alert("The address must end in a well-known domain or two letter " + "country.");
			validation = "false";
			return validation;
		}
		
		// Make sure there's a host name preceding the domain.
		if (len<2) {
			alert("This address is missing a hostname!");
			validation = "false";
			return validation;
		}
		
		// If we've gotten this far, everything's valid!
		return true;
	}
}

function MP_ValidatePhone(){
	//window.alert("doing phone no validation");
	phoneStr = document.contact.phoneno.value;
	phoneStrLen = phoneStr.length;
	//window.alert("phoneno = " + phoneStr + " and length = " + phoneStrLen);
	if (phoneStrLen > 0) {
		//window.alert("phone string is not zero so checking for invalid characters");
		if (phoneStrLen < 5) { //if less than five digit phone no then invalid number
			validation = "false";
			window.alert("The phone number is too short.");
		} else {
			validChars = " 0123456789+.-()";
			validCharsLen = validChars.length;
			validation = "true";
			for (n=0;n<phoneStrLen;n++) {
				testChar = phoneStr.charAt(n);
				//window.alert("loop value of n = " + n + ", test character is " + testChar);
				//window.alert(validChars.indexOf(testChar));
				if (validChars.indexOf(testChar) == -1) {
					validation = "false";
					n = phoneStrLen;
					window.alert("The phone number has an invalid character.");
					return false;
				} else {
					validation = "true";
					//window.alert("test char that was in validChars string was " + testChar);
				}
			}
		}
	}
	return validation;
}

function MP_ValidatePhoneRequest(){
	//window.alert("validatePhoneRequest");
	//window.alert(document.contact.phoneRequest.checked);
	if (document.contact.phoneRequest.checked) {
		//window.alert("checkbox is checked");
		if (document.contact.phoneno.value == 0){
			alert("Please fill in your phone number.");
			validation = "false";
			return validation;
		} else {
			MP_ValidatePhone();
		}
	}
}

function MP_ValidateForm(){
	validation =  "true";
	//window.alert("validateForm");
	MP_ValidatePhoneRequest();
	if (validation == "true"){
		MP_ValidatePhone();
	}
	if (validation == "true"){
		MP_ValidateEmail();
	}
	//window.alert("validations done");
	//window.alert("value of validation = " + validation);
	if (validation == "false"){
		//window.alert("failed validation");
		return false;
	}
	//window.alert("passed validation");
}