var bgBad = "#cccc99";
var bgGood = "white";
var ColorHighLight="#ccffff";
var Browser="";
if(document.getElementById) Browser = "nn6+";
if(document.all) Browser = "ie";
if(document.layers) Browser = "nn";

//Valida Campo Texto en formas
function checkText(field) {
  	var valid=true;
  	if (IsEmpty(field.value)) {
		setColor(field, bgBad);
		valid=false;
  	} else {
    	setColor(field, bgGood);
  	}
  	return valid;
}
//Valida Campo Entero
function checkEntero(field){ 
  	var valid=true;
   	//Compruebo si es un valor numérico 
	var valor = field.value; 
	if (isNaN(valor)||valor=="") { 
        //entonces (no es numero) devuelvo el valor cadena vacia 
		setColor(field, bgBad);
		valid=false;
    }else{
		if (valor.indexOf(".")>0){
			setColor(field, bgBad);
			valid=false;
		}else{
			if(parseInt(valor)<=0){
				setColor(field, bgBad);
				valid=false;			
			}else{
				setColor(field, bgGood);
			}
		}
	} 
	return valid;
} 

// Valida decimal
function checkDecimal(field,numDec,sepDec){ 
 	var valid=true;
   	//Compruebo si es un valor numérico 
	var valor = field.value;
	if (valor.indexOf(".")>0 && sepDec==","){
		alert("Por favor utilice la coma como símbolo de decimales");
		setColor(field, bgBad);
		valid=false;
	}else{	
		if (valor.indexOf(",")>0 && sepDec=="."){
			alert("Por favor utilice el punto como símbolo de decimales");
			setColor(field, bgBad);
			valid=false;
		}else{
			valor = valor.toString().replace(/,/g, '.'); 
			if (isNaN(valor)||valor=="") { 
    			 //entonces (no es numero) devuelvo el valor cadena vacia 
				alert("Por favor verifique el valor");
				setColor(field, bgBad);
				valid=false;
   	 		}else{
				if (valor.indexOf(".")>0){
					//Numero Decimal
					var decimal= valor.split(".");
					if(decimal.length>2){
						setColor(field, bgBad);
						valid=false;			
					}else{
						if (IsEmpty(decimal[0]) || IsEmpty(decimal[1])){
							alert("Por favor verifique el precio");
							setColor(field, bgBad);
							valid=false;
						}else{
							if (decimal[1].toString().length>numDec){
								alert("Por favor coloque " + numDec + " decimales");
								setColor(field, bgBad);
								valid=false;			
							}else{
								setColor(field, bgGood);
							}
						}
					}
				}else{
					setColor(field, bgGood);
				}
			}
		}
	} 
	return valid;
} 

function EvaluateNumber(cadena, obj,sepDec){ 
	opc = false; 
   	if (cadena == "%d") 
    	if (event.keyCode > 47 && event.keyCode < 58) opc = true; 
    if (cadena == "%f"){ 
     	if (event.keyCode > 47 && event.keyCode < 58) opc = true; 
		arg="[.*]";
		asc_dec=46;
		if (sepDec==","){
			arg="[,*]";
			asc_dec=44;
		}
     	if (obj.value.search(arg) == -1 && obj.value.length != 0) 
      		if (event.keyCode == asc_dec) opc = true; 
    } 
    if(opc == false) event.returnValue = false; 
} 

//Valida campo Email en formas
function checkEmail(field) {
  	var valid=true;
	if(IsEmpty(field.value)){
   		setColor(field, bgBad);
		valid=false;
	}else{
  		if (field.value.split("@").length < 2) {
    		setColor(field, bgBad);
			valid=false;
  		} else {
			if (field.value.indexOf(".")<=0){
	    		setColor(field, bgBad);
				valid=false;
			}else{
    			setColor(field, bgGood);
			}
  		}
	}
  	return valid;
}

