

function ValidatorDate_MM_YY(obj)
{ 
    var bOk = true; 
    var obj=document.getElementById(obj);
    var value = obj.value;
    //alert(value);
    if (value != null)
    { 
		//alert("1");
		bOk = bOk && (ValidateYear(obj)); 
		//alert("2");
		bOk = bOk && (ValidateMonth(obj)); 
		//alert("3");
		bOk = bOk && (ValidateSeparator_MM_YY(obj)); 
		//alert("4");
		if (!bOk) return false; 
		else return true; 
    }return  true; 
} 

function ValidatorDate(obj)
{ 
    var bOk = true; 
    var value = obj.value;
    //alert(value);
    if (value != null)
    { 
		//alert("1");
		bOk = bOk && (ValidateYear(obj)); 
		//alert("2");
		bOk = bOk && (ValidateMonth(obj)); 
		//alert("3");
		bOk = bOk && (ValidateDay(obj)); 
		//alert("4");
		bOk = bOk && (ValidateSeparator(obj)); 
		//alert("5");
		if (!bOk) return false; 
		else return true; 
    }return  true; 
} 

function ValidateDay(oTxt)
{ 
    var bOk = false; 
    var nDay = parseInt(oTxt.value.split('/')[1],10); 
    //alert("31");
   // var nDay = parseInt(oTxt.value.substr(3, 2), 10); 
    bOk = bOk || ((nDay >= 1) && (nDay <= EndMonth(oTxt))); 
    //alert("32");
    return bOk; 
} 

function EndMonth(oTxt)
{ 
	var nYear = parseInt(oTxt.value.split('/')[2],10); 
    var nMonth = parseInt(oTxt.value.split('/')[0],10); 
    var nDay = parseInt(oTxt.value.split('/')[1],10); 
    var nRes = 0; 
    switch (nMonth){ 
     case 1: nRes = 31; break; 
     case 2: nRes = 28; break; 
     case 3: nRes = 31; break; 
     case 4: nRes = 30; break; 
     case 5: nRes = 31; break; 
     case 6: nRes = 30; break; 
     case 7: nRes = 31; break; 
     case 8: nRes = 31; break; 
     case 9: nRes = 30; break; 
     case 10: nRes = 31; break; 
     case 11: nRes = 30; break; 
     case 12: nRes = 31; break; 
    } 
    return nRes + (((nMonth == 2) && (nYear % 4) == 0)? 1: 0); 
} 

function ValidateMonth(oTxt)
{ 
    var bOk = false; 
    var nMonth = parseInt(oTxt.value.split('/')[0],10); 
    bOk = bOk || ((nMonth >= 1) && (nMonth <= 12)); 
    return bOk; 
} 

function ValidateYear(oTxt)
{ 
	var bOk = false; 
	
	var vDate=oTxt.value.split('/');
	var sYear=vDate[vDate.length-1];
    var nYear = parseInt(sYear,10); 
    if(!isNaN(nYear)){
		if (((sYear.length==2)&&(nYear>-1) &&(nYear<100))||((nYear>1900) &&(nYear<2500))) bOk=true;
	}
    return bOk; 
}

function isDigit(sChr)
{ 
	var sCod = sChr.charCodeAt(0); 
    return ((sCod > 47) && (sCod < 58)); 
} 

function ValidateSeparator(oTxt)
{ 
    var bOk = false; 
    var sMonth = oTxt.value.split('/')[0]+""; 
    var sDay = oTxt.value.split('/')[1]+""; 
	var nIndexSep = sMonth.length +sDay.length +1
    var sep1 = oTxt.value.charAt(sMonth.length); 
    var sep2 = oTxt.value.charAt(nIndexSep); 
    bOk = bOk || ((sep1 == "/") && (sep2 == "/")); 
    return bOk; 
} 

function ValidateSeparator_MM_YY(oTxt)
{ 
    var bOk = false; 
    var sMonth = oTxt.value.split('/')[0]+""; 
    var sep1 = oTxt.value.charAt(sMonth.length); 
    bOk = bOk || (sep1 == "/"); 
    return bOk; 
} 

/********************END VALIDATE DATE FUNCTIONS **********************/

/******************** VALIDATE EMAIL FUNCTIONS **********************/

function ValidatorEmail(obj)
{ 
	if(obj.value=="")	return false;
	if(!obj.value.length||obj.disabled) return true; // blank fields are the domain of requireValue 
	
    var phony= /@(\w+\.)*example\.(com|net|org)$/i;
    if(phony.test(obj.value))	return false; 
    
    var emailfmt= /^\w+([.-]\w+)*@\w+([.-]\w+)*\.\w{2,8}$/;
    if(!emailfmt.test(obj.value))	return false;
	return true;
}

/********************END VALIDATE EMAIL FUNCTIONS **********************/

/******************** VALIDATE Password FUNCTIONS **********************/
function ValidatorPassword(obj)
{
	var sPasswordFrm=/^([a-z]|[A-Z]|\d){8,100}$/;
	if(!sPasswordFrm.test(obj.value)) return false;
	else return true;
}
/********************END VALIDATE Password FUNCTIONS **********************/


