requiredFields = new Array() ;
regularExpressionFields = new Array() ;
dateValidatorFields = new Array() ;
checkboxRequiredFields = new Array();
confirmPasswordRequieredFields = new Array();
minLengthFields = new Array();
minLengthNumberFields = new Array();
var requiredFieldsTotal=0;
var regularExpressionFieldsTotal=0;
var dateValidatorFieldsTotal=0;
var checkboxRequiredFieldsTotal=0;
var confirmPasswordRequieredFieldsTotal=0;
var minLengthFieldsTotal=0;
var minLengthNumberFieldsTotal=0;
var summaryMessage;			


/*
addRequiredField("txtFromEmail","The E-Mail is required","tdFromEmail","trFromEmail");
addRegularExpressionField("FromEmail","The E-Mail is invalid<br/>(ej:name@domain.com)","tdFromEmail","trFromEmail","mail");			

*/

function resetInfo()
{
	requiredFields = new Array() ;
	regularExpressionFields = new Array() ;
	dateValidatorFields = new Array() ;
	checkboxRequiredFields = new Array();
	confirmPasswordRequieredFields = new Array();
	minLengthFields = new Array();
	minLengthNumberFields = new Array();
	requiredFieldsTotal=0;
	regularExpressionFieldsTotal=0;
	dateValidatorFieldsTotal=0;
	checkboxRequiredFieldsTotal=0;
	confirmPasswordRequieredFieldsTotal=0;
	minLengthFieldsTotal=0;
	minLengthNumberFieldsTotal=0;	
}

function addRequiredField(objectName,lblName,errorDescription,tdName,trName,spanMessage)
{
	requiredFields[requiredFieldsTotal] = new createRequiredField(objectName,lblName,errorDescription,tdName,trName,spanMessage);
	requiredFieldsTotal = requiredFieldsTotal+1;
}

function addMinLengthField(objectName,lblName,errorDescription,tdName,trName,spanMessage,min)
{
	minLengthFields[minLengthFieldsTotal] = new createMinLengthField(objectName,lblName,errorDescription,tdName,trName,spanMessage,min);
	minLengthFieldsTotal = minLengthFieldsTotal+1;
}

function addMinLengthNumberField(objectName,lblName,errorDescription,tdName,trName,spanMessage,min)
{
	minLengthNumberFields[minLengthNumberFieldsTotal] = new createMinLengthNumberField(objectName,lblName,errorDescription,tdName,trName,spanMessage,min);
	minLengthNumberFieldsTotal = minLengthNumberFieldsTotal+1;
}


function addRegularExpressionField(objectName,lblName,errorDescription,tdName,trName,fieldType, range_1, range_2)
{
	regularExpressionFields[regularExpressionFieldsTotal] = new createRegularExpressionField(objectName,lblName,errorDescription,tdName,trName,fieldType, range_1, range_2);
	regularExpressionFieldsTotal = regularExpressionFieldsTotal+1;
}
function addDateValidatorField(dayName, monthName, yearName, errorDescription, tdName, required)
{
	dateValidatorFields[dateValidatorFieldsTotal] = new createDateValidatorField(dayName, monthName, yearName, errorDescription, tdName, required);
	dateValidatorFieldsTotal = dateValidatorFieldsTotal+1;
}
function addCheckboxRequiredFields(objectName,lblName,errorDescription,tdName,trName,spanMessage)
{
	checkboxRequiredFields[checkboxRequiredFieldsTotal]= new createCheckBoxValidatorField(objectName,lblName,errorDescription,tdName,trName,spanMessage);
	checkboxRequiredFieldsTotal = checkboxRequiredFieldsTotal+1;
}
function addPasswordConfirm(objectPass,objectConfirmPass,lblName,errorDescription,tdName,trName,spanMessage)
{
	confirmPasswordRequieredFields[confirmPasswordRequieredFieldsTotal]= new createConfirmPassWord(objectPass,objectConfirmPass,lblName,errorDescription,tdName,trName,spanMessage);
	confirmPasswordRequieredFieldsTotal = confirmPasswordRequieredFieldsTotal+1;

}