function checkTlf(field) {
  	var valid=true;
	var validChar="0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZ ";
	var fieldtxt=field.value;
	if(IsEmpty(fieldtxt)){
   		setColor(field, bgBad);
		valid=false;
	}else{
		fieldtxt=fieldtxt.toUpperCase();
		for(i=0;i<=fieldtxt.length-1;i++){
			if(validChar.indexOf(fieldtxt.charAt(i))<0){
		   		setColor(field, bgBad);
				valid=false;
				break;
			}
		} 
	}
  	return valid;
}

function CenterW(width){
    return (screen.availWidth/2)-(width/2);
}

function CenterH(height){
    return (screen.availHeight/2)-(height/2);
}

//Marca varias fila en una tabla (cambia color de la celda o fila seleccionada)
function SelectRowMul(row,ColorRow){
	if (Browser=="ie"){
		var targetRow = eval( "document.all['" + row + "']" );
	}
	if (Browser=="ie"||Browser=="nn6+"){
		if (targetRow.bgColor==ColorHighLight) {
			SetColorRow(targetRow,ColorRow);
		}else{
			SetColorRow(targetRow,ColorHighLight);
		}
	}	
}

//Marca una fila en una tabla (cambia color de la celda o fila seleccionada)
function SelectRowSim(row,ColorRow){
	if (Browser=="ie"){
		var targetRow = eval( "document.all['" + row + "']" );
	}
	if (Browser=="ie"||Browser=="nn6+"){
		SetColorRow(SelectedRow,ColorRow);
		SetColorRow(targetRow,ColorHighLight);	
		SelectedRow=targetRow;	
	}
}


function SetColorRow(row,color){
	if (Browser=="nn6+" || Browser=="ie"){
		row.bgColor=color;
	}
}

function setColor(el, bg) {
	if (el.style) el.style.backgroundColor = bg;
}

//Verifica si algun boton de radio esta seleccionado
function CheckRadio(radio){
	var find=false;
	var i=0;
	if (typeof(radio.length)=="undefined"){
		if (radio.checked){
			find=true;
		}	
	}else{
		while (find==false && i<=(radio.length-1)) {
			if (radio[i].checked){
				find=true;
			}
			i++;   
		}
	}
	if(find==false){
		alert("Debe seleccionar un registro");
	}
	return find;
}

function CheckOpcion(radio){
	var find=false;
	var i=0;
	if (typeof(radio.length)=="undefined"){
		if (radio.checked){
			find=true;
		}	
	}else{
		while (find==false && i<=(radio.length-1)) {
			if (radio[i].checked){
				find=true;
			}
			i++;   
		}
	}
	return find;
}

//Verifica si alguna casilla de verificación esta seleccionado
function CheckBox(obj){
	var find=false;
	if (typeof(obj.length)=="undefined"){
		if (obj.checked){
			find=true;
		}	
	}else{
		var i=0;
		while (find==false && i<=(obj.length-1)) {
			if (obj[i].checked){
				find=true;
			}
			i++;   
		}
	}
	if(find==false){
		alert("Debe seleccionar al menos un registro");
	}
	return find;
}
//Marca o desmarca todas las cajas de verificacion
function CheckAll(Target,mark){
	if (typeof(Target.length)=="undefined"){
		Target.checked=mark;
		if (Browser=="ie"){
			var targetRow = eval( "document.all.row1" );
			if (mark==true){
				SetColorRow(targetRow ,ColorHighLight);
			}else{
				SetColorRow(targetRow ,"white");
			}
		}
	} else {
		for (i = 0; i < Target.length; i++){
			Target[i].checked = mark;
			if (Browser=="ie"){
				var targetRow = eval( "document.all.row" + (i+1) );
				if (mark==true){
					SetColorRow(targetRow ,ColorHighLight);
				}else{
					SetColorRow(targetRow ,"white");
				}
			}
		}
	}
}

function esDigito(sChr){
    var sCod = sChr.charCodeAt(0);
    return ((sCod > 47) && (sCod < 58));
}

