/*







 +-------------------------------------------------------------------+







 |                  J S - C H E C K F O R M   (v1.3)                 |







 |                                                                   |







 | Copyright Gerd Tentler               www.gerd-tentler.de/tools    |







 | Created: Oct. 23, 2001               Last modified: Jun. 17, 2006 |







 +-------------------------------------------------------------------+







 | This program may be used and hosted free of charge by anyone for  |







 | personal purpose as long as this copyright notice remains intact. |







 |                                                                   |







 | Obtain permission before selling the code for this program or     |







 | hosting this software on a commercial website or redistributing   |







 | this software over the Internet or in any other medium. In all    |







 | cases copyright must remain intact.                               |







 +-------------------------------------------------------------------+















======================================================================================================















 ARGUMENTS:















  - form-name or -number







  - 'field:title:type:minimum length'[, ...]  (type = number / mail / url / date(format) / [none])















 Example:















 checkForm('frm1', 'name:::2', 'age::number:1', 'eMail:e-mail:mail:1', 'homepage::url:0',







           'birthday::date(dmy):1');















------------------------------------------------------------------------------------------------------







 This script was tested with the following systems and browsers:















 - Windows XP: IE 6, NN 7, Opera 7, Firefox 1







 - Mac OS X:   IE 5, Safari 1















 If you use another browser or system, this script may not work for you - sorry.















 NOTE: Safari 1 on Mac OS X does only accept dates between Jan. 1, 1901 and Dec. 31, 2037 as valid.







======================================================================================================







*/







//--------------------------------------------------------------------------------------------------------







// Language settings







//--------------------------------------------------------------------------------------------------------















var msgNumber  = "must be a number";







var msgEMail   = "must be a valid e-mail address";







var msgPhone   = "must be a valid one";







var msgURL     = "must be a web address";







var msgDate    = "must be a date";







var msgFillOut = "Please fill out";







var msgNoForm  = "Form does not exist";







var msgNoField = "Field does not exist";







//var msgUnsecured = "Please Choose";















//--------------------------------------------------------------------------------------------------------







// Functions







//--------------------------------------------------------------------------------------------------------















function _trim(str) {







  if(str) {







    str = str.replace(/^\s+/, "");







    str = str.replace(/\s+$/, "");







  }







  return str;







}















function _isDate(year, month, day) {







  month--;







  if(year < 100) year += 2000;







  var d = new Date(year, month, day);







  return ((day == d.getDate()) && (month == d.getMonth()) && (year == d.getFullYear()));







}















