﻿// misc javascript functions

// trim(string);	return string
// validEmail(emailAddressString);   return boolean
// ValidatePhone(number);  return boolean
// formatDate(date-string); return new string



//------------------------------------------
function formatDate(field) {	//
		//format date if missing leading century
		// accept dd/mm/yy(yy)  or dd-mm-yy(yy)
		// output dd/mm/yyyy
		var yy,dd,mm;
		fld = field.value;
		var d1 = fld.split('\/');
		if (d1.length == 1) d1 = fld.split('\-');
		if (d1.length == 1) d1 = fld.split(' ');
		if (d1.length == 3) {
			mm = d1[0]; dd = d1[1]; yy = d1[2];
			if (isNum(yy)) {
				yy = parseFloat(yy);
				if (yy < 20 ) yy=yy+2000;
				if (yy < 100) yy=yy+1900; };
			
			if (isNum(dd) &&  isNum(mm) && isNum(yy)) field.value = mm+'/'+dd+'/'+yy;		
		}; 
};

//-------------------------
function trim(str) { 
    str = str.replace(/[ \s]+$/,"").replace(/^[ \s]+/,""); 
    return str;
	};

//----------------------------------------
// validate Email address
//
function validEmail(email) {	
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email))  return true;
	return false;
	};

//------------------------------------------
//--------------------------------------------------------------
//validate phone number
//
// Declaring required variables
var digits = "0123456789";
var phoneNumberDelimiters = "()- .";     //  non-digit characters which are allowed in phone numbers
var validWorldPhoneChars = phoneNumberDelimiters + "+";    // (a leading + is OK)
var minDigitsInIPhoneNumber = 7;			// Minimum no of digits in an international phone no.
var maxDigitsInIPhoneNumber = 10;
function isInteger(s) { return (parseInt(s) == s - 0);  }

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 || s.length == maxDigitsInIPhoneNumber ));
}

function ValidatePhone(PhoneNumber)		{
	var Phone=PhoneNumber;
	if (Phone==null || Phone=="" || !checkInternationalPhone(Phone))	return false;
	return true;
 }
 
//------------------------------------------
//
//
function formatPhone(field, area) {
	if (ptest = ValidatePhone(field.value)) {  //if good phone number, then format
		var s = field.value;
		s=s.replace(/[^0-9]/gi, "");  //keep only numbers, format into 3 seperate fields
		if (s.length == 7) pnumber = "("+area+") " + s.substr(0,3) + "-" +  s.substr(3)
		else pnumber = "(" + s.substr(0,3) + ") " + s.substr(3,3) + "-" + s.substr(6);
		field.value=pnumber;
		};
	return ptest;
	};