function valSep(oTxt){
    var bOk = false;
    var sep1 = oTxt.value.charAt(2);
    var sep2 = oTxt.value.charAt(5);
//    bOk = bOk || ((sep1 == "-") && (sep2 == "-"));
    bOk = bOk || ((sep1 == "/") && (sep2 == "/"));
    return bOk;
}

function finMes(oTxt){
    var nMes = parseInt(oTxt.value.substr(3, 2), 10);
    var nAno = parseInt(oTxt.value.substr(6), 10);
    var nRes = 0;
    switch (nMes){
     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 + (((nMes == 2) && (nAno % 4) == 0)? 1: 0);
}

function valDia(oTxt){
    var bOk = false;
    var nDia = parseInt(oTxt.value.substr(0, 2), 10);
    bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
    return bOk;
}

function valDia2(dia,mes){
    var bOk = true;
    var nDia =	parseInt(dia);
    var nMes= parseInt(mes);
	var nRes = 0;
    switch (nMes){
    	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;
    }
    if(nMes==2){
		//Febrero
		if(nDia==31 || nDia==30){
			bOk=false;
		}
	}else{
		//Resto de meses
		if (nDia > nRes){
			bOk=false;
		}
	}
    return bOk;
}

function valMes(oTxt){
    var bOk = false;
    var nMes = parseInt(oTxt.value.substr(3, 2), 10);
    bOk = bOk || ((nMes >= 1) && (nMes <= 12));
    return bOk;
}

function valAno(oTxt){
    var bOk = true;
    var nAno = oTxt.value.substr(6);
    bOk = bOk && ((nAno.length == 2) || (nAno.length == 4));
    if (bOk){
    	for (var i = 0; i < nAno.length; i++){
     	 	bOk = bOk && esDigito(nAno.charAt(i));
     	}
	}
    return bOk;
}

function checkFecha(oTxt){
	var bOk = true;
    if (oTxt.value != ""){
    	bOk = bOk && (valAno(oTxt));
     	bOk = bOk && (valMes(oTxt));
    	bOk = bOk && (valDia(oTxt));
     	bOk = bOk && (valSep(oTxt));
	   	 if (!bOk){
   			setColor(oTxt, bgBad);
			return false;
     	} else {
  			setColor(oTxt, bgGood);	
			return true;
    	}	
	}else{
		setColor(oTxt, bgBad);
	}
}

function fechaMayorQue(fec0, fec1){
    var bRes = false;
    var sDia0 = fec0.substr(0, 2);
    var sMes0 = fec0.substr(3, 2);
    var sAno0 = fec0.substr(6, 4);
    var sDia1 = fec1.substr(0, 2);
    var sMes1 = fec1.substr(3, 2);
    var sAno1 = fec1.substr(6, 4);
    if (sAno0 > sAno1) bRes = true;
    else {
      if (sMes0 > sMes1) bRes = true;
      else {
        if (sDia0 > sDia1) bRes = true;
  	    }
     }
    return bRes;
   }

   function fechaMayorOIgualQue(fec0, fec1){
    var bRes = false;
    var sDia0 = fec0.value.substr(0, 2);
    var sMes0 = fec0.value.substr(3, 2);
    var sAno0 = fec0.value.substr(6, 4);
    var sDia1 = fec1.value.substr(0, 2);
    var sMes1 = fec1.value.substr(3, 2);
    var sAno1 = fec1.value.substr(6, 4);
    if (sAno0 > sAno1) bRes = true;
    else {
     if (sAno0 == sAno1){
      if (sMes0 > sMes1) bRes = true;
      else {
       if (sMes0 == sMes1)
        if (sDia0 >= sDia1) bRes = true;
      }
     }
    }
    return bRes;
   }

//Verifica si un campo de texto esta vacio
function IsEmpty(aTextField) {
	var re = /\s/g; //Match any white space including space, tab, form-feed, etc. 
	RegExp.multiline = true; // IE support
	var str = aTextField.replace(re, "");
	if (str.length == 0) {
		return true;
	} else {return false;}
}	

//Elimina espacios en blanco adelante y atras de un texto
function Trim(text) 
{
	flag = false;
	returntext = '';
	for(i = 0; i < text.length; i++)
	{
		if(text.charAt(i) != ' ' || flag)
		{
			returntext = returntext + text.charAt(i);
			flag = true;
		}
	}
	text = returntext; 
	flag = false;
	returntext = '';
	for(i = text.length - 1; i >= 0; i--)
	{
		if(text.charAt(i) != ' ' || flag)
		{
			returntext = text.charAt(i) + returntext;
			flag = true;
		}
	}
	return returntext;
}

//Valida que el ID del cliente no tenga caracteres no permitidos
function ValidId(field){
	var chars="ABCDEFGHIJKLMNOPQRSTUV1234567890";
	var txtfield=field.value.toUpperCase();
	var i=0;
	var valid=true;
	do {
		if(chars.indexOf(txtfield.charAt(i))==-1){
			valid=false;
		}
		i++;
	}while(i<=txtfield.length && valid)
	if (valid){
		setColor(field, bgGood);
	}else{
		setColor(field, bgBad);
	}
	return valid;
}
//Verificar extension para subir archivo
extArray = new Array(".gif", ".jpg");
function LimitAttach(file) {
	valid=true;
	allowSubmit = false;
	if (!file) {
		alert("Por favor seleccione un archivo");
		valid=false;
	}else{
		file = file.slice(file.indexOf("\\") + 1);
		ext = file.slice(file.indexOf(".")).toLowerCase();
		for (var i = 0; i < extArray.length; i++) {
			if (extArray[i] == ext) { 
				allowSubmit = true;
				break;
			}
		}
		if (!allowSubmit){
			alert("Se permiten únicamente archivos con la extensión: " + (extArray.join("  ")) + "\nPor favor, seleccione otro archivo "+ "e intente de nuevo.");
			valid=false;
		}	
	}
	return valid;
}

//Limitando Numero de caracteres para un TextArea
var supportsKeys = false
function favChange(rnum) {
	f = document.forma;
	
	if (f.favs.selectedIndex >=0) {
		f.msgTo.value = f.favs.options[f.favs.selectedIndex].value
	}

	if (f.favs.selectedIndex > 0 && f.favs.selectedIndex <= rnum + 1) {
		f.msgText.focus();
	} else {
		f.msgTo.focus();
	}
}
function calcCharLeft(f,field) {
		lenUSig = f.lenSSig.value;
		maxLength = maxChar - f.lenSysSig.value - lenUSig;
		if (field.value.length > maxLength) {
	        field.value = field.value.substring(0,maxLength);
		    charleft = 0;
        } else {
			charleft = maxLength - field.value.length;
		}
        f.msgCL.value = charleft;
}

function textKey(f,field) {
	supportsKeys = true;
	calcCharLeft(f,field);
}

var da = (document.all) ? 1 : 0;
var pr = (window.print) ? 1 : 0;
var mac = (navigator.userAgent.indexOf("Mac") != -1); 

function printPage2() {
  if (pr) // NS4, IE5
    window.print()
  else if (da && !mac) // IE4 (Windows)
    vbPrintPage()
  else // other browsers
    alert("No soportado por este navegador");
}

if (da && !pr && !mac) with (document) {
  writeln('<OBJECT ID="WB" WIDTH="0" HEIGHT="0" CLASSID="clsid:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>');
  writeln('<' + 'SCRIPT LANGUAGE="VBScript">');
  writeln('Sub window_onunload');
  writeln('  On Error Resume Next');
  writeln('  Set WB = nothing');
  writeln('End Sub');
  writeln('Sub vbPrintPage');
  writeln('  OLECMDID_PRINT = 6');
  writeln('  OLECMDEXECOPT_DONTPROMPTUSER = 2');
  writeln('  OLECMDEXECOPT_PROMPTUSER = 1');
  writeln('  On Error Resume Next');
  writeln('  WB.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER');
  writeln('End Sub');
  writeln('<' + '/SCRIPT>');
}