function createRequiredField(objName,lblName, errorDesc, tdName, trName, spanMessage) {
	this.name = objName;
	this.message = errorDesc;
	this.td = tdName;
	this.tr = trName;				
	this.span = spanMessage;
	this.label = lblName;
}

function createMinLengthField(objName,lblName, errorDesc, tdName, trName, spanMessage,min) {
	this.name = objName;
	this.message = errorDesc;
	this.td = tdName;
	this.tr = trName;				
	this.span = spanMessage;
	this.label = lblName;
	this.minLength = min;
}

function createMinLengthNumberField(objName,lblName, errorDesc, tdName, trName, spanMessage,min) {
	this.name = objName;
	this.message = errorDesc;
	this.td = tdName;
	this.tr = trName;				
	this.span = spanMessage;
	this.label = lblName;
	this.minLength = min;
}

function createDateValidatorField(objDay, objMonth, objYear, errorDesc, tdName, required) {
	this.day = objDay;
	this.month = objMonth;
	this.year = objYear;
	this.message = errorDesc;
	this.td = tdName;
	this.required = required;				
}

function createRegularExpressionField(objName, lblName , errorDesc, tdName, trName, spanMessage, fieldType, range_1, range_2) {
	this.name = objName;
	this.message = errorDesc;
	this.td = tdName;				
	this.type = fieldType;
	this.tr = trName;
	this.span = spanMessage;
	this.range1 = range_1;
	this.range2 = range_2;
	this.label = lblName;
}
function createCheckBoxValidatorField(objName,lblName, errorDesc, tdName, trName, spanMessage) {
	this.name = objName;
	this.message = errorDesc;
	this.td = tdName;
	this.tr = trName;				
	this.span = spanMessage;
	this.label = lblName;
}
function createConfirmPassWord(objectPass,objectConfirmPass,lblName,errorDescription,tdName,trName,spanMessage)
{
	this.name			= objectPass;
	this.nameConfirm	= objectConfirmPass
	this.message		= errorDescription;
	this.td				= tdName;
	this.tr				= trName;				
	this.span			= spanMessage;
	this.label			= lblName;
}

function cleanFields() {	
	for (i=0;i<requiredFieldsTotal;i++)
	{					
		if (requiredFields[i].td!=null)
		
			document.getElementById(requiredFields[i].td).className = "label";
		if (requiredFields[i].tr!=null)
			document.getElementById(requiredFields[i].tr).className = "displayNone";
		

		document.getElementById(requiredFields[i].name).className = "textbox";
		
	}
	for (i=0;i<regularExpressionFieldsTotal;i++)
	{					
		if (regularExpressionFields[i].td!=null)		
			document.getElementById(regularExpressionFields[i].td).className = "label";
			//document.getElementById(requiredFields[i].tr).className = "displayNone";
		if (regularExpressionFields[i].tr!=null)		
			document.getElementById(regularExpressionFields[i].tr).className = "displayNone";
		document.getElementById(regularExpressionFields[i].name).className = "textbox";
	}
	for (i=0;i<dateValidatorFieldsTotal;i++)
	{					
		if (dateValidatorFields[i].td!=null)
			document.getElementById(dateValidatorFields[i].td).className = "";
	}
	
	for (i=0;i<minLengthFieldsTotal;i++)
	{					
		if (minLengthFields[i].td!=null)
			document.getElementById(minLengthFields[i].td).className = "";
		document.getElementById(minLengthFields[i].name).className = "textbox";
	}
	
	for (i=0;i<minLengthNumberFieldsTotal;i++)
	{					
		if (minLengthNumberFields[i].td!=null)
			document.getElementById(minLengthNumberFields[i].td).className = "";
		document.getElementById(minLengthNumberFields[i].name).className = "textbox";
	}
	
	for (i=0;i<confirmPasswordRequieredFieldsTotal;i++)
	{					
		if (confirmPasswordRequieredFields[i].td != null)
			document.getElementById(confirmPasswordRequieredFields[i].td).className = "";
		document.getElementById(confirmPasswordRequieredFields[i].name).className = "textbox";
	}
}


