var aDateMasks = new Array("",
	"[0-3]",
	"(0[1-9]|[12][0-9]|3[01])",
	"(0[1-9]|[12][0-9]|3[01])/",
	"(0[1-9]|[12][0-9]|3[01])/[01]",
	"(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])",
	"(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/",
	"(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/[12]",
	"(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/(20|1[89])",
	"(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/(20|1[89])[0-9]",
	"(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/(20|1[89])[0-9][0-9]"
	);

var aTimeMasks = new Array("",
	"[0-2]",
	"([01][0-9]|2[0-3])",
	"([01][0-9]|2[0-3]):",
	"([01][0-9]|2[0-3]):[0-5]",
	"([01][0-9]|2[0-3]):[0-5][0-9]"
	);

function TimeOnKeyUpAux( time ) 
{
    if ( time.search(new RegExp("^"+aTimeMasks[ time.length ]+"$")) != 0 ) {
	time = time.substr (0,time.length -1 );
	if ( time.search(new RegExp("^"+aTimeMasks[ time.length ]+"$")) )
		time = "";
    } else {
	i = time.length;
	time += ( ( (i == 2 ) && time.charAt(i-1) != ":") ? ":" : "" );
    }
    return time;
}

function TimeOnKeyUp( obj_frm_time, teclapres ) 
{
	var tecla = teclapres.keyCode;
	tmp = obj_frm_time.value;
	if ( tecla != 8 && tecla != 9 )
	   obj_frm_time.value = TimeOnKeyUpAux(tmp);
}

function DateOnKeyUpAux( data ) 
{
    if ( data.search(new RegExp("^"+aDateMasks[ data.length ]+"$")) != 0 ) {
	data = data.substr (0,data.length -1 );
	if ( data.search(new RegExp("^"+aDateMasks[ data.length ]+"$")) )
		data = "";
    } else {
	i = data.length;
	data += ( ( (i == 2 || i == 5) && data.charAt(i-1) != "/") ? "/" : "" );
    }
    return data;
}

function DateOnKeyUp( obj_frm_data, teclapres ) 
{
	var tecla = teclapres.keyCode;
	tmp = obj_frm_data.value;
	if ( tecla != 8 && tecla != 9 )
	   obj_frm_data.value = DateOnKeyUpAux(tmp);
}

function IsDateValidEx( dia, mes, ano ) 
{
	// verifica o dia valido para cada mes 
	if ( (dia < 01)||(dia < 01 || dia > 30) && (  mes == 04 || mes == 06 || mes == 09 || mes == 11 ) || dia > 31) { 
		return false 
	} 	

	// verifica se o mes e valido 
	if (mes < 01 || mes > 12 ) { 
		return false 
	} 	

	// verifica se e ano bissexto 
	if (mes == 2 && ( dia < 01 || dia > 29 || ( dia > 28 && (parseInt(ano / 4) != ano / 4)))) { 
		return false
	} 	

	return true;
}

function IsDateValid( value ) 
{ 
	if( value.length < 10 ){ 
		return false;
	}			

	day = (value.substring(0,2)); 
	month = (value.substring(3,5)); 
	year = (value.substring(6,10)); 	

	return IsDateValidEx( day, month, year );
}

function IsTimeValid( value ) 
{ 
	if( value.length < 5 ){ 
		return false
	}			

	hora = (value.substring(0,2)); 
	minuto = (value.substring(3,5)); 

	if( hora > 23 ){ 
		return false 
	} 	

	if( minuto > 59 ){ 
		return false 
	} 	

	return true
}

function IsDate( obj, label ) 
{
	obj.value = trimAll( obj.value )
	if( obj.value == "" ){ 
		return true;
	} 	

	if( !IsDateValid( obj.value ) ){
		alert( "O campo '" + label + "' está com uma data inválida !!!" );
        	obj.focus();
		return false;
	}
	return true;
}

function IsTime( obj, label ) 
{
	obj.value = trimAll( obj.value )
	if( obj.value == "" ){ 
		return true;
	} 	

	if( !IsTimeValid( obj.value ) ){
		alert( "O campo '" + label + "' está com uma hora inválida !!!" );
        	obj.focus();
		return false;
	}
	return true;
}

function IsInteger( obj, label )
{
	obj.value = trimAll( obj.value )
	if( obj.value == "" ){ 
		return true;
	} 	

	if( !validateInteger( obj.value ) ){
		alert( "O campo '" + label + "' deve ser inteiro!" );
		obj.focus();
		return false;
	}
	return true;
}

function IsNumeric( obj, label )
{
	obj.value = trimAll( obj.value )
	if( obj.value == "" ){ 
		return true;
	} 	

	if( !validateNumeric( obj.value ) ){
		alert( "O campo '" + label + "' deve ser numérico!" );
		obj.focus();
		return false;
	}
	return true;
}

function IsEmpty( obj, label ) 
{
	if( !validateNotEmpty( obj.value ) ){
		alert( "O campo '" + label + "' não pode ser vazio!" );
		obj.focus();
		return true;
	}
	return false;
}

function IsSearchCalendarValid( day, month, year, label )
{
	if( day.value > 0 || month.value > 0 ){
		if( !validateNotEmpty( year.value ) ){
			alert( "O ano do campo '" + label + "' precisa ser informado!" );
			return false;
		}
	}
	if( day.value > 0 && month.value == 0 ){
		alert( "O mês do campo '" + label + "' precisa ser informado!" );
		return false;
	}
	if( day.value > 0 && month.value > 0 ){
		if( !IsDateValidEx( day.value, month.value, year.value ) ){
			alert( "O campo '" + label + "' está com uma data inválida !!!" );
			return false;
		}
	}
	return true;
}

function EnableDisableFormControls( form, type, disabled )
{
	if( document.all||document.getElementById ){
		for( i = 0; i < form.length; i++ ){
			var control = form.elements[i];
			if( control.type.toLowerCase() == type ){
				control.disabled = disabled
			}
		}
	}
}

function DisableControls( form )
{
	EnableDisableFormControls( form, "submit", true );
	EnableDisableFormControls( form, "button", true );
	EnableDisableFormControls( form, "reset",  true );
}

function EnableControls( form )
{
	EnableDisableFormControls( form, "submit", false );
	EnableDisableFormControls( form, "button", false );
	EnableDisableFormControls( form, "reset",  false );
}

function SetEventValue( controlid, value )
{	
	var control = document.getElementById( controlid );
	control.value = value;	
}

function SetLightBaseCheckBoxValue( form, checkbox, name )
{
	var checkboxaux = eval( "document." + form.name + "." + name );
	if( checkbox.checked ){
		checkboxaux.value = "1";
	} else {
		checkboxaux.value = "0";
	}
}

function InitCalendar( calendar )
{	
	calendar.setMonthNames('Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro');
	calendar.setDayHeaders('Dom','Seg','Ter','Qua','Qui','Sex','Sab');
	calendar.setTodayText('Hoje');
	calendar.showNavigationDropdowns();
	calendar.setCssPrefix('CALENDAR');
}

function DoFormSubmit( formname )
{
	var form = eval( formname );
	var ret = eval( "ValidateForm" + formname + "()" );
	if( ret ){
		form.submit();
	}
}
