function ValidateFields(scvControlsId,scvMsg,scvType,BlackBoardId){
	vControlsId=scvControlsId.split(',');
	var vMsg=scvMsg.split(",");
	var vType=scvType.split(",");
	var sMsg="";
	idFocus="";
	for (j=0;j<vControlsId.length;j++)
	{
		if(!ValidateField(vControlsId[j],vType[j])){
			if ((vMsg[j]==null) ||(vMsg[j]=="")) sMsgAux=GetDefaultMsg(vType[j]);
			else sMsgAux=vMsg[j];
			if(sMsg=="")	sMsg+=sMsgAux;
			else	sMsg+=","+sMsgAux ;
			if (idFocus=="") idFocus=vControlsId[j];			
		}
	}
	if (sMsg=="") return true;
	else
	{
		
		var regEx = new RegExp (',', 'gi') ;
		sMsg = sMsg.replace(regEx,"\n");	
		ShowAlert(sMsg)
		return false;		
	}
}
function ValidateFieldsNew(scvControlsId,scvMsg,scvType,BlackBoardId){
	vControlsId=scvControlsId.split(',');
	var vMsg=scvMsg.split(",");
	var vType=scvType.split(",");
	var sMsg="";
	idFocus="";
	for (j=0;j<vControlsId.length;j++)
	{
		if(!ValidateField(vControlsId[j],vType[j])){
			if ((vMsg[j]==null) ||(vMsg[j]=="")) sMsgAux=GetDefaultMsg(vType[j]);
			else sMsgAux=vMsg[j];
			if(sMsg=="")	sMsg+=sMsgAux;
			else	sMsg+=","+sMsgAux ;
			if (idFocus=="") idFocus=vControlsId[j];			
		}
	}
	if (sMsg=="") return true;
	else
	{
		
		var regEx = new RegExp (',', 'gi') ;
		sMsg = sMsg.replace(regEx,",\n");
		sMsg = "<b>This Fields are required or invalid:</b>\n"+ sMsg;
		ShowAlert(sMsg)
		return false;		
	}
}


function ValidateFieldsNew1(scvControlsId,scvMsg,scvType,BlackBoardId){
	vControlsId=scvControlsId.split(',');
	var vMsg=scvMsg.split(",");
	var vType=scvType.split(",");
	var sMsg="";
	idFocus="";
	for (j=0;j<vControlsId.length;j++)
	{
		if(!ValidateField(vControlsId[j],vType[j])){
			if ((vMsg[j]==null) ||(vMsg[j]=="")) sMsgAux=GetDefaultMsg(vType[j]);
			else sMsgAux=vMsg[j];
			if(sMsg=="")	sMsg+=sMsgAux;
			else	sMsg+=","+sMsgAux ;
			if (idFocus=="") idFocus=vControlsId[j];			
		}
	}
	if (sMsg=="") return true;
	else
	{
		
		var regEx = new RegExp (',', 'gi') ;
		sMsg = "<b>This Field is required or invalid:</b>\n"+ sMsg;
		ShowAlert(sMsg)
		return false;		
	}
}
/******************** GENERAL FUNCTION **********************/
function ValidateField(sId,sType)
{
	if(sType==null) sType="txt";
	sType=sType.toLowerCase();
	var obj=document.getElementById(sId);
	switch (sType)
	{
		case "txt":
			return ValidatorTxt(obj);
			break;
		case "date":
			return ValidatorDate(obj);
			break;
		case "float":
			return ValidatorFloat(obj);
			break;
		case "int":
			return ValidatorInt(obj);
			break;
		case "email":
			return ValidatorEmail(obj);
			break;
		case "fax":
			return ValidatorFax(obj);
			break;
		case "password":
			return ValidatorPassword(obj);
			break;
		case "ddl":
			return ValidatorDdl(obj);
			break;
		case "image":
			return ValidatorImage(obj);
			break;
		default:
			return ValidatorTxt(obj);
			break;
	}
}

/*****  GetDefaultMsg ****************/

function GetDefaultMsg(sType){
	sType=sType.toLowerCase();
	switch (sType)
	{
		case "txt":
			return "* Invalid Text";
			break;
		case "date":
			return "* Invalid Date";
			break;
		case "float":
			return "* Invalid float number";
			break;
		case "email":
			return "* Invalid email";
			break;
		case "fax":
			return "* Invalid fax";
			break;
		case "password":
			return "* Invalid password";
			break;
		case "ddl":
			return "* Select ";
			break;
	}
	
}
/******************** VALIDATE TXT FUNCTIONS **********************/

function ValidatorTxt(obj)
{
	var value=Trim(obj.value);
	if(value=="")return false;
	else return true;
}


