// JavaScript Document

function CheckValidate()
{
	var validate = false;
		
	
	validate = CheckHear('hear', 'other_charity');

	if(!validate)
	{	
		return validate;
	}
	
	validate = CheckNull('name_charity', 'Name of Charity');
	if(!validate)
	{	
		return validate;
	}
	
	validate = CheckNull('website', 'Website URL');
	if(!validate)
	{	
		return validate;
	}
	
	validate = CheckNull('firstname_contact', 'Contact First Name');
	if(!validate)
	{	
		return validate;
	}
	
	validate = CheckNull('lastname_contact', 'Contact Last Name');
	if(!validate)
	{	
		return validate;
	}
	
	validate = CheckNull('title_contact', 'Contact Title');
	if(!validate)
	{	
		return validate;
	}
	
	validate = CheckNull('addr01', 'Street Address 01');
	if(!validate)
	{	
		return validate;
	}
	
	
	validate = CheckEmail('email');
	if(!validate)
	{
		return validate;
	}
	
	validate = CheckConfirmedEmail('email', 'confirmed_email');
	if(!validate)
	{
		return validate;
	}
	
	validate = CheckZip('zip');
	if(!validate)
	{
		return validate;
	}

	
	validate = CheckPhone('business_phone', 'Business Number');
	if(!validate)
	{
		return validate;
	}
	
	validate = CheckPhone('office_phone', 'Office Number');
	if(!validate)
	{
		return validate;
	}
	
	validate = CheckPhone('mobile_phone', 'Mobile Number');
	if(!validate)
	{
		return validate;
	}
	
	validate = CheckNull('fax', 'Fax Number');
	if(!validate)
	{
		return validate;
	}
	
	validate = CheckHear('specific', 'other_specific');

	if(!validate)
	{	
		return validate;
	}
	
	validate = CheckNull('donation', 'Total non-corporate donations to this Chapter in 2006');
	if(!validate)
	{
		return validate;
	}
	
	validate = CheckNull('donation_size', 'Size of average non-corporate, donation');
	if(!validate)
	{
		return validate;
	}
	
	validate = CheckNull('reason', 'Reason you would like to recommend this charity to be listed with Better World Mortgage?');
	if(!validate)
	{
		return validate;
	}
//	

		
	return validate;
}





//=================check Zip
function CheckZip(zipID) {
var zip=document.getElementById(zipID);
var zipValue = zip.value;
var valid = "0123456789-";
var hyphencount = 0;

if ((zipValue.length!=5) && (zipValue.length!=10)) {
alert("Invalid Zip Code.");
zip.value = "";
zip.focus();
return false;
}
for (var i=0; i < zipValue.length; i++) {
temp = "" + zipValue.substring(i, i+1);
if (temp == "-") hyphencount++;
if (valid.indexOf(temp) == "-1") {
alert("Invalid Zip Code.");
zip.value = "";
zip.focus();
return false;
}
if ((hyphencount > 1) || ((zipValue.length==10) && ""+zipValue.charAt(5)!="-")) {
alert("The hyphen character should be used with a properly formatted 5 digit+four zip code, like '12345-6789'.   Please try again.");
zip.value = "";
zip.focus();
return false;
   }
}
return true;
}
//==================end check Zip

function CheckHear(hearID, otherID){
	var hear=document.getElementById(hearID);
	var other=document.getElementById(otherID);
	

	if (hear.value == "Other"){
		if(CheckNull(otherID, 'Other value'))
		{
			return true;
		}
		else
		{
			return false;
		}
	}

	return true;
}

//================check null
function CheckConfirmedEmail(mailID, confirmedID){
	var mail=document.getElementById(mailID);
	var confirmed=document.getElementById(confirmedID);

	if (mail.value != confirmed.value){

		alert("Confirmed Email not macth.");

		confirmed.focus();

		return false
	}

	return true;
}

//================check null
function CheckNull(objID, msg){
	var obj=document.getElementById(objID);

	var text = obj.value;

	text = text.replace(/^\s*|\s*$/g,"");

	if ((text==null)||(text=="")){

		alert(msg + " cannot be empty.")

		obj.focus();

		return false

	}

	return true;
}
//================end check null


//=======================================email validation
function echeck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   alert("Invalid Email address.");
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("Invalid Email address.");
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("Invalid Email address.");
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("Invalid Email address.");
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("Invalid Email address.");
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Invalid Email address.");
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    alert("Invalid Email address.");
		    return false
		 }

 		 return true					
	}

function CheckEmail(email){
	var emailID=document.getElementById(email);
	if ((emailID.value==null)||(emailID.value=="")){
		alert("Email address cannot be empty.")
		emailID.focus()
		return false
	}
	if (echeck(emailID.value)==false){
		emailID.value=""
		emailID.focus()
		return false
	}
	return true
 }
//===================================end email validation

//===================================phone validation
// 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 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){
	s=stripCharsInBag(strPhone,validWorldPhoneChars);
	return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

function CheckPhone(phone, msg){
	var Phone=document.getElementById(phone);
	
	if ((Phone.value==null)||(Phone.value=="")){
		alert(msg + " cannot be empty");
		Phone.focus()
		return false
	}
	if (checkInternationalPhone(Phone.value)==false){
		alert("Invalid " + msg);
		Phone.value=""
		Phone.focus()
		return false
		
	}
	return true
}
//=====================================end phone validation
