//<SCRIPT LANGUAGE=javascript>
/*************************************************************************************
* PAGE NAME: contactus.js
* DESCRIPTION: Validates required field and invalid character data in the ASG contact us form. 
*   
*************************************************************************************
*
* REVISION HISTORY
* DATE CREATED: 
* AUTHOR: 
*
* Revision Trail
* DATE                 BY          SIR/CHANGE REQUEST No.      CHANGE DESCRIPTION
* 7/19/2006			ARMC			SIR-IDAQAG4C				update form - contact us for ASG - Increase max size for Comments field
'*************************************************************************************/ 

	/*************************************
	Trim left side of the string
	*************************************/
	function ltrim(originalString)
	{
		var pos = 0;
		while (originalString.substring(pos, pos+1) == " ")
		{
			pos++;
		}
		originalString = originalString.substring(pos, originalString.length);
		return originalString;
	}

	/*****************************************
		Trim right side of the string
	******************************************/
	function rtrim(originalString)
	{
		var pos = originalString.length;
		while (originalString.substring(pos-1, pos) == " ")
		{
			pos--;
		}
		originalString = originalString.substring(0, pos);
		return originalString;
	}
	
	/*******************************************
		Trim left and right side of the string
		Call ltrim and rtrim to perfrom the trim
	********************************************/
	function trimSpaces(textObj)
	{
		originalString = textObj.value;
		originalString = ltrim(originalString);
		originalString = rtrim(originalString);
		return originalString;
	}


        function isValidChar(sfield,vregExp)
        {
         
         var myEnneRegExp = new RegExp(String.fromCharCode(241), "gi")
         sfield=sfield.toString().replace(myEnneRegExp,'n')
         var invalidChar=vregExp.exec(sfield)
         
         if (invalidChar!=null)
         return false
        }

	/*******************************************
		Validate form 
		
	********************************************/
	function ValidateForm (oFormObject, pid)  
	{
var missingfield;
		missingfield = "";
	        var sValidTextChar =/[^ .,a-z0-9()'-]/i
		var svalidTextChar2 =/[^_\n\r .,a-z0-9#&*';%:@+=)($!`~?{}-]/i
	        var sHTMLTag=/<\s*(!--|html|meta.*|body.*|form.*|script.*|embed|applet|object|select|a.*|input.*)|<\/.*>|<|>|%60|%62|&lt|&gt/i;


		oFormObject.first_name.value = trimSpaces(oFormObject.first_name)
	    if (oFormObject.first_name.value == null || oFormObject.first_name.value == "")
	    {
			missingfield += "\n     -  Vorname";
	    }
	    
            if (isValidChar(oFormObject.first_name.value,sValidTextChar)==false) 
            {
                        alert('Das Feld Vorname enth' + String.fromCharCode(228) + 'lt ein ung'+String.fromCharCode(252) +'ltiges Zeichen.');
			return false;
            } 

	    oFormObject.last_name.value = trimSpaces(oFormObject.last_name)
	    if (oFormObject.last_name.value == null || oFormObject.last_name.value == "")
	    {
			missingfield += "\n     -  Nachname";
	    }
	    
            if (isValidChar(oFormObject.last_name.value,sValidTextChar)==false) 
            {
                        alert("Das Feld Nachname enth" + String.fromCharCode(228) +  "lt ein ung" + String.fromCharCode(252) + "ltiges Zeichen.");
			return false;
            } 



	    if (oFormObject.country.selectedIndex==0)
	    {
			missingfield += "\n     -  Land";
	    }
		
		oFormObject.city.value = trimSpaces(oFormObject.city)
	    if (oFormObject.city.value == null || oFormObject.city.value == "")
	    {
			missingfield += "\n     -  Stadt";
	    }
	    
            if (isValidChar(oFormObject.city.value,sValidTextChar)==false) 
            {
                alert("Das Feld Stadt enth" + String.fromCharCode(228) + "lt ein ung" + String.fromCharCode(252) + "ltiges Zeichen.");
				return false;
            } 

		oFormObject.email_address.value = trimSpaces(oFormObject.email_address)
	    if (oFormObject.email_address.value == null || oFormObject.email_address.value == "")
	    {
			missingfield += "\n     -  E-Mail-Adresse";
			
	    }
	    if (isValidChar(oFormObject.comments.value,svalidTextChar2)==false) 
            {
                    alert("Das Feld Nutzen Sie dieses Feld und f" + String.fromCharCode(252) + "llen es mit Ihren Fragen, Ideen, Anregungen und Vorstellungen enth"+ String.fromCharCode(228) + "lt ein ung" + String.fromCharCode(252) + "ltiges Zeichen.");
			return false;
            } 
	
	
            if (isValidChar(oFormObject.comments.value,sHTMLTag)==false) 
            {
                        alert("Das Feld Nutzen Sie dieses Feld und f" + String.fromCharCode(252) + "llen es mit Ihren Fragen, Ideen, Anregungen und Vorstellungen enth"+ String.fromCharCode(228) + "lt ein ung" + String.fromCharCode(252) + "ltiges Zeichen.");
			return false;
            } 

		//Verifies comments field maxlength is < than 2000
		var MAXLENGTH = 2000;
	
		//check to see if the long description field has anything in it.
		if ( oFormObject.comments.value.length > MAXLENGTH )
		{	
		    alert("Nutzen Sie dieses Feld und f" + String.fromCharCode(252) +"llen es mit Ihren Fragen, Ideen, Anregungen und Vorstellungen - Sie k"+ String.fromCharCode(246) + "nnen max. " + MAXLENGTH + " Zeichen in dieses Textfeld eintragen - Sie haben derzeit " + oFormObject.comments.value.length + " Zeichen eingetragen.");
			oFormObject.comments.focus();
			return false;
		}
	

		if (oFormObject.industry.selectedIndex==0)
			{
				missingfield += "\n     -  Branche/Bereich";
			}
			
		
		if (missingfield != "")
		{
			alert("Bitte vervollst" + String.fromCharCode(228) + "ndigen Sie die folgenden Pflichtfelder:\n " + missingfield + " \n\nVielen Dank!");
			return false;
		}
		
		/*
			Validate email address field section
		*/

		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=oFormObject.email_address.value.match(emailPat);
		var validEmailChar=/[^-.a-z0-9_]/i;
                
		if (matchArray==null) 
		{
			alert("Bitte geben Sie eine g" + String.fromCharCode(252) + "ltige E-Mail-Adresse ein (z.B. joe@smith.com)");
			return false;
                }
                else
                {
                var user=matchArray[1];
				var domain=matchArray[2];

                if (isValidChar(user,validEmailChar)==false) 
                   {
					 alert("Das Feld E-Mail-Adresse enth"+ String.fromCharCode(228) + "lt ein ung" + String.fromCharCode(252) + "ltiges Zeichen");
					 return false;
                   }
                else
                   {
                    var alphanum=/[^a-z0-9]/i
                    var bUserNameFormatValid=true;
                    for(i=0;i<=user.length-1;i++)
                      {
                       
                      if (user.charAt(i)=="-" || user.charAt(i)=="_" || user.charAt(i)==".")  
                      {
                       
                      
                                        if (i==0)
                                         {           
                                          bUserNameFormatValid=false;
                                          i=user.length
                                          
                                         }
            
                                        if (i>0)
                                         { 
                                          var cright=user.charAt(i+1) ;
                                          var cleft=user.charAt(i-1);
                                           
                                           if ((alphanum.exec(cright)!=null) || (alphanum.exec(cleft)!=null) || cright=='') 
                                            {
                                             bUserNameFormatValid=false;
                                             i=user.length
                                            }
                                          
                                         }
                       
                       
                      } //end if

                       } // end for
                     if (bUserNameFormatValid==false)
                       {
                        alert('Bitte geben Sie eine g" + String.fromCharCode(252) + "ltige E-Mail-Adresse ein (z.B. joe@smith.com).')
                        return false;
                       }
                    } //else end
                 
                   if (isValidChar(domain,validEmailChar)==false) 
                   {
					alert("Bitte geben Sie eine g" + String.fromCharCode(252) + "ltige E-Mail-Adresse ein (z.B. joe@smith.com).");
					return false;
	 				}
                   else
                   {
                    var alphanum=/[^a-z0-9]/i
                    var bDomainFormatValid=true;
                    for(i=0;i<=domain.length-1;i++)
                      {
                       
                      if (domain.charAt(i)=="-" || domain.charAt(i)=="_")  
                      {                 
                                     if (i==0)
                                         {            
                                          bDomainFormatValid=false;
                                          i=domain.length
                                        
                                         }
            
                                        if (i>0)
                                         { 
                                          var cright=domain.charAt(i+1) ;
                                          var cleft=domain.charAt(i-1);
                                         
                                           if ((alphanum.exec(cright)!=null) || (alphanum.exec(cleft)!=null) || cright=='') 
                                            {
                                             bDomainFormatValid=false;
                                             i=domain.length
                                            }
                                         
                                         }
                       
                       
                      } //end if

                       } // end for
                     if (bDomainFormatValid==false)
                       {
                        alert('Bitte geben Sie eine g" + String.fromCharCode(252) + "ltige E-Mail-Adresse ein (z.B. joe@smith.com).')
                        return false;
                       }
                   }// end else



		} //end else
		// Commented by Sherwin Amagan
                /*var user=matchArray[1];
		var domain=matchArray[2];*/

	/*
		for (i=0; i<user.length; i++) 
		{
			if (user.charCodeAt(i)>127) 
			{
				alert("Email Address field - The username contains invalid characters.");
				return false;
			}
		}*/
                
              
	/*
		for (i=0; i<domain.length; i++) {
			if (domain.charCodeAt(i)>127) 
			{
				alert("Email Address field - The domain name contains invalid characters.");
				return false;
		   }
		} */
                 // End Commented by Sherwin Amagan
              
		if (user.match(userPat)==null) 
		{
			alert("Bitte geben Sie eine g" + String.fromCharCode(252) + "ltige E-Mail-Adresse ein (z.B. joe@smith.com).)");
			return false;
		}

		var IPArray=domain.match(ipDomainPat);
		if (IPArray!=null) 
		{
			for (var i=1;i<=4;i++) 
			{
				if (IPArray[i]>255) 
				{
					alert("Bitte geben Sie eine g" + String.fromCharCode(252) + "ltige E-Mail-Adresse ein (z.B. joe@smith.com).");
					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("Bitte geben Sie eine g" + String.fromCharCode(252) + "ltige E-Mail-Adresse ein (z.B. joe@smith.com).");
				return false;
			}
		}
	
		if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) 
		{
			alert("Bitte geben Sie eine g" + String.fromCharCode(252) + "ltige E-Mail-Adresse ein (z.B. joe@smith.com).");
			return false;
		}

		if (len<2) 
		{
			alert("Bitte geben Sie eine g" + String.fromCharCode(252) + "ltige E-Mail-Adresse ein (z.B. joe@smith.com).");
			return false;
		}
		
                
		/*
			End of Validate email address field section
		*/
		
		
		return true;

		 
	}