function validation(summary, summaryTitle)
{
	summaryMessage = "<b>" + summaryTitle + "</b><br/>";	
	document.getElementById(summary).style.display="none";	
	cleanFields();
	checked=true;
	for (i=0;i<requiredFieldsTotal;i++)
	{					
		if (!isCompleted(requiredFields[i].name))
			{
				//Agregado por Juanchi
				document.getElementById(requiredFields[i].name).className = "textbox_error";
				//if (checked == true) document.getElementById(requiredFields[i].name).focus();
				if (requiredFields[i].td!=null)
					document.getElementById(requiredFields[i].td).className = "required";
				if (requiredFields[i].tr!=null)
					{
						//document.getElementById(requiredFields[i].tr).className = "";	
						document.getElementById(requiredFields[i].span).innerHTML = requiredFields[i].message;
					}								
				summaryMessage = summaryMessage + requiredFields[i].label + ", ";
				checked=false;
			}
		else
			{
				document.getElementById(requiredFields[i].name).className = "textbox";
			}
	}
	
	for (i=0;i<requiredFieldsTotal;i++)
	{					
		if (noSelected(requiredFields[i].name))
			{
				//Agregado por Juanchi
				document.getElementById(requiredFields[i].name).className = "textbox_error";
				//if (checked == true) document.getElementById(requiredFields[i].name).focus();
				if (requiredFields[i].td!=null)
					document.getElementById(requiredFields[i].td).className = "required";
				if (requiredFields[i].tr!=null)
					{
						//document.getElementById(requiredFields[i].tr).className = "";	
						document.getElementById(requiredFields[i].span).innerHTML = requiredFields[i].message;
					}								
				summaryMessage = summaryMessage + requiredFields[i].label + ", ";
				checked=false;
			}
	}
	
	for (i=0;i<minLengthFieldsTotal;i++)
	{	
		if 	(isCompleted(minLengthFields[i].name))			
			if (document.getElementById(minLengthFields[i].name).value.length < minLengthFields[i].minLength)
				{
					//Agregado por Juanchi
					document.getElementById(minLengthFields[i].name).className = "textbox_error";
					//if (checked == true) document.getElementById(minLengthFields[i].name).focus();
					if (minLengthFields[i].td!=null)
						document.getElementById(minLengthFields[i].td).className = "required";
					if (minLengthFields[i].tr!=null)
						{
							//document.getElementById(requiredFields[i].tr).className = "";	
							document.getElementById(minLengthFields[i].span).innerHTML = minLengthFields[i].message;
						}								
					summaryMessage = summaryMessage + minLengthFields[i].label + ", ";
					checked=false;
				}
			else
				{
					document.getElementById(minLengthFields[i].name).className = "textbox";
				}
	}
	var c = "";
	for (i=0;i<minLengthNumberFieldsTotal;i++)
	{		
		if (isCompleted(minLengthNumberFields[i].name))
			if (isNaN(document.getElementById(minLengthNumberFields[i].name).value))
			{
				c = document.getElementById(minLengthNumberFields[i].name).value;
				c = c.substr(0,12);
				if ((c == "XXXXXXXXXXXX" ) && document.getElementById(minLengthNumberFields[i].name).value.length < minLengthNumberFields[i].minLength)
				{
					//Agregado por Juanchi
					document.getElementById(minLengthNumberFields[i].name).className = "textbox_error";
					//if (checked == true) document.getElementById(minLengthNumberFields[i].name).focus();
					if (minLengthNumberFields[i].td!=null)
						document.getElementById(minLengthNumberFields[i].td).className = "required";
					if (minLengthNumberFields[i].tr!=null)
						{
							//document.getElementById(requiredFields[i].tr).className = "";	
							document.getElementById(minLengthNumberFields[i].span).innerHTML = minLengthNumberFields[i].message;
						}								
					summaryMessage = summaryMessage + minLengthNumberFields[i].label + ", ";
					checked=false;
				}
			}
			else
				{
					document.getElementById(minLengthNumberFields[i].name).className = "textbox";
				}
	}
	
	for (i=0;i<regularExpressionFieldsTotal;i++)
	{				
		switch (regularExpressionFields[i].type)
		{
			case "mail":						
						if ((isCompleted(regularExpressionFields[i].name))&&(!isValidMail(regularExpressionFields[i].name)))
							{
							document.getElementById(regularExpressionFields[i].name).className = "textbox_error";
							if (regularExpressionFields[i].td!=null)
								document.getElementById(regularExpressionFields[i].td).className = "required";
							if (regularExpressionFields[i].tr!=null)
								{
									document.getElementById(regularExpressionFields[i].tr).className = "";	
									document.getElementById(regularExpressionFields[i].span).innerHTML = regularExpressionFields[i].message;
								}
							if (regularExpressionFields[i].span != null) document.getElementById(regularExpressionFields[i].span).innerHTML = regularExpressionFields[i].message;
							summaryMessage = summaryMessage + regularExpressionFields[i].label + ", ";	
							//if (checked == true) document.getElementById(regularExpressionFields[i].name).focus();						
							checked=false;
							}			
						break;
			case "numericRange":
						if ((isCompleted(regularExpressionFields[i].name))&&(!isValidNumericRange(regularExpressionFields[i].name, regularExpressionFields[i].range1, regularExpressionFields[i].range2)))
							{
							document.getElementById(regularExpressionFields[i].name).className = "textbox_error";
							if (regularExpressionFields[i].td!=null)
								document.getElementById(regularExpressionFields[i].td).className = "error";
							summaryMessage = summaryMessage + "<br/>" + regularExpressionFields[i].message;
							checked=false;
							}
						break;
		}		
	}
	
	for (i=0;i<dateValidatorFieldsTotal;i++)
	{		
		if (dateValidatorFields[i].required)
			{				
				if ((document.getElementById(dateValidatorFields[0].day).value=="")||(document.getElementById(dateValidatorFields[0].month).value=="")||(document.getElementById(dateValidatorFields[0].year).value==""))
					{
						
						if (dateValidatorFields[i].td!=null)
								document.getElementById(dateValidatorFields[i].td).className = "error";
						summaryMessage = summaryMessage + "<br/>" + dateValidatorFields[i].message;
						checked=false;
					}
				else
					if (!isValidDate(dateValidatorFields[i].day, dateValidatorFields[i].month, dateValidatorFields[i].year))
						{
							
							if (dateValidatorFields[i].td!=null)
								document.getElementById(dateValidatorFields[i].td).className = "error";
							summaryMessage = summaryMessage + "<br/>" + dateValidatorFields[i].message;
							checked=false;
						}
			}
		else
			if (!((document.getElementById(dateValidatorFields[0].day).value=="")&&(document.getElementById(dateValidatorFields[0].month).value=="")&&(document.getElementById(dateValidatorFields[0].year).value=="")))
			{
				
				if ((document.getElementById(dateValidatorFields[0].day).value=="")||(document.getElementById(dateValidatorFields[0].month).value=="")||(document.getElementById(dateValidatorFields[0].year).value==""))
				
				{
					if (dateValidatorFields[i].td!=null)
							document.getElementById(dateValidatorFields[i].td).className = "error";
						summaryMessage = summaryMessage + "<br/>" + dateValidatorFields[i].message;
					checked=false;		
				}
				else
					if (!isValidDate(dateValidatorFields[i].day, dateValidatorFields[i].month, dateValidatorFields[i].year))
						{
							if (dateValidatorFields[i].td!=null)
								document.getElementById(dateValidatorFields[i].td).className = "error";
							summaryMessage = summaryMessage + "<br/>" + dateValidatorFields[i].message;
							checked=false;
						}
			}
		
	}
	//
	for (i=0;i<checkboxRequiredFieldsTotal;i++)
	{					
		if (!isChecked(checkboxRequiredFields[i].name))
			{
				if (checkboxRequiredFields[i].td!=null)
					document.getElementById(checkboxRequiredFields[i].td).className = "required";
				if (checkboxRequiredFields[i].tr!=null)
					{
						document.getElementById(checkboxRequiredFields[i].tr).className = "";	
						document.getElementById(checkboxRequiredFields[i].span).innerHTML = checkboxRequiredFields[i].message;
					}								
				summaryMessage = summaryMessage + checkboxRequiredFields[i].label + ", ";
				checked=false;
			}
	}
	//
	for (i=0;i<confirmPasswordRequieredFieldsTotal;i++)
	{					
		if (!isConfirmed(confirmPasswordRequieredFields[i].name,confirmPasswordRequieredFields[i].nameConfirm))
			{
				/*if (confirmPasswordRequieredFields[i].td!=null){
					document.getElementById(confirmPasswordRequieredFields[i].td).className = "textbox_error";
					}
				if (confirmPasswordRequieredFields[i].tr!=null)
					{
						document.getElementById(confirmPasswordRequieredFields[i].tr).className = "";	
						document.getElementById(confirmPasswordRequieredFields[i].span).innerHTML = confirmPasswordRequieredFields[i].message;
					}	*/	
				document.getElementById(confirmPasswordRequieredFields[i].nameConfirm).className = "textbox_error";						
				summaryMessage = summaryMessage + confirmPasswordRequieredFields[i].label + ", ";
				/*if ((checked == true)&&(document.getElementById(confirmPasswordRequieredFields[i].name).visible != "false")) document.getElementById(confirmPasswordRequieredFields[i].name).focus();	*/
				checked=false;
			}
		else
		{
			/*document.getElementById(confirmPasswordRequieredFields[i].tr).className = "displayNone";
			
			document.getElementById(confirmPasswordRequieredFields[i].td).className	= "label";*/
			document.getElementById(confirmPasswordRequieredFields[i].nameConfirm).className = "textbox";	
		}
	}
	//
	if (summaryMessage!=("<b>" + summaryTitle + "</b><br/>"))
	{		
		document.getElementById(summary).style.display="block";
		summaryMessage = summaryMessage.substring(0,summaryMessage.length-2)+".";
		document.getElementById(summary).innerHTML=summaryMessage;
	}
	return checked;
}