/******************** VALIDATE DATE FUNCTIONS **********************/

function ValidatorDate(obj)
{ 
    var bOk = true; 
    var value = obj.value;
    if (value != null)
    { 
		bOk = bOk && (ValidateYear(obj)); 
		bOk = bOk && (ValidateMonth(obj)); 
		bOk = bOk && (ValidateDay(obj)); 
		bOk = bOk && (ValidateSeparator(obj)); 
		if (!bOk) return false; 
		else return true; 
    }return  true; 
} 

function ValidateDay(oTxt)
{ 
    var bOk = false; 
    var nDay = parseInt(oTxt.value.split('/')[1],10); 
    bOk = bOk || ((nDay >= 1) && (nDay <= EndMonth(oTxt))); 
    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 = true; 
    var nYear = parseInt(oTxt.value.split('/')[2],10); 
    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 nDay = oTxt.value.split('/')[1]+""; 
	var nIndexSep = sMonth.length +nDay.length +1
    var sep1 = oTxt.value.charAt(sMonth.length); 
    var sep2 = oTxt.value.charAt(nIndexSep); 
    bOk = bOk || ((sep1 == "/") && (sep2 == "/")); 
    return bOk; 
} 

/********************END VALIDATE DATE FUNCTIONS **********************/

/******************** VALIDATE INT FUNCTIONS **********************/

function ValidatorInt(obj)
{
	var Frm=/^\d{1,8}$/;
	if(!Frm.test(obj.value))return false;
	else return true;

}

function ValidatorFloat(obj)
{
	var Frm=/^((\d+(\.\d*)?)|((\d*\.)?\d+))$/;
	if(!Frm.test(obj.value))return false;
	else return true;
}

/******************** VALIDATE INT FUNCTIONS **********************/


/******************** VALIDATE FAX FUNCTIONS***************/
function ValidatorFax(obj)
{
	var Frm=/^\d{1,10}$/;
	if(!Frm.test(obj.value))return false;
	else return true;
}
/******************** END VALIDATE FAX 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 DDL FUNCTIONS**********/
function ValidatorDdl(obj)
{
	var value=obj.value;
	if ((value==-1) || (value==0)) return false;
	else return true;
}

/******************/

/******************** VALIDATE Password FUNCTIONS **********************/
function ValidatorPassword(obj)
{
	var sPasswordFrm=/^([a-z]|[A-Z]|\d){8,20}$/;
	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";
		ShowAlert(sMsg);
		/*obj.focus();
		obj.select();*/
		return false;
	}
}
/*********** VALIDATE CONFIRM PASSWORD FUNCTIONS*********************/

/*********** VALIDATE EXTENTION*********************/

function ValidatorImage(obj){
	if(ValidateExt(obj,"jpg")
		||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 cellpading=0 border=0 class=resalted><tr><td width=5></td><td valign=top>*</td><td> Invalid Date Range</td></tr></table>";
	}
	return bOk;
	
}


function ValidateFields_BlackBoard(scvControlsId,scvMsg,scvType,BlackBoardId){
	vControlsId=scvControlsId.split(',');
	var vMsg=scvMsg.split(",");
	var vType=scvType.split(",");
	var sMsg="";
	idFocus="";
	for (j=0;j<vControlsId.length;j++)
	{
		if(!ValidateField(vControlsId[j],vType[j])){
			if ((vMsg[j]==null) ||(vMsg[j]=="")) sMsgAux=GetDefaultMsg(vType[j]);
			else sMsgAux=vMsg[j];
			if(sMsg=="")	sMsg+=sMsgAux;
			else	sMsg+=","+sMsgAux ;
			if (idFocus=="") idFocus=vControlsId[j];			
		}
	}

	if (sMsg=="") return true;
	else{
		if ((BlackBoardId==null)||(BlackBoardId=="")){
			sMsg=replaceSubstring(sMsg,',','\n\r');
			alert(sMsg);
		}
		else{			
			sMsg="<table cellspacing=0 cellpading=0 border=0 class=resalted><tr>"+sMsg;
			sMsg=replaceSubstring(sMsg,'*','<td width=5></td><td valign=top>*</td><td>');
			sMsg=replaceSubstring(sMsg,',','</tr><tr>');
			sMsg=sMsg+"</tr></table>";
			var objBlackBoard=document.getElementById(BlackBoardId);
			objBlackBoard.innerHTML = "";
			if (objBlackBoard.innerHTML.length==0)objBlackBoard.innerHTML+=sMsg+'';		
			else objBlackBoard.innerHTML+="<br>"+sMsg+'';		
		}
		document.getElementById(idFocus).focus();
		return false;		
	}
}

/***********END VALIDATE EXT*********************/
		
