// Removes the leading blank characters from the string
// str - string to be left trimmed
function trimLeft(str) 
{
	var whitespaces = " \t\n\r";
	for (n = 0; n < str.length; n++) 
	{ 
	  	if (whitespaces.indexOf(str.charAt(n)) == -1) 
		{ 
	    	return (n > 0) ? str.substring(n, str.length) : str;
	  	} 
	}
	return("");
}

// Removes the trailing characters from the string
// str - string to be right trimmed
function trimRight(str)
{
	var whitespaces = " \t\n\r";
	for (n = str.length - 1; n > -1; n--) 
	{ 
	  	if (whitespaces.indexOf(str.charAt(n)) == -1) 
		{
	    	return (n < (str.length - 1)) ? str.substring(0, n+1) : str;
	  	}	 
	}
	return("");
}

// Removes both leading and trailing characters from the string
// str - string to be trimmed
function trim(str) 
{
  	return ((str == null) ? "" : trimRight(trimLeft(str))); 
}
function checkCombo(value,msg)
{
if(value==0)
{
alert (msg);
return false
}
else
return true;
}

/*function checkEmail(emailStr) 
{
	
     for(var i=0;i<emailStr.length;i++)
	{
	   var chk=returnASCII(emailStr.charAt(i));
		
	   if((chk==96) || (chk<=44) || (chk==47) ||(chk<=63 && chk>=58) || (chk<=94 && chk>=91) || (chk<=255 && chk>=123))
		{
			alert("The character   "+returnCharFromAscii(chk)+"  used in Email field is not allowed");
			return false;
		}
	}    
    var emailPat=/^(.+)@(.+)$/;
    var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
    var validChars="\[^\\s" + specialChars + "\]";
    var quotedUser="(\"[^\"]*\")";
    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
    var atom=validChars + '+';
    var word="(" + atom + "|" + quotedUser + ")";
    var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
    var matchArray=emailStr.match(emailPat);
    
	    
    if (matchArray==null) 
    {
    	alert("Email address seems incorrect (check @ and .'s)");
    	return false;
    }
    var user=matchArray[1];
    var domain=matchArray[2];
    if (user.match(userPat)==null) 
    {
        alert("The username in the Email Address doesn't seem to be valid.");
        return false;
    }
    var IPArray=domain.match(ipDomainPat);
    if (IPArray!=null) 
    {
    	  for (var i=1;i<=4;i++) 
          {
    	    if (IPArray[i]>255) 
            {
    	        alert("Destination IP address in the Email is invalid!");
    		    return false;
    	    }
        }
        return true;
    }
    var domainArray=domain.match(domainPat);
    if (domainArray==null) 
    {
    	alert("The domain name in the Email Address doesn't seem to be valid.");
        return false;
    }
    var atomPat=new RegExp(atom,"g");
    var domArr=domain.match(atomPat);
    var len=domArr.length;
    if ((domArr[domArr.length-1] != "info") &&
    	(domArr[domArr.length-1] != "name") &&
    	(domArr[domArr.length-1] != "arpa") &&
    	(domArr[domArr.length-1] != "coop")) 
    {
        if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) 
        {
            alert("The Email address must end in a three-letter domain, or two letter country.");
            return false;
        }
    }
    if (len<2) 
    {
       var errStr="This Email address is missing a hostname!";
       alert(errStr);
       return false;
    }
   
    return true;
}*/
function checkEmail (emailStr) 
{
emailStr=trim(emailStr).toLowerCase();
 for(var i=0;i<emailStr.length;i++)
	{
	   var chk=returnASCII(emailStr.charAt(i));
		if(chk==32)
       {
            alert("Spaces are not allowed in Email field.");
            return false
       }
	 if((chk==96) || (chk<=44 && chk!=39) || (chk==47) ||(chk<=63 && chk>=58) || (chk<=94 && chk>=91) || (chk<=255 && chk>=123))
		{
			alert("The character   "+returnCharFromAscii(chk)+"  used in Email field is not allowed.");
			return false;
		}
	}    
emailStr=trim(emailStr);
var checkTLD=1;
var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
var emailPat=/^(.+)@(.+)$/;
var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
var validChars="\[^\\s" + specialChars + "\]";
var quotedUser="(\"[^\"]*\")";
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
var atom=validChars + '+';
var word="(" + atom + "|" + quotedUser + ")";
var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
var matchArray=emailStr.match(emailPat);
if (matchArray==null) {
alert("Email address seems incorrect (check @ and .'s)");
return false;
}
var user=matchArray[1];
var domain=matchArray[2];
for (i=0; i<user.length; i++) {
if (user.charCodeAt(i)>127) {
alert("Ths username contains invalid characters.");
return false;
   }
}
for (i=0; i<domain.length; i++) {
if (domain.charCodeAt(i)>127) {
alert("Ths domain name contains invalid characters.");
return false;
   }
}

if (user.match(userPat)==null) {
// user is not valid
alert("The username in Email doesn't seem to be valid.");
return false;
}

var IPArray=domain.match(ipDomainPat);
if (IPArray!=null) {
for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
alert("Destination IP address in Email is invalid!");
return false;
   }
}
return true;
}
 
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 in Email seems to be invalid.");
return false;
   }
}
var domain=domArr[domArr.length-1];
for(var p=0;p<domain.length;p++)
{
    var chk=returnASCII(domain.charAt(p));
    if((chk<97 && chk>90) || (chk>122  ||  chk<65  ))
    {
        alert("The domain name in Email field seems to be invalid.");
        return false;
    }

}
if (checkTLD && domArr[domArr.length-1].length!=2 && 
domArr[domArr.length-1].search(knownDomsPat)==-1) {
alert("The Email must end in a well-known domain or two letter " + "country.");
return false;
}
// Make sure there's a host name preceding the domain.
if (len<2) {
alert("This Email is missing a hostname!");
return false;
}
// If we've gotten this far, everything's valid!
return true;
}

