//<SCRIPT LANGUAGE=javascript>
/*************************************************************************************
* PAGE NAME: campuscontactus.js
* DESCRIPTION: Validates required field and invalid character data in the ASG Campus Challenge contact us form. 
*   
*************************************************************************************
*
* REVISION HISTORY
'* Date Created: Dec. 19, 2006
'* Author: Ma. Luisa A. Belleza
'*
'* Revision Trail:
'* DATE				BY			SIR/CHANGE REQUEST NO.			CHANGE DESCRIPTION
'* Dec 19, 2006     MLAB		SIR-IDAQAMSB					ASG Campus Challenge Site Contact Us Form
'*************************************************************************************/ 

	/*************************************
	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 email address field section
    ********************************************/
	function checkEmailAdd(sDocObj)
	{
		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=sDocObj.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("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 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
			            
		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("Die E-Mail-Adresse enth" + String.fromCharCode(228) + "lt keine bekannte Domain bzw. L" + String.fromCharCode(228) + "nderbezeichnung.");
			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;
		}
	}
    
	/*******************************************
		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_name01.value = trimSpaces(oFormObject.first_name01)
	    if (oFormObject.first_name01.value == null || oFormObject.first_name01.value == "")
	    {
			missingfield += "\n     -  Vorname";
	    }
	    
            if (isValidChar(oFormObject.first_name01.value,sValidTextChar)==false) 
            {
				alert("Das Feld Vorname enth" + String.fromCharCode(228) + "lt ein ung" + String.fromCharCode(252) + "ltiges Zeichen.");
				return false;
            } 

	    oFormObject.last_name01.value = trimSpaces(oFormObject.last_name01)
	    if (oFormObject.last_name01.value == null || oFormObject.last_name01.value == "")
	    {
			missingfield += "\n     -  Nachname";
	    }
	    
            if (isValidChar(oFormObject.last_name01.value,sValidTextChar)==false) 
            {
				alert("Das Feld Nachname enth" + String.fromCharCode(228) +  "lt ein ung" + String.fromCharCode(252) + "ltiges Zeichen.");
				return false;
            } 

	    if (oFormObject.country01.selectedIndex==0)
	    {
			missingfield += "\n     -  Land";
	    }
		
		oFormObject.city01.value = trimSpaces(oFormObject.city01)
	    if (oFormObject.city01.value == null || oFormObject.city01.value == "")
	    {
			missingfield += "\n     -  Stadt";
	    }
	    
	        if (isValidChar(oFormObject.city01.value,sValidTextChar)==false) 
            {
                alert("Das Feld Stadt enth" + String.fromCharCode(228) + "lt ein ung" + String.fromCharCode(252) + "ltiges Zeichen.");
				return false;
            } 

		oFormObject.email_address01.value = trimSpaces(oFormObject.email_address01)
	    if (oFormObject.email_address01.value == null || oFormObject.email_address01.value == "")
	    {
			missingfield += "\n     -  E-Mail-Adresse";
		}
		else
		{
			if (isValidChar(oFormObject.email_address01.value,svalidTextChar2)==false) 
				{
					alert("Das Feld E-Mail-Adresse enth"+ String.fromCharCode(228) + "lt ein ung" + String.fromCharCode(252) + "ltiges Zeichen");
					return false;
				} 
			
			if (checkEmailAdd(oFormObject.email_address01.value)==false)
			{
				return false;
			}
		}
		
	    oFormObject.university.value = trimSpaces(oFormObject.university)
	    if (oFormObject.university.value == null || oFormObject.university.value == "")
	    {
			missingfield += "\n     -  Hochschule";
	    }
	    
            if (isValidChar(oFormObject.university.value,sValidTextChar)==false) 
            {
                alert("Das Feld Hochschule enth" + String.fromCharCode(228) + "lt ein ung" + String.fromCharCode(252) + "ltiges Zeichen.");
				return false;
            } 

		oFormObject.subject.value = trimSpaces(oFormObject.subject)
	    if (oFormObject.subject.value == null || oFormObject.subject.value == "")
	    {
			missingfield += "\n     -  Studienfach";
	    }
	    
            if (isValidChar(oFormObject.subject.value,sValidTextChar)==false) 
            {
                alert("Das Feld Studienfach enth" + String.fromCharCode(228) + "lt ein ung" + String.fromCharCode(252) + "ltiges Zeichen.");
				return false;
            } 

		if (oFormObject.status.selectedIndex==0)
	    {
			missingfield += "\n     -  Status";
	    }
	    
	    if (isValidChar(oFormObject.comments02.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.comments02.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.comments02.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.comments02.value.length + " Zeichen eingetragen.");
			oFormObject.comments02.focus();
			return false;
		}
	
		if (isValidChar(oFormObject.survey.value,svalidTextChar2)==false) 
        {
			alert("Das Feld Wie sind Sie auf die Accenture Campus Challenge aufmerksam geworden? enth"+ String.fromCharCode(228) + "lt ein ung" + String.fromCharCode(252) + "ltiges Zeichen.");
			return false;
        } 
		
            if (isValidChar(oFormObject.survey.value,sHTMLTag)==false) 
            {
				alert("Das Feld Wie sind Sie auf die Accenture Campus Challenge aufmerksam geworden? enth"+ String.fromCharCode(228) + "lt ein ung" + String.fromCharCode(252) + "ltiges Zeichen.");
				return false;
            } 

		if (missingfield != "")
		{
			alert("Bitte vervollst" + String.fromCharCode(228) + "ndigen Sie die folgenden Pflichtfelder:\n " + missingfield + " \n\nVielen Dank!");
			return false;
		}
					
		return true;
 
	}
