function jsFormat(type, obj)
{
	switch(type){
		case 'currency': case 'money':
			return(formatCurrency(obj));
		case 'phone': case 'telephone':
			return(formatPhone(obj));
		case 'zip': case 'zipcode': case 'postcode':
			return(formatZip(obj));
		case 'date':
			return(formatDate(obj));
		case 'ssn':
			return(formatSSN(obj));
		case 'email':
			return(checkEmail(obj));
	}
	return null;
}

function formatCurrency(obj) {
   	var num = obj.value;
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
		num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
		cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));

	return (((sign)?'':'-') + '$' + num + '.' + cents);
}

function formatPhone(obj)
{
   var theCount = 0;
   var theString = obj.value;
   var newString = "";
   var myString = theString;
   var theLen = myString.length;
   for ( var i = 0 ; i < theLen ; i++ )
   {
	    if ( (myString.charCodeAt(i) >= 48 ) && (myString.charCodeAt(i) <= 57) )
	    newString = newString + myString.charAt(i);
   }

    var newLen = newString.length;
    var newVal = "";
    for ( var i = 0 ; i < newLen ; i++ )
    {
    	if(i==0){ newVal = "(" + newString.charAt(i); }
    	else{
      	if(i==2){ newVal = newVal + newString.charAt(i) + ")"; 	}
      	else{
	      	if(i==5){ newVal = newVal + newString.charAt(i) + "-"; 	}
	      	else{
		      	if(i<10){ newVal = newVal + newString.charAt(i); 	}
	      	}
      	}
      }
    }
    obj.value = newVal;
}

function test(obj) {
		var y=document.getElementById(obj);
		alert(y.value);
		return true;
}

function formatZip(obj)
{
   var theCount = 0;
   var theString = obj.value;
   var newString = "";
   var myString = theString;
   var theLen = myString.length;
   for ( var i = 0 ; i < theLen ; i++ )
   {
	    if ( (myString.charCodeAt(i) >= 48 ) && (myString.charCodeAt(i) <= 57) )
	    newString = newString + myString.charAt(i);
   }

    var newLen = newString.length;
    var newVal = "";
    for ( var i = 0 ; i < newLen ; i++ )
    {
    	if(i==5){ newVal = newVal + "-" + newString.charAt(i); }
    	else{
      	if(i<9){ newVal = newVal + newString.charAt(i); 	}
      }
    }
    obj.value = newVal;
}

function formatDate(obj)
{
   var theCount = 0;
   var theString = obj.value;
   var newString = "";
   var myString = theString;
   var theLen = myString.length;
   for ( var i = 0 ; i < theLen ; i++ )
   {
	    if ( (myString.charCodeAt(i) >= 48 ) && (myString.charCodeAt(i) <= 57) )
	    newString = newString + myString.charAt(i);
   }

    var newLen = newString.length;
    var newVal = "";
    for ( var i = 0 ; i < newLen ; i++ )
    {
    	if((i==1) || (i==3)){ newVal = newVal + newString.charAt(i) + "/"; }
    	else{
      	if(i<8){ newVal = newVal + newString.charAt(i); 	}
      }
    }
    obj.value = newVal;
}

function formatSSN(obj)
{
   var theCount = 0;
   var theString = obj.value;
   var newString = "";
   var myString = theString;
   var theLen = myString.length;
   for ( var i = 0 ; i < theLen ; i++ )
   {
	    if ( (myString.charCodeAt(i) >= 48 ) && (myString.charCodeAt(i) <= 57) )
	    newString = newString + myString.charAt(i);
   }

    var newLen = newString.length;
    var newVal = "";
    for ( var i = 0 ; i < newLen ; i++ )
    {
    	if ( ( i == 2 ) || ( i == 4 ) )
      {
      	newVal = newVal + newString.charAt(i) + "-";
      }else{
      	if(i < 9){
      		newVal = newVal + newString.charAt(i);
      	}
      }
    }
    obj.value = newVal;
}

function formatNumeric(obj)
{
   var theCount = 0;
   var theString = obj.value;
   var newString = "";
   var myString = theString;
   var theLen = myString.length;
   for ( var i = 0 ; i < theLen ; i++ )
   {
	    if ( (myString.charCodeAt(i) >= 48 ) && (myString.charCodeAt(i) <= 57) )
	    newString = newString + myString.charAt(i);
   }

    var newLen = newString.length;
    var newVal = "";
    for ( var i = 0 ; i < newLen ; i++ )
    {
	 		newVal = newVal + newString.charAt(i);
    }
    obj.value = newVal;
}

function toggleDiv(obj) {
	var el = document.getElementById(obj);
	if ( el.style.display != "none" ) {
		el.style.display = 'none';
	}else{
		el.style.display = '';
	}
}

function openDiv(obj) {
	var el = document.getElementById(obj);
	el.style.display = '';
}

function closeDiv(obj) {
	var el = document.getElementById(obj);
	el.style.display = 'none';
}

function emailCheck (obj) {
	var emailStr = obj.value;

	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=emailStr.match(emailPat);

	if (matchArray==null) {
		alert("Email address seems incorrect (check @ and .'s)");
		return false;
	}

	var user=matchArray[1];
	var domain=matchArray[2];
	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			alert("Ths username contains invalid characters.");
			return false;
   		}
	}

	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			alert("Ths domain name contains invalid characters.");
			return false;
   	}
	}

	if (user.match(userPat)==null) {
		alert("The username doesn't seem to be valid.");
		return false;
	}

	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("Destination IP address is invalid!");
				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("The domain name does not seem to be valid.");
			return false;
   	}
	}

	if (checkTLD && domArr[domArr.length-1].length!=2 &&
		domArr[domArr.length-1].search(knownDomsPat)==-1) {
		alert("The address must end in a well-known domain or two letter " + "country.");
		return false;
	}

	if (len<2) {
		alert("This address is missing a hostname!");
		return false;
	}

	return true;
}

function validateUN(obj)
{
   var theCount = 0;
   var theString = obj.value;
   var newString = "";
   var myString = theString;
   var theLen = myString.length;
   for ( var i = 0 ; i < theLen ; i++ )
   {
	    if (alphaNumericCheck2(myString.charCodeAt(i)))
	    	newString = newString + myString.charAt(i);
   }
   obj.value = newString;
}

function alphaNumericCheck1(theChar) {

	if ((theChar < 48) || (theChar > 122) ||
	   ((theChar > 57) && (theChar < 65)) ||
	   ((theChar > 90) && (theChar < 97))   ) {
		return false;
	} else {
		return true;
	}
}

function alphaNumericCheck2(e)
{
	var key;
	var keychar;

	if (window.event)
	   key = window.event.keyCode;
	else if (e)
	   key = e.which;
	else
	   return true;
	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();

	// control keys
	if ((key==null) || (key==0) || (key==8) ||
	    (key==9) || (key==13) || (key==27) )
	   return true;

	// alphas and numbers
	else if ((("abcdefghijklmnopqrstuvwxyz0123456789").indexOf(keychar) > -1))
	   return true;
	else
	   return false;
}