//////////////////////////////////////////




function isEmpty(str)
{
    var s = trim(str);
    return (s.length == 0);
}


function validateField(field, msg)
{	if(!checkQuote(field.value))
	{
	alert("double quotes, < or > are not allowed in any field");
	return false;
	}
	if (isEmpty(field.value))
    {
        alert(msg);
        return false;
    }
	return true;
}

function checkQuote(msg)
{
for(var i=0;i<msg.length;i++)
{
	   var chk=returnASCII(msg.charAt(i));
	   if(chk==34 || chk==60 || chk== 62)
	   {
	   return false;
	   }
}
	return true;
}
	  

function returnASCII(c)
{
    
	// restrict input to a single character
	c = c . charAt (0);

	// loop through all possible ASCII values
	var i;
	for (i = 0; i < 256; ++ i)
	{
		// convert i into a 2-digit hex string
		var h = i . toString (16);
		if (h . length == 1)
			h = "0" + h;

		// insert a % character into the string
		h = "%" + h;

		// determine the character represented by the escape code
		h = unescape (h);

		// if the characters match, we've found the ASCII value
		if (h == c)
			break;
	}
	return i;
}
function returnCharFromAscii(c)
{
var h=c.toString(16);
if(h.length==1)
h="0"+h;
h="%"+h;
h=unescape(h);
return h;
}

function validatePhone(phno)
{
	phno=trim(phno);
    for(var i=0;i<phno.length;i++)
	{
	   var chk=returnASCII(phno.charAt(i));
	   /*if(chk==32)
       {
            alert("Spaces are not allowed in Primary telephone field");
            return false
       }*/
		if((i==0 && chk<=122 && chk>=92)|| (i==0 && chk>=65 && chk<=90)||(i==0 && chk==46) || (i==0 && chk==45)|| (i==0 && chk==41))
		{
			alert("Primary Telephone cannot start with character  "+returnCharFromAscii(chk)+".  You should start with numeric or +,(");
			return false;
		}
	   if((chk==42) || (chk==44) || (chk==47) || (chk<=39 && chk!=32) ||(chk<=64 && chk>=58) || (chk<=96 && chk>=91) || (chk<=255 && chk>=123))
		{
			alert("The character  "+returnCharFromAscii(chk)+"  is not allowed in Primary Telephone field");
			
			return false;
		}
	}
	return true;
}
// common validation applied to all fields
function commonValidation(message)
{
    for(var i=0;i<message.length;i++)
	{
	   var chk=returnASCII(message.charAt(i));
	   if((chk==33) || (chk==36) || (chk==37) || (chk==42) ||(chk==94) || (chk==96) || (chk==126)||(chk==93)||(chk==91)||(chk==125)||(chk==123))
		{
			alert("The character  "+returnCharFromAscii(chk)+"  is not allowed in any field");
			
			return false;
		}
	}
    return true;
}
function validateFieldNotMandatory(field, msg)
{	if(!checkQuote(field.value))
	{
	alert("double quotes, < or > are not allowed in any field");
	return false;
	}
    if(!commonValidation(field.value))
    {
        return false;
    }
	return true;
}
function validateCheckBox(formname,objname,msg)
{

for(var i=0;i<formname.elements.length;i++)
{
if(formname.elements[i].type=="checkbox" && formname.elements[i].name==objname && formname.elements[i].checked)
{
return true;
}
}
alert(msg);
return false;
}