/*********** VALIDATE CONFIRM PASSWORD FUNCTIONS*********************/
function ConfirmPwd(sId1,sId2,sMsg,BlackBoardId)
{
	var obj =document.getElementById(sId1);
	var Password = document.getElementById(sId1).value;
	var ConfirmPassword =document.getElementById(sId2).value;
	if(Password==""||ConfirmPassword=="")
	{
		sMsg="* 'Password' and 'Confirm Password' are required";
		if (BlackBoardId==null)Alert(sMsg);
		else{
			var objBlackBoard=document.getElementById(BlackBoardId);
			if (objBlackBoard.innerHTML.length==0)objBlackBoard.innerHTML+=sMsg;
			else objBlackBoard.innerHTML+="<br>"+sMsg;
		}
		obj.focus();
		obj.select();
		return false;
	}
	if(Password==ConfirmPassword)return true;
	else
	{
		if (sMsg=="")sMsg="'Password' and 'Confirm Password' are distinct";
		if (BlackBoardId==null)Alert(sMsg);
		else{
			var objBlackBoard=document.getElementById(BlackBoardId);
			if (objBlackBoard.innerHTML.length==0)objBlackBoard.innerHTML+=sMsg;
			else objBlackBoard.innerHTML+="<br>"+sMsg;
		}
		obj.focus();
		obj.select();
		return false;
	}
}
/*********** VALIDATE CONFIRM PASSWORD FUNCTIONS*********************/

/*********** VALIDATE EXTENTION*********************/

function ValidatorImage(obj){
	if(ValidateExt(obj,"jpg")
		//||ValidateExt(obj,"bmp")
		||ValidateExt(obj,"gif")
		) return true;
	else return false;
}


function ValidateExt(obj,sValidateExts){
	var sFile=obj.value;
	var len=sFile.length;
	var sExt=sFile.substring(len-3,len).toUpperCase();
	vValidateExt=sValidateExts.split(',');
	for(i=0;i<vValidateExt.length;i++){
		sValidateExt=vValidateExt[i].toUpperCase();
		if(sExt==sValidateExt)	return true;
	}
	obj.focus();
	return false;		
}	

function ValidatorRangeDate(DateFromId,DateToId,BlackBoardId){
	var sDateFrom=document.getElementById(DateFromId).value
	var sDateTo=document.getElementById(DateToId).value
	var vDateFrom=sDateFrom.split('/');
	var vDateTo=sDateTo.split('/');
	var nYearFrom=parseInt(vDateFrom[2],10);
	var nMonthFrom=parseInt(vDateFrom[0],10);
	var nDayFrom=parseInt(vDateFrom[1],10);
	
	var nYearTo=parseInt(vDateTo[2],10);
	var nMonthTo=parseInt(vDateTo[0],10);
	var nDayTo=parseInt(vDateTo[1],10);
	var bOk=true;
	if ((nYearFrom==1900) ||(nYearTo==1900)) bOk=false;
	if(!bOk||(nYearFrom>nYearTo)){	
		bOk=false;
	}
	else if(nYearFrom==nYearTo && nMonthFrom>nMonthTo){
		bOk=false;
	}
	else if(nYearFrom==nYearTo && nMonthFrom==nMonthTo && nDayFrom>nDayTo){
		bOk=false;
	}
	if( !bOk && (BlackBoardId!=null)){
		document.getElementById(BlackBoardId).innerHTML="<table cellspacing=0 cellpadding=0 border=0 class=resalted><tr><td width=5></td><td valign=top>*</td><td> Invalid Date Range</td></tr></table>";
	}
	return bOk;
	
}
/***********END VALIDATE EXT*********************/
		
		
		
function ValidatorCreditCardNumber(obj) {
	// Verifica que el número de la tarjeta de crédito/débito tiene un formato válido
	var ccRE=/\W/gi;
	var obj=document.getElementById(obj);
	if(obj.value==null){ return true;}
	var CCnumber=obj.value.replace(ccRE, "");
	if (isNaN(CCnumber)) {	return false;}
	var v = "0123456789";
	var w = "";
	for (var i=0; i < CCnumber.length; i++) {
		x = CCnumber.charAt(i);
		if (v.indexOf(x,0) != -1)
		w += x;
	}
	var j = w.length / 2;
	if (j < 6.5 || j > 8 || j == 7) return false;
	var k = Math.floor(j);
	var m = Math.ceil(j) - k;
	var c = 0;
	for (var i=0; i<k; i++) {
		a = w.charAt(i*2+m) * 2;
		c += a > 9 ? Math.floor(a/10 + a%10) : a;
	}
	for (var i=0; i<k+m; i++) c += w.charAt(i*2+1-m) * 1;
	return (c%10 == 0);
}

function DelLeftZero(sNatural)
{
	var vNatural=sNatural.split("");
	sReturn="";
	for (var i=0;i<vNatural.length;i++){
		sReturn+=(vNatural[i]!="0")?vNatural[i]:"";
	}
	return sReturn;
}

function ValidatorNatural(obj)
{
	if(ValidatorInt(obj)){
		var sValue=DelLeftZero(obj.value);
		var iNatural=parseInt(sValue);
		if(iNatural>0) return true;
		else return false;
	}
	else return false;

}
