function TextReq(element,msg){
	if (element.value == ""){
		alert(msg);
		element.focus();
		return false;
	}
		else return true;
}

function NumMax(element,msg){
	if (element.value * 0 != 0 || element.value.length!=element.maxLength){
		if (msg != "") alert(msg);
		element.focus();
		return false;
	}
		else return true;
}

function EmailReq(element,msg){
	if (!isEmail(element.value)){
		alert(msg);
		element.focus();
		return false;
	}
		else return true;
}

function CCReq(element,msg){
	if (!isCC(element.value)){
		alert(msg);
		element.focus();
		return false;
	}
		else return true;
}


function MatchReq(elementa,elementb,msg){
	if (elementa.value != elementb.value){
		alert(msg);
		//elementb.value = '';
		elementa.focus();
		return false;
	}
		else return true;
}

function CheckSS(element1,element2,element3,msg1,msg2){
	if (element1.value == "" || element2.value == "" || element3.value == ""){
		if (confirm(msg1)){
			return true;
		}
		else return SSNumCheck(element1,element2,element3,msg2);
	}
	else {
		if (!NumMax(element1,"") || !NumMax(element2,"") || !NumMax(element3,"")){
			if(!confirm(msg1)){
			return SSNumCheck(element1,element2,element3,msg2);
			}
			else return true;
		}
		else return true;
	}
}

function SSNumCheck(element1,element2,element3,msg){
	if (!NumMax(element1,msg)) return false;		
	if (!NumMax(element2,msg)) return false;		
	return NumMax(element3,msg);					
}

function RadioReq(element,msg){
	if (!element[0].checked && !element[1].checked){
		alert(msg);
		element[0].focus();
		return false;
	}
		else return true;
}

function MultipleReq(element,msg){
	for (i=0,j=element.length; i < j; i++){
		if (element[i].checked) return true;
	}
	alert(msg);
	element[0].focus();
	return false;
}

function SelectReq(element,msg){
	if (element.selectedIndex == 0){
		alert(msg);
		element.focus();
		return false;
	}
		else return true;
}

function SelectExp(element1,element2,msg){
	var now = new Date();
	if (element2.options[element2.selectedIndex].value <  now.getFullYear()){
		alert(msg);
		element2.focus();
		return false;		
	}
	if (element2.options[element2.selectedIndex].value >  now.getFullYear()) return true;
	if (element1.selectedIndex > now.getMonth()) return true;
	alert(msg);
	element1.focus();
	return false;
}
function toUnicode(element,nextelement)
	{
	if (element.value.length==element.maxLength)
		nextelement.focus();
	}
	
function ValidateNumeric(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);

// control keys
if ((key==null) || (key==0) || (key==8) || 
    (key==9) || (key==13) || (key==27) )
   return true;

// numbers
else if ((("0123456789").indexOf(keychar) > -1))
   return true;

else
   return false;
}

function isEmail(str) {
  // Support Regular Expressions
  var supported = 0;
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }
  if (!supported) 
    return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(str) && r2.test(str));
}
function isCC(s) {
// remove non-numerics
var v = "0123456789";
var w = "";
for (i=0; i < s.length; i++) {
x = s.charAt(i);
if (v.indexOf(x,0) != -1)
w += x;
}
// validate number
j = w.length / 2;
if (j < 6.5 || j > 8 || j == 7) return false;
k = Math.floor(j);
m = Math.ceil(j) - k;
c = 0;
for (i=0; i<k; i++) {
a = w.charAt(i*2+m) * 2;
c += a > 9 ? Math.floor(a/10 + a%10) : a;
}
for (i=0; i<k+m; i++) c += w.charAt(i*2+1-m) * 1;
return (c%10 == 0);
}