function checkCuHdnu(formname,msg)
{   
    for(var i=0;i<formname.elements.length;i++)
    {
    if((formname.elements[i].type=="checkbox" && formname.elements[i].name=="customerUpdate" && formname.elements[i].checked) ||(formname.elements[i].type=="checkbox" && formname.elements[i].name=="hdnUpdate" && formname.elements[i].checked))
    {
    return true;
    }
    }
    alert(msg);
    return false;
}

function handleSpace(message)
{
   for(var i=0;i<message.length;i++)
    {
        c=message.charAt(i);
        var chk=returnASCII(c);
        if(chk==32)
        {
        if(confirm("Do you want to use spaces in the last name?(Do not use more than one space.)")==false)
        return false;
        else
        return true;
        }
    }
    return true;
}

// Function used to copy the text to clipboard.
function copyToClipBoard(meintext)
{

//meintext="$%"+meintext+"%$";
 if (window.clipboardData) 
   {
   
   // the IE-manier
   window.clipboardData.setData("Text", meintext);
   
   // waarschijnlijk niet de beste manier om Moz/NS te detecteren;
   // het is mij echter onbekend vanaf welke versie dit precies werkt:
  }
   else if (window.netscape) 
   { 
    //netscape.security.PrivilegeManager.enablePrivilege("UniversalPreferencesRead")

   
   
   
   try{ 
   // dit is belangrijk maar staat nergens duidelijk vermeld:
   netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
   }catch(e)
   {
     alert('signed.applets.codebase_principal_support is turned off. Please enable it. Write about:config in address bar it will open the config attributes. Make "signed.applets.codebase_principal_support" to true by double clicking on value of this attribute.');
     
   }
   // maak een interface naar het clipboard
   var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
   if (!clip) return;
   
   // maak een transferable
   var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
   if (!trans) return;
   
   // specificeer wat voor soort data we op willen halen; text in dit geval
   trans.addDataFlavor('text/unicode');
   
   // om de data uit de transferable te halen hebben we 2 nieuwe objecten nodig   om het in op te slaan
   var str = new Object();
   var len = new Object();
   
   var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
   
   var copytext=meintext;
   
   str.data=copytext;
   
   trans.setTransferData("text/unicode",str,copytext.length*2);
   
   var clipid=Components.interfaces.nsIClipboard;
   
   if (!clip) return false;
   
   clip.setData(trans,null,clipid.kGlobalClipboard);
   
   }
  // alert("Following info was copied to your clipboard:\n\n" + meintext);
   return false;
}










 
function changeResetPrimaryKey(objForm,varOld_Email)
{
var varExisting_Email="";
var varResetPrimaryKey="";
		if(document.getElementsByTagName('existing_email') && document.getElementsByTagName('resetPrimaryKey'))
		{
			varExisting_Email=objForm.existing_email.value;
			varResetPrimaryKey=objForm.resetPrimaryKey.value;
		}
if(varExisting_Email!=null && varExisting_Email!='' && varOld_Email!=null && varOld_Email!='' && varResetPrimaryKey!=null && varResetPrimaryKey!=null)
{
  if(varExisting_Email==varOld_Email)
  {
 	objForm.resetPrimaryKey.value='N';
  }
  else
  {
	  if (parseInt(navigator.appVersion)>3) 
	  {
		 var strMsg="You have modified your email address from '"+varExisting_Email+"' to '"+varOld_Email+"'. Are you '"+varExisting_Email+"' and want to correct your email address."; 
		 var var_sameperson;
		 if (navigator.appName.indexOf("Microsoft")!=-1) 
		 {
		 	execScript('n = msgbox("'+strMsg+'","4132")', "vbscript");
		 }
		else		 
		{
		 	var_sameperson= confirm(strMsg);
		 }
	  }
  	
  	if(var_sameperson==true || n==6)
  	{
  		objForm.resetPrimaryKey.value='N';
  	}
  	else
  	{
		objForm.resetPrimaryKey.value='Y';
  	}
  }
}
}
var vintagePropertieswindow;
function openLayerdPopup(objForm,varResetPrimaryKey,varOld_Email,existing_email,dhtmlwindowpath)
{
	height=130;
	width=725;
	vintagePropertieswindow=dhtmlmodal.open('VintagePropertiesBox', 'iframe', dhtmlwindowpath+'/resource/jsp/openme.jsp?RWPopup=true&formobject='+objForm+'&OldEmail='+varOld_Email+'&existing_email='+existing_email, 'Wine Vintage Properties', 'width='+width+',height='+height+',center=1,resize=0,scrolling=0');
	vintagePropertieswindow.onclose=function()
    {
    objForm.Email.focus();
     return true;
    }
}