function isCompleted(objName)
{
	object= document.getElementById(objName);
	return (object.value!="");
}

function noSelected(objName)
{
	object= document.getElementById(objName);
	return (object.value=="0");
}


function isValidMail(objName)
{
	object = document.getElementById(objName);
	///return (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(object.value));
    var re=/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i;
    return re.test(object.value);	
}

function isValidNumericRange(objName, range1, range2)
{
	object = document.getElementById(objName);	
	return ((object.value>=range1) && (object.value<=range2));
}

function isValidDate(day, month, year)
{
	objDay = document.getElementById(day);
	objMonth = document.getElementById(month);
	objYear = document.getElementById(year);	
	switch(objMonth.selectedIndex-1){
		case 0:	return (objDay.selectedIndex<=31);
		case 1:	return (objYear.value % 4==0 ?(objDay.selectedIndex<=29):(objDay.selectedIndex<=28));
		case 2:	return (objDay.selectedIndex<=31);
		case 3:	return (objDay.selectedIndex<=30);
		case 4:	return (objDay.selectedIndex<=31);
		case 5:	return (objDay.selectedIndex<=30);
		case 6:	return (objDay.selectedIndex<=31);
		case 7:	return (objDay.selectedIndex<=31);
		case 8:	return (objDay.selectedIndex<=30);
		case 9: return (objDay.selectedIndex<=31);
		case 10: return (objDay.selectedIndex<=30);
		case 11: return (objDay.selectedIndex<=31);
	}
	
}
function isChecked(objName)
{
	object= document.getElementById(objName);
	return (object.checked);
}
function isConfirmed(objectPass,objectConfirmPass)
{
	obj1 = document.getElementById(objectPass);
	obj2 = document.getElementById(objectConfirmPass);
	if (obj1.value == obj2.value)
		return true;
	else
		return false;
}

function openPopUp(url)
{
	window.open(url,'ventana1','width=610, height=483, scrollbars=yes, menubar=no, location=no, resizable=no');
}

function validateRequiredField(obj,label,span,spanMessage)
{
	if( (document.getElementById(obj)) && (document.getElementById(obj).value != "") )
	{
		document.getElementById(obj).className = "textbox";
		document.getElementById(label).className = "label";
		document.getElementById(span).innerHTML = "";
		return 1;
	}
	else
	{
	    document.getElementById(obj).focus();
	    document.getElementById(obj).className = "textbox_error";
		document.getElementById(label).className = "label_error";
		document.getElementById(span).style.color = '#FF0000';
		document.getElementById(span).innerHTML = spanMessage;
		return 0;
	}
}