function checkForm() {







	var args = checkForm.arguments;



	var f = args[0];



	var msg = "";



	var arr, field, title, type, minLength, elem, val, cnt, nr, i, j;



	var format, d, day, month, year;



	//var valid_phone = /^\(\d\d\d\) \d\d\d-\d\d\d\d$/;

	var valid_phone = /^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/;



	var valid_url = /^(https?|ftp):\/\/([a-z0-9._-]+:[a-z0-9._-]+@)?[a-z0-9äöüÄÖÜ#._\/~% -]+(\?([a-z0-9_-]+(=[a-zA-Z0-99äöüÄÖÜß+%?_-]+&?)?)*)?$/i;



	var valid_mail = /^[a-z0-9._-]+@[a-z0-9äöüÄÖÜ.-]+\.[a-z]{2,4}$/i;



	



	if(document.forms[f]) {



		for(i = 1; i < args.length; i++) {



			arr = args[i].split(":");



			field = _trim(arr[0]);



			title = _trim(arr[1]);



			if(!title) title = field;



			type = _trim(arr[2].toLowerCase());      



			minLength = _trim(arr[3]);



			elem = document.forms[f].elements[field];



			if(elem) {



				val = _trim(elem.value);



				if(val != "") {



					if(type == "number") {



						val = val.replace(",", ".");



						if(isNaN(val))



						{



							msg += '"' + title + '" ' + msgNumber + "\n";



							elem.value = "";



						}



					}



					else if(type == "phonenumber" && val.search(valid_phone) == -1)



					{



						msg += '"' + title + '" ' + msgPhone + "\n";

						

						if(f == "f1"){

							document.getElementById("home_phone1").value = "";

	

							document.getElementById("home_phone2").value = "";

	

							document.getElementById("home_phone3").value = "";

						}

						else{

							document.getElementById("phoneside").value = "";

						}



					}



					else if(type == "mail" && val.search(valid_mail) == -1)



					{



						msg += '"' + title + '" ' + msgEMail + "\n";



						elem.value = "";



					}



					else if(type == "url" && val.search(valid_url) == -1)



					{



						msg += '"' + title + '" ' + msgURL + "\n";



						elem.value = "";



					}



					else if(type.indexOf("date") != -1) {



						if(type.indexOf("(") != -1) format = type.substr(type.indexOf("("));



						else format = "(dmy)";



						d = val;



						for(j = 1; j < format.length - 1; j++) {



							cnt = d.search(/[^0-9]/);



							if(cnt == -1) cnt = d.length;



							nr = d.substr(0, cnt);



							nr = parseInt(nr.replace(/^0/, ''));



							switch(format.charAt(j)) {



								case "d": day = nr; d = d.substr(cnt + 1); break;



								case "m": month = nr; d = d.substr(cnt + 1); break;



								case "y": year = nr; d = d.substr(cnt + 1); break;



							}



						}



						if(!_isDate(year, month, day)) 



						{



							msg += '"' + title + '" ' + msgDate + "\n";



							elem.value = "";



						}



					}



				}



				if(minLength) {



					if(elem.length) {



						if(elem.options) {



							for(j = cnt = 0; j < elem.options.length; j++) {



								if(elem.options[j].selected && elem.options[j].value != "") cnt++;



							}



						}



						else for(j = cnt = 0; j < elem.length; j++) {



							if(elem[j].checked) cnt++;



						}



					}



					else if(elem.type == "checkbox") cnt = elem.checked ? 1 : 0;



					else cnt = val.length;



					if(cnt < minLength)



					{



						msg += msgFillOut + ' "' + title + '"\n';



						elem.value = "";



					}



				}



			}



			else msg += msgNoField + ': "' + field + '"\n';



		}



		if(msg) 



		{



			alert(msg);

			return false;



			/*document.getElementById("first_name").value = "" ;



			document.getElementById("last_name").value = "" ;



			document.getElementById("state").value = "" ;



			document.getElementById("home_phone1").value = "" ;



			document.getElementById("home_phone2").value = "" ;



			document.getElementById("home_phone3").value = "" ;



			document.getElementById("alternate_phone1").value = "" ;



			document.getElementById("alternate_phone2").value = "" ;



			document.getElementById("alternate_phone3").value = "" ;



			document.getElementById("eMail").value = "" ;



			document.getElementById("unsecured_debt").value = "" ;



			document.getElementById("first_name").focus() ;*/



		}



		else {

				document.forms[f].submit();

				return true;

		}



	}



	else{

		alert(msgNoForm + ': "' + f1 + '"');

		return false;

	}



}







function phoneNumber()



	{



		//document.f1.phonenumber.value = "(" + document.f1.home_phone1.value + ") " + document.f1.home_phone2.value + "-" + document.f1.home_phone3.value;
		
		document.f1.phonenumber.value =  document.f1.home_phone.value;



		//alert(document.f1.phonenumber.value);



	}



	



function formvalidation()



 {



	



 	if(document.getElementById("first_name").value.length == 0 || document.getElementById("last_name").value.length==0 ||document.getElementById("home_phone1").value.length == 0 || document.getElementById("home_phone2").value.length == 0 || document.getElementById("home_phone3").value.length == 0 ||document.form1.state.selectedIndex==0|| document.form1.creditcarddebt.selectedIndex == 0)



	



	{



	alert("Please Fill all Required Fields");



	 /*document.getElementById("first_name").value = "" ;



	 document.getElementById("last_name").value = "" ;



	 document.getElementById("state").value = "" ;



	 document.getElementById("home_phone1").value = "" ;



	 document.getElementById("home_phone2").value = "" ;



	 document.getElementById("home_phone3").value = "" ;



	 document.getElementById("alternate_phone1").value = "" ;



	 document.getElementById("alternate_phone2").value = "" ;



	 document.getElementById("alternate_phone3").value = "" ;



	 document.getElementById("eMail").value = "" ;



	 document.getElementById("employmentstatus").value = "" ;



	 document.getElementById("creditcarddebt").value = "" ;



	 document.getElementById("comments").text = "" ;



	 document.getElementById("first_name").focus();*/



	 return false;



    }



    else if(phoneValidate() == false )



	{



		document.getElementById("home_phone1").value = "" ;



	 	document.getElementById("home_phone2").value = "" ;



		document.getElementById("home_phone3").value = "" ;



		return false;



	}



	else if(checkEmail(document.getElementById("eMail").value) == false)  



	{



		document.getElementById("eMail").value = "" ;



		return false;



	}



	else 



		 return true;



    



 }



 /**



 * DHTML phone number validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)



 */







// Declaring required variables



var digits = "0123456789";



// non-digit characters which are allowed in phone numbers



var phoneNumberDelimiters = "()- ";



// characters which are allowed in international phone numbers



// (a leading + is OK)



var validWorldPhoneChars = phoneNumberDelimiters + "+";



// Minimum no of digits in an international phone no.



var minDigitsInIPhoneNumber = 10;







function isInteger(s)



{   var i;



    for (i = 0; i < s.length; i++)



    {  



        // Check that current character is number.



        var c = s.charAt(i);



        if (((c < "0") || (c > "9"))) return false;



    }



    // All characters are numbers.



    return true;



}



function trim(s)



{   var i;



    var returnString = "";



    // Search through string's characters one by one.



    // If character is not a whitespace, append to returnString.



    for (i = 0; i < s.length; i++)



    {  



        // Check that current character isn't whitespace.



        var c = s.charAt(i);



        if (c != " ") returnString += c;



    }



    return returnString;



}



function stripCharsInBag(s, bag)



{   var i;



    var returnString = "";



    // Search through string's characters one by one.



    // If character is not in bag, append to returnString.



    for (i = 0; i < s.length; i++)



    {  



        // Check that current character isn't whitespace.



        var c = s.charAt(i);



        if (bag.indexOf(c) == -1) returnString += c;



    }



    return returnString;



}







function checkInternationalPhone(strPhone){



var bracket=3



strPhone=trim(strPhone)



if(strPhone.indexOf("+")>1) return false



if(strPhone.indexOf("-")!=-1)bracket=bracket+1



if(strPhone.indexOf("(")!=-1 && strPhone.indexOf("(")>bracket)return false



var brchr=strPhone.indexOf("(")



if(strPhone.indexOf("(")!=-1 && strPhone.charAt(brchr+2)!=")")return false



if(strPhone.indexOf("(")==-1 && strPhone.indexOf(")")!=-1)return false



s=stripCharsInBag(strPhone,validWorldPhoneChars);



return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);



}







function phoneValidate(){



    //var Phone=document.form1.home_phone1



	var Phonenum=document.form1.home_phone1.value+document.form1.home_phone2.value+document.form1.home_phone3.value;



	







    if (checkInternationalPhone(Phonenum)==false){



        alert("Please Enter a Valid Phone Number");



        document.form1.home_phone1.value="" ;



		document.form1.home_phone2.value="" ;



		document.form1.home_phone3.value="" ;



        document.form1.home_phone1.focus()



        return false;



    }



    return true;



 }



 



 function checkEmail(inputvalue)



 {	



    var pattern=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;



    if(pattern.test(inputvalue))



	{         



		return true;   



    }



	



	else



	{   alert("Please Valid Email Id");



		document.form1.eMail.value = "" ;



		document.form1.eMail.focus()



		return false; 



		



    }



}



 











//--------------------------------------------------------------------------------------------------------