function openLayered(varoldemail,objform,dhtmlwindowpath)
{
var varoldemail=trim(varoldemail);
var varExistingEmail=trim(objform.existing_email.value);
var varResetPrimaryKey=trim(objform.resetPrimaryKey.value);
if(varoldemail!=null && varExistingEmail!=null && varExistingEmail.length>0 && varoldemail.length>0 && varoldemail!=varExistingEmail && varResetPrimaryKey.toLowerCase()=='u')
{
openLayerdPopup(objform,varResetPrimaryKey,varoldemail,varExistingEmail,dhtmlwindowpath);
}
}
function checkBeforeSubmit(varoldemail,objform)
{
var varoldemail=trim(varoldemail);
var varExistingEmail=trim(objform.existing_email.value);
var varResetPrimaryKey=trim(objform.resetPrimaryKey.value);
if(varoldemail!=null && varExistingEmail!=null && varExistingEmail.length>0 && varoldemail.length>0 && varoldemail!=varExistingEmail && varResetPrimaryKey.toLowerCase()=='u')
{
return false;
}
}	
function openLayerdPopup_fr(objForm,varResetPrimaryKey,varOld_Email,existing_email,dhtmlwindowpath)
{
	height=130;
	width=725;
	vintagePropertieswindow=dhtmlmodal.open('VintagePropertiesBox', 'iframe', dhtmlwindowpath+'/resource/jsp/openme_fr.jsp?RWPopup=true&formobject='+objForm+'&OldEmail='+varOld_Email+'&existing_email='+existing_email, 'Wine Vintage Properties', 'width='+width+',height='+height+',center=1,resize=0,scrolling=0');
	vintagePropertieswindow.onclose=function()
    {
    objForm.Email.focus();
     return true;
    }
}

function openLayered_fr(varoldemail,objform,dhtmlwindowpath)
{
var varoldemail=trim(varoldemail);
var varExistingEmail=trim(objform.existing_email.value);
var varResetPrimaryKey=trim(objform.resetPrimaryKey.value);
if(varoldemail!=null && varExistingEmail!=null && varExistingEmail.length>0 && varoldemail.length>0 && varoldemail!=varExistingEmail && varResetPrimaryKey.toLowerCase()=='u')
{
openLayerdPopup_fr(objform,varResetPrimaryKey,varoldemail,varExistingEmail,dhtmlwindowpath);
}
}
function openLayerdPopup_ger(objForm,varResetPrimaryKey,varOld_Email,existing_email,dhtmlwindowpath)
{
	height=130;
	width=725;
	vintagePropertieswindow=dhtmlmodal.open('VintagePropertiesBox', 'iframe', dhtmlwindowpath+'/resource/jsp/openme_ger.jsp?RWPopup=true&formobject='+objForm+'&OldEmail='+varOld_Email+'&existing_email='+existing_email, 'Wine Vintage Properties', 'width='+width+',height='+height+',center=1,resize=0,scrolling=0');
	vintagePropertieswindow.onclose=function()
    {
    objForm.Email.focus();
     return true;
    }
}

function openLayered_ger(varoldemail,objform,dhtmlwindowpath)
{
var varoldemail=trim(varoldemail);
var varExistingEmail=trim(objform.existing_email.value);
var varResetPrimaryKey=trim(objform.resetPrimaryKey.value);
if(varoldemail!=null && varExistingEmail!=null && varExistingEmail.length>0 && varoldemail.length>0 && varoldemail!=varExistingEmail && varResetPrimaryKey.toLowerCase()=='u')
{
openLayerdPopup_ger(objform,varResetPrimaryKey,varoldemail,varExistingEmail,dhtmlwindowpath);
}
}
