// *****************************************************************************
// **  Requerimiento Nro: 6752      Tarea Nro: 15153     Asignada a Recurso: JAB
// **  Fecha: 01/06/2004            Cliente: 110         {RQ#6752/JAB}
// *****************************************************************************

var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1;
var ns6=document.getElementById&&!document.all;
var ns4=document.layers;
var bNS = ns6 || ns4;

function buttonOver(Obj, colorOver) {
  if (colorOver == null) { colorOver = "Black"};
  Obj.style.color = colorOver;
}

function buttonOut(Obj, colorOut) {
  if (colorOut == null) { colorOut = "Black"};
  Obj.style.color = colorOut;
}


///////////////////////////////////////////////////////////////////////////////
//                                GENERICAS
///////////////////////////////////////////////////////////////////////////////

function printPage(sFrame) {
//Manda a imprimir el contenido del frame recibido por parametro o en caso de ser null 
//la pagina actual (quien hace la llamada)
  if (sFrame != null)
    oWin = getWindowFrames(sFrame)
  else  //Se quiere imprimir la pagina actual
    oWin = window;
  if (oWin.print) {
		oWin.focus();	
		oWin.print();
  }
}

function parentMain(oWindow){
  parentObj = oWindow.parent;
  while (parentObj != parentObj.parent) 
    parentObj = parentObj.parent;
  return(parentObj);
}

function varObj(sCod, sDesc){
  this.Cod = sCod;
  this.Desc = sDesc;
}

function loseFocus() {
   window.focus();
}

function setStatus(sText) {
  status = sText;
  return(true);
}

function SetStatusBlank() {
  status = "";
  return(true);  
  }

function disableSelectText() {
  document.onselectstart=new Function ("return false")
}

function disableContextMenu() {
  document.oncontextmenu=new Function("return false");
}

function disableAll() {
  disableSelectText();
  disableContextMenu();
}

//Setea el valor al objeto desde el otro objeto recibido por paraemtro
function setValueBetweenObjects(idObjSetValue, idObjGetValue, bParent) {
  oObjSetValue = getObject(idObjSetValue);

  if (bParent){oObjGetValue = parent.getObject(idObjGetValue)}
  else {oObjGetValue = getObject(idObjGetValue)};

  if (oObjSetValue != null && oObjGetValue != null) {
    oObjSetValue.value = oObjGetValue.value;
  }
  else {alert("No se pudo recuperar alguno de los dos objetos")}
}

//Setea el alto del componente cuyo ID es recibido por parametro 
//(el alto esta dado por el alto del documento menos el valor, "reduce", recibido)
function SetHeightObject(IdObj, reduce) {
  obj = getObject(IdObj);
  if (reduce == null) {reduce = 0};
  if (obj != null) {
    iSize = getDocumentHeight() - reduce;
	if (iSize < 0){iSize = 0};
    obj.style.height = iSize;
  }
}

//Setea el ancho del componente cuyo ID es recibido por parametro 
//(el ancho esta dado por el ancho del documento menos el valor, "reduce", recibido)
function SetWidthObject(IdObj, reduce) {
  obj = getObject(IdObj);
  if (reduce == null) {reduce = 0};
  if (obj != null) {
	iSize = getDocumentWidth() - reduce;
	if (iSize < 0){iSize = 0};
	obj.style.width = iSize;
  }
}

//Retorna el alto del documento en pixeles
function getDocumentHeight() {
  return (ie4? document.body.offsetHeight : ns6? window.innerHeight : 0)
}

//Retorna el ancho del documento en pixeles
function getDocumentWidth() {
  return (ie4? document.body.offsetWidth : ns6? window.innerWidth : 0)
}

//Recupera un objeto cuyo identificado es recibido por parametro
function getObject(IdObject) {
  return (ie4? document.all(IdObject) : ns6? document.getElementById(IdObject) : "")
}

//Retorna el objeto frame cuyo nombre es recibido por parametro
function getWindowFrames(nameFrame) {
  obj = "";
  if (ie4){
    obj = window.frames(nameFrame);}
  else if (ns6){
    for (var i=0; i<window.frames.length; i++) {
      obj = window.frames[i];
      if (obj.name == nameFrame) break;
    }
  };
  return (obj);
}

//Setea el tramaño del iframe recibido por parametro
function resizeIframeObject(oFrame, reduce) {
  if (oFrame != null){
	iSize = getDocumentHeight - reduce;
	if (iSize < 0){iSize = 0};
	oFrame.style.posHeight = iSize; 
  }
}

function resizeIframe(sNameFrame, reduce) {
  if (oFrame != null){
	resizeIframeObject(getWindowFrames(sNameFrame), reduce);
  }
}

function goHome(iMilisecods) {
  setTimeout("top.location.href = 'index.asp'", iMilisecods);
}

function goTo(oFrame, sURL, iMilisecods){
//Direcciona al frame recibido con al pagina recibida en el tiempo establecido.
//EN caso de ser nulo el frame es l TOP, en xcaso de ser nulos los milisegundos se toma 0.
  if (iMilisecods == null) iMilisecods = 0;
  if (oFrame == null) oFrame = window.top;
  setTimeout(oFrame.location.href=sURL, iMilisecods);
}

function reloadFrame(sNameFrame) {
//Recarga el frame cuyo nombre es recibido por parametro
  oWin = getWindowFrames(sNameFrame);
  oWin.location = oWin.location;
} 

function isEmail(sValue) {
//Retorna true si el valor del parametor recibido es un mail, false caso contrario
  if (sValue.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
    return true;
  else
    return false;
}

function validarEmail(valor) {
  if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(valor)){
    alert("La dirección de email " + valor + " es correcta.") 
    return (true)
  } else {
    alert("La dirección de email es incorrecta.");
    return (false);
  }
}


function testExpression(oExpression, sValue) {
//Retorna true en el caso de ser el valor correspondiente a la 
//mascara definida por la expresion
return oExpression.test(sValue);


}

///////////////////////////////////////////////////////////////////////////////
//                                NATIVAS!
///////////////////////////////////////////////////////////////////////////////

function removeFromArray(oArray, oElement) {
//Elimina el elemento del arreglo recibidos por parametro
//NOTA: OPTIMIZAR ESTO PARA QUE NO RECORRA TODO EL ARREGLO!
  iPos = -1;
  for (i=0; i<oArray.length; i++)
    if (oArray[i] == oElement) 
      iPos = i;
  if (iPos != -1)
    oArray.splice(iPos,1);
  return(oArray);
}

function formatNumberMoney(number) {
    return formatIntegerNumberMoney(Math.floor(number-0) + '') + formatCentsNumberMoney(number - 0);
}

function formatIntegerNumberMoney(number) {
    if (number.length <= 3)
        return (number == '' ? '0' : number);
    else {
        var mod = number.length%3;
        var output = (mod == 0 ? '' : (number.substring(0,mod)));
        for (iIdx=0 ; iIdx < Math.floor(number.length/3) ; iIdx++) {
            if ((mod ==0) && (iIdx ==0))
                output+= number.substring(mod+3*iIdx,mod+3*iIdx+3);
            else
                output+= ',' + number.substring(mod+3*iIdx,mod+3*iIdx+3);
        }
        return (output);
    }
}

function formatCentsNumberMoney(amount) {
    amount = Math.round( ( (amount) - Math.floor(amount) ) *100);
    return (amount < 10 ? '.0' + amount : '.' + amount);
}
///////////////////////////////////////////////////////////////////////////////
//                                FORMULARIOS
///////////////////////////////////////////////////////////////////////////////
//Se posiciona (focus) en el primer componente del formulario
function setFocusFirstControl(oForm) {
  for (var i=0;i < oForm.elements.length; i++){
    if (oForm.elements[i].type != "hidden"){
      oForm.elements[i].focus();
      
      break
    }
  }
}

//Setea el foco al objeto cuyo ID recibe por parametro
function setFocus(idObject) {
  oInput = getObject(idObject);
  oInput.focus();
}

//Chequea el objeto recibido por parametro
function doCheck(idObject) {
  oInput = getObject(idObject);
  oInput.checked = true;
}


//Restaura el estado a normal (cambia de color si el campo contenia un error)
function clearStateError(Obj) {
  if (isNumeric(Obj)) {
    Obj.className=CONSTFormNumberColorNotError
  }
  else if (isDate(Obj)) {
	Obj.className = CONSTFormDateColorNotError}
  else {
    Obj.className=CONSTFormColorNotError
  };
}


//Restaura el estado a normal (cambia de color si el campo contenia un error)
function clearStateErrorText2(Obj) {
  if (isNumeric(Obj)) {
    Obj.className=CONSTFormNumberColorNotErrorText2
  }
  else if (isDate(Obj)) {
	Obj.className = CONSTFormDateColorNotErrorText2}
  else {
    Obj.className=CONSTFormColorNotErrorText2
  };
}


  //valida si el text area tiene algun valor
function validateTextArea(nomObj) {
	oObjText= getObject(nomObj);
   return oObjText.value != '';
}

//Valida el formulario recibido por parametro
function validateForm(ObjForm) {
  var bOk = true;
  
  for (var i=0;i < ObjForm.length; i++){
     Obj = ObjForm[i];
	if (isFormControl(Obj)) {
      stripSpaces(Obj);
     
	 //Valida para los input chicos
      if (!allowNullLittle(Obj))
        if (Obj.value == "") {		  
		  Obj.className=CONSTFormClassError2;
          bOk = false;
        };

     //Valida los nulos
      if (!allowNull(Obj))
	    if (Obj.value == "") {		  
		  Obj.className=CONSTFormClassError;
          bOk = false;
        };

      //Valida los numeros
      if (isNumeric(Obj))
	    if (Obj.value != '' && !isValidNumber(Obj.value)) {
          Obj.className=CONSTFormNumberClassError;
          Obj.value="";
		  bOk = false;
        };
 
      //Valida los numeros sean positivos mayores de 0
      if (isNumericPositive(Obj)){      // TAREA 5372 Javier Bautista 
		 if(Obj.value <= 0 || !isValidNumber(Obj.value)){
			  Obj.className=CONSTFormNumberClassError;
			  Obj.value="";
			  bOk=false;
	     };
	   };   // FIN TAREA 5372 Javier Bautista 
	  

      //Valida los numeros sean positivos mayores de 0 para campos chicos.
      if (isNumericPositiveLittle(Obj)){    
		 if(Obj.value <= 0 || !isValidNumber(Obj.value)){
			  Obj.className=CONSTFormNumberClassError2;
			  Obj.value="";
			  bOk=false;
	     };
	   };   // FIN TAREA 5372 Javier Bautista 


     //Valida las fechas
      if (isDate(Obj)) 
        if (Obj.value != '' && !isValidDate(Obj.value)) {
          Obj.className=CONSTFormDateClassError;
		  Obj.value="";
          bOk = false;
        };
	};
  };
  return(bOk);
}

function UpdateListSelected(sHiddenFormId) {
//Esta funcion esta asociada con la funcion del server ('CreaListaCheckSubproductoHTMLPrint')
  oHiddenForm = getObject(sHiddenFormId);
  if (oHiddenForm != null){
	i = 0;
	oHiddenForm.value = "";
	oCheckItem = getObject(sHiddenFormId + i);
	while (oCheckItem != null){
	  if (oCheckItem.checked){
        oHiddenForm.value = oHiddenForm.value + oCheckItem.value + ";";
	  }
      i++;
      oCheckItem = getObject(sHiddenFormId + i);
	}
  }
}


function defaultDescription(oObj, oRelated) {
//Setea el valor de un comboBox a otro componente siempre y cuando no se le haya ingresado algun valor ya.
  bReplace = oRelated.value == "";
  for(i=0;i<oObj.length;i++) 
    bReplace = bReplace || (oObj.options[i].text == oRelated.value)  ;
  if (bReplace) {
    oRelated.value = oObj.options[oObj.selectedIndex].text;
  }
}

function UpdateStateField(oObj, oDescObj, bEnabled, bObligatorio, aFieldRequired){
  //Actualiza el estado del campo de formulario (si esta enabled y si es obligatorio o no)
  if (oObj != null){
    oObj.disabled = !bEnabled;
    oDescObj.className = CONSTFormLabel;
    aFieldRequired = removeFromArray(aFieldRequired, oObj.id)
    if (bObligatorio && bEnabled){
      aFieldRequired.push(oObj.id);
      oDescObj.className = CONSTFormLabelNotNull;
    }
  }
  return(aFieldRequired);
}

///////////////////////// CARGA DINAMICA DE COMBOBOX //////////////////////////
CONSTObteniendoDatos = "<span class='label'>Obteniendo datos...</span>";

function InnerHTMLCombo(Obj, sName, sId, sOnChange, data, addHTML, sDefaultCodValue) {
  if (addHTML == null){ addHTML = ""};
  sHTML = "<select " + addHTML + " size='1' id=" + sId + " name=" + sName + " class='text_box' onChange=" + sOnChange + ">";
  for (i=0; i<data.length; i++) {
    sHTML = sHTML + "<option value='" + data[i].Cod + "'";
	if (sDefaultCodValue == data[i].Cod) {
		sHTML = sHTML + " selected ";
		};
    sHTML = sHTML + ">" + data[i].Desc + "</option>";
  };
  sHTML = sHTML + "</select>";
  Obj.innerHTML = sHTML;
}

function SetObtenerDatos(IdObject) {
  var obj = getObject(IdObject);
  obj.innerHTML = CONSTObteniendoDatos;

}
///////////////////////////////////////////////////////////////////////////////
//                                PRIVADOS
///////////////////////////////////////////////////////////////////////////////

//CONSTANTES
//CONSTANTES
CONSTFormNotNull = "NOTNULL";
CONSTFormNumeric = "NUMERIC";
CONSTInput = "INPUT";
CONSTSelect = "SELECT";
CONSTTextArea = "TEXTAREA";
CONSTFormClassError = "textfielloginError";
CONSTFormClassError2 = "textfielloginError ";
CONSTFormColorNotError = "textfiellogin"
CONSTFormColorNotErrorText2 = "textfielloginError"
CONSTFormNumberClassError = "textfielloginError";
CONSTFormNumberClassError2 = "textfielloginError"
CONSTFormNumberColorNotError = "textfiellogin"
CONSTFormNumberColorNotErrorText2 = "textfielloginError"
CONSTFormDateClassError= "textfielloginError";
CONSTFormDateClassErrorText2="textfielloginError"
CONSTFormDateColorNotError = "textfiellogin";
CONSTFormDateColorNotErrorText2 = "textfielloginError";
CONSTFormLabel = "Label";
CONSTFormLabelNotNull = "label";


//Retorna true si el objeto es un componente de formulario
function isFormControl(Obj){
  sValue = Obj.nodeName;
  bValue = false;
  if (sValue != null) {
	  bValue = (sValue.indexOf(CONSTInput) == 0) ||
   	        (sValue.indexOf(CONSTSelect) == 0) ||
      	     (sValue.indexOf(CONSTTextArea) == 0); 
  };
  return (bValue);
}



//Elimina los espacios en blanco a la derecha e izquierda del texto
function stripSpaces(Obj) {
    var x = Obj.value;      //OPTIMIZAR ESTO
    primerBlanco = /^ /
    ultimoBlanco = / $/
    for (i=0; i < x.length; i++)

   {
    Obj.value=Obj.value.replace (primerBlanco,"");
	Obj.value=Obj.value.replace (ultimoBlanco,"");

   }


	//Obj.value = (x.replace(/^\W+/,'')).replace(/\W+$/,'');

}

//Retorna true si el valor recibido es un numero valido
function isValidNumber(iString) {
    return (("" + parseFloat(iString)) == iString);
}

function isValidDate (sDate) {
//Retorna true si la fecha recibida por parametro es valida: el formato valido de d/m/aaaa
  function y2k(number) { return (number < 1000) ? number + 1900 : number; }

  //verifica si hay dos separadores
  iFirstSep = sDate.indexOf("/");
  iSecondSep = sDate.indexOf("/", iFirstSep + 1);
  bError = (iFirstSep == -1) || (iSecondSep == -1)

  if (!bError) {
    var sDay = sDate.substring(0,iFirstSep);
    var sMonth = sDate.substring(iFirstSep + 1,iSecondSep);
    var sYear = sDate.substring(iSecondSep + 1);
    var dTest = new Date(sYear,sMonth-1,sDay);

    if (sYear == y2k(dTest.getYear()) && (sMonth-1 == dTest.getMonth()) && (sDay == dTest.getDate())) 
      bError = false
    else 
      bError = true;
  }
  return(!bError)
}


function ReturnValidDate (sDate) {
//Retorna el tipo de dato fecha si la fecha recibida por parametro es valida: el formato valido de d/m/aaaa
  function y2k(number) { return (number < 1000) ? number + 1900 : number; }

  //verifica si hay dos separadores
  iFirstSep = sDate.indexOf("/");
  iSecondSep = sDate.indexOf("/", iFirstSep + 1);

  var sDay = sDate.substring(0,iFirstSep);
  var sMonth = sDate.substring(iFirstSep + 1,iSecondSep);
  var sYear = sDate.substring(iSecondSep + 1);
  var dTest = new Date(sYear,sMonth-1,sDay);
  
  return dTest;
  }


//Retorna true si el objeto recibido permite valor nulo
function allowNullLittle(oObj){
 if(typeof fieldRequiredLittle != "undefined") 
  return(!isAbstractCompare(oObj, fieldRequiredLittle))
 else
  return false;
}


//Retorna true si el objeto recibido permite valor nulo
function allowNull(oObj){
 if(typeof fieldRequired != "undefined") 
  return(!isAbstractCompare(oObj, fieldRequired))
 else
  return false;
}

//Retorna true si el objeto recibido debe contener un numero
function isNumeric(oObj){
 if(typeof fieldOnlyNumber != "undefined")  
  return(isAbstractCompare(oObj, fieldOnlyNumber))
 else 
  return false;
}


//Retorna true si el objeto recibido debe contener un numero positivo (mayor estricto de 0)
function isNumericPositiveLittle(oObj){     
 if(typeof fieldOnlyNumberPositiveLittle != "undefined")  
  return(isAbstractCompare(oObj, fieldOnlyNumberPositiveLittle))
 else
  return false;   
}




//Retorna true si el objeto recibido debe contener un numero positivo (mayor estricto de 0)
function isNumericPositive(oObj){     // Tarea 5372 Javier Bautista   
 if(typeof fieldOnlyNumberPositive != "undefined")  
  return(isAbstractCompare(oObj, fieldOnlyNumberPositive))
 else
  return false;   // FIN Tarea 5372 Javier Bautista 
}

//Retorna true si el objeto recibido debe contener una fecha
function isDate(oObj){
 if(typeof fieldOnlyDate != "undefined") 
  return(isAbstractCompare(oObj, fieldOnlyDate))
 else
  return false;
}

//Recibe una lista de los elementos que forman el conjunto y 
//retona true si el objeto recibido pertenece o no al conjunto
function isAbstractCompare(oObj, aFields) {
  var bIsIncluded = false;
  if (aFields != null || aFields != ""){
    for (var i = 0; i < aFields.length ; i++){
      if (aFields[i] == oObj.name){
        bIsIncluded = true;
        break;
      }
    }
  };
  return(bIsIncluded);
}
///////////////////////////////////////////////////////////////////////////////
//                                LISTADOS
///////////////////////////////////////////////////////////////////////////////

///////////////////////// MANEJO IMAGENES MAS/MENOS ///////////////////////////

imgSrcListMas = "images/+1.gif";
imgSrcListMenos = "images/-1.gif";

function getNameMas() {
  nameArr = imgSrcListMas.split("/");
  if (nameArr != null){
    return (nameArr[nameArr.length - 1])}
}

function setImgLists(srcMas, srcMenos){
  imgSrcListMas = srcMas;
  imgSrcListMenos = srcMenos;
}

function clickDetailRow(Obj) {
  nameArr = getObject(Obj.id + "IMG").src.split("/");
  if (nameArr[nameArr.length - 1] == getNameMas()) {
    getObject(Obj.id + "IMG").src = imgSrcListMenos;
    getObject(Obj.id + "Detail").className = "rowShow";
  }
  else {
    getObject(Obj.id + "IMG").src = imgSrcListMas;
    getObject(Obj.id + "Detail").className = "rowHide";
  }
};


///////////////////////////////////////////////////////////////////////////////
//                         DETALLES DE ENTIDADES
///////////////////////////////////////////////////////////////////////////////

function GoViewDetailNewWindow (DDic, tWhere){
  sURL = "";
  iHeight = 0;
  iWidth = 0; 
	switch (DDic){
	  case 'ESg_Web_Cliente':
        sURL = "Ente.asp?DDic=" + DDic + "&IdCliente=" + tWhere + "&sShowPopUp=yes&Params=2";
        break;
  	  case 'ESg_Web_Prospecto':
       sURL = "Ente.asp?DDic=" + DDic + "&IdCliente=" + tWhere + "&sShowPopUp=yes&Params=1";
      break;
	  default:
      break;
  }
  iHeight = 450;
  iWidth = 450;
  
  //window.open(sURL);
  OpenWindow(sURL, iWidth, iHeight);
}

function GoViewDetail(DDic, tWhere){
	switch (DDic){
	  case 'ESg_Web_Cliente':
      document.location = "Ente.asp?DDic=" + DDic + "&tWhere=" + tWhere;
      break;
	  case 'ESg_Operacion':
      parent.basefrm.location = "Operacion.asp?" + sUrlConsulta + "DDic=" + DDic + "&tWhere=" + tWhere;
      break;
	  case 'ESg_Poliza':
      parent.basefrm.location = "Poliza.asp?" + sUrlConsulta + "DDic=" + DDic + "&tWhere=" + tWhere;
      break;
	  case 'ESg_Web_Siniestro':
      parent.basefrm.location = "Siniestro.asp?" + sUrlConsulta + "DDic=" + DDic + "&tWhere=" + tWhere;
      break;
	  case 'Esg_Reclamo':
      parent.basefrm.location = "Reclamo.asp?" + sUrlConsulta + "DDic=" + DDic + "&tWhere=" + tWhere;
      break;
	  case 'ESg_Web_ItemGeneralPoliza':
      idx = tWhere.indexOf("-");
      dataId = tWhere.substring(0, idx);
      dataNroTipoBien = tWhere.substring(idx+1, tWhere.length);
      parent.basefrm.location = "OperacionItem.asp?FromTreeView=S&" + sUrlConsulta + "DDic=" + DDic + "&dataId=" + dataId + "&dataNroTipoBien=" + dataNroTipoBien;
      break;
	  default:
      parent.basefrm.location	= "DDictGrid.asp?" + sUrlConsulta + "DDic=" + DDic + "&tWhere=" + tWhere
      break;
	}
}

function OpenWindow(URL, Alto, Ancho){
  if (ie4){
	estilo = "dialogHeight: " + Alto + "px; dialogWidth: " + Ancho + "px; edge: Raised; center: Yes; help: No; resizable: No; status: No; scroll: yes;";
    window.showModalDialog(URL, null, estilo)}
  else if (ns6){
    estilo = "height=" + Alto + ",width=" + Ancho + "";
    window.open(URL, "winNS", estilo)}
}

function OpenWindowsConHref(sURL){
  window.location.href= sURL;

}


// Abre una venta en modo modal.
// Recibe por los siguientes parametros:
//    sUrl, direccion URL de la pagina para ser cargada en la ventana dialog
//    iWidth, [opcional, default 500] ancho de la ventana
//    iHeight, [opcional, default 500] altura de la ventana
//    oReturnFunc, funcion que se ejecutará cuando se cierre la ventana. A esta funcion se le enviará un parametro que es el resultado retornado por la ventana.
//    oArgs, [opcional], cualquier dato que se necesite pasar a la ventana
var dialogWin = new Object()

function openDialogGrande(sUrl, iWidth, iHeight, oReturnFunc, oArgs) {
	if (iWidth == null) iWidth = 750;
	if (iHeight == null) iHeight = 750;

  if (bNS) {
    if (!dialogWin.win || (dialogWin.win && dialogWin.win.closed)) {
      // Inicializa las propiedades de object dialog modal
      dialogWin.returnFunc = oReturnFunc;
      dialogWin.returnedValue = "";
      dialogWin.args = oArgs;
      dialogWin.url = sUrl;
      dialogWin.width = iWidth;
      dialogWin.height = iHeight;
      // Genera un nombre unico para no sobreescribir una dialog exisitente
      dialogWin.name = (new Date()).getSeconds().toString();
      // Calcula la ubicacion del dialog para que aparezca window center
      dialogWin.left = window.screenX + ((window.outerWidth - dialogWin.width) / 2);
      dialogWin.top = window.screenY + ((window.outerHeight - dialogWin.height) / 2);
      var attr = "screenX=" + dialogWin.left + ",screenY=" + dialogWin.top + ",resizable=no,width=" + String(dialogWin.width) + ",height=" + String(dialogWin.height);
      //alert(attr);
      dialogWin.win=window.open(dialogWin.url, dialogWin.name, attr);
      dialogWin.win.focus()}
    else {
	  	dialogWin.win.focus()
  	}
  }
  else {
     var strFeatures = "dialogTop=300px; dialogLeft=300px; dialogWidth=750px;" + "dialogHeight=750px; center=yes; help=no;ont-family:Arial;"+"font-size:12px"
     var oResult= window.showModalDialog(sUrl, null, strFeatures)
	
		//window.open(sUrl, null, sEstilo);
    if ((typeof(oResult) != "undefined") && (oResult != null)){
      oReturnFunc(oResult);
    }
    else oReturnFunc(null);
  }
}


function openDialog(sUrl, iWidth, iHeight, oReturnFunc, oArgs) {
	if (iWidth == null) iWidth = 500;
	if (iHeight == null) iHeight = 500;
  if (bNS) {
    if (!dialogWin.win || (dialogWin.win && dialogWin.win.closed)) {
      // Inicializa las propiedades de object dialog modal
      dialogWin.returnFunc = oReturnFunc;
      dialogWin.returnedValue = "";
      dialogWin.args = oArgs;
      dialogWin.url = sUrl;
      dialogWin.width = iWidth;
      dialogWin.height = iHeight;
      // Genera un nombre unico para no sobreescribir una dialog exisitente
      dialogWin.name = (new Date()).getSeconds().toString();
      // Calcula la ubicacion del dialog para que aparezca window center
      dialogWin.left = window.screenX + ((window.outerWidth - dialogWin.width) / 2);
      dialogWin.top = window.screenY + ((window.outerHeight - dialogWin.height) / 2);
      var attr = "screenX=" + dialogWin.left + ",screenY=" + dialogWin.top + ",resizable=no,width=" + String(dialogWin.width) + ",height=" + String(dialogWin.height);
      dialogWin.win=window.open(dialogWin.url, dialogWin.name, attr);
      dialogWin.win.focus()}
    else {
	  	dialogWin.win.focus()
  	}
  }
  else {
	sEstilo = "dialogTop=100px; dialogLeft=200px; dialogWidth=446px; dialogHeight=400px; status=no; center=yes";
	var oResult = window.showModalDialog(sUrl, null, sEstilo);
	if ((typeof(oResult) != "undefined") && (oResult != null)){
      oReturnFunc(oResult);
    }
    else oReturnFunc(null);
  }
}

// Event handler para que inhiba los eleemntos del form del navegador (usado solo por funciones para Netscape)
function deadend() {
	if (dialogWin.win && !dialogWin.win.closed) {
		dialogWin.win.focus()
		return false
	}
}

//Bloquea los eventos del navegador que pudieron generarse mientras el diálogo está abierto. (Solo para Netscape)
function blockEvents() {
	if (bNS) {
		window.captureEvents(Event.CLICK | Event.MOUSEDOWN | Event.MOUSEUP | Event.FOCUS)
		window.onclick = deadend
	}
	window.onfocus = checkModal
}

//Restaura el mecanismo de eventos de la ventana original una vez cerrado el dialogo. (Solo para Netscape)
function unblockEvents() {
	if (bNS) {
		window.releaseEvents(Event.CLICK | Event.MOUSEDOWN | Event.MOUSEUP | Event.FOCUS)
		window.onclick = null
		window.onfocus = null
//	} else {
//		enableForms()
	}
}

// Invocada por el handler  del evento onFocus de cada frame, retorna el foco de la ventana de dialogo is esta abieta.
function checkModal() {
	if (dialogWin.win && !dialogWin.win.closed) {
		dialogWin.win.focus()	
	}
}

///////////////////////////////////////////////////////////////////////////////
//                          EFECTOS VISUALES DE LISTAS
///////////////////////////////////////////////////////////////////////////////

var oldSelected;
oldSelected = null;

function rowClick(ob) {
  if (oldSelected != null) {
	//oldSelected.className = "ninguna";
    oldSelected.style.backgroundColor="#FFFFFF"; //Color Normal
  };

  if (ob != null) {
    if (ob.style != null) {
		//ob.className = "Grid_Cell"
      ob.style.backgroundColor = "#DDF6C5"; //Color Click
      oldSelected = ob;
    }
  }
}

// *********** AGREGADO JUAN PABLO *****************
function rowClickCot(ob) {
  if (oldSelected != null) {
	oldSelected.className='CellSelectedOff';
  };

  if (ob != null) {
    if (ob.style != null) {
		ob.className='CellSelectedOn';
		oldSelected = ob;
    }
  }
}

// *********** AGREGADO Javier para soporte *****************
function rowClickSoporte(ob) {
  if (oldSelected != null) {
	oldSelected.className='file_datos';
  };

  if (ob != null) {
    if (ob.style != null) {
		ob.className='file_datos_click';
		oldSelected = ob;
    }
  }
}

// ************** AGREGADO JUAN PABLO *****************

function rowIn(ob, color){
 /* if (color == null) { color = "#DDDDDD" };

  if (ob != null) {
	if (ob == oldSelected) {
//      ob.style.backgroundColor="#F7FEEB";  //Color Over (estado Click)
	}
	else {
      ob.style.backgroundColor=color; //Color Over (estado Normal)
      rowClick(oldSelected);
	};
    ob.style.cursor = 'hand';
  }*/
}

function rowOut(ob, color){
 /* if (color == null) { color = "#FFFFFF"};

  if (ob != null) {
	ob.style.backgroundColor=color; //Color Normal
	rowClick(oldSelected);
  }*/
}

function rowOutIPVW(ob){
 /* if (ob != null) {
	ob.style.backgroundColor='#F7FEE9'; 
	rowClick(oldSelected);
  }*/
}

function rowOutICW(ob){
  if (ob != null) {
	ob.style.backgroundColor='#F7FEE9'; //Color Normal
	rowClick(oldSelected);
  }
}


function rowInIPVW(ob){
 /* if (ob != null) {
	if (ob == oldSelected) {
      ob.style.backgroundColor="#F5FEDE";  //Color Over (estado Click)
	}
	else {
      ob.style.backgroundColor='#F5FEDE'; //Color Over (estado Normal)
      rowClick(oldSelected);
	};
    ob.style.cursor = 'hand';
  }*/
}


function rowInICW(ob){
  if (ob != null) {
	if (ob == oldSelected) {
      ob.style.backgroundColor="#CCDDC0";  //Color Over (estado Click)
	}
	else {
      ob.style.backgroundColor='#F5FEDE'; //Color Over (estado Normal)
      rowClick(oldSelected);
	};
    ob.style.cursor = 'hand';
  }
}

// Muestro un texto en el objeto div.
function showText(thetext, ObjDiv){
  ObjDiv.innerHTML=thetext
}

//Reseteo el texto en el objeto Div pasado como parametro.
function resetIt(ObjDiv){
  ObjDiv.innerHTML=' '
}


// Convierto un numero a fecha.
function convertNumeroAFecha(numero){
    var fecha;
	var anio=numero.substring(0,4)
	var mes=numero.substring(4,6)
    var dia=numero.substring(6,8)
    fecha=dia+"/"+mes+"/"+anio;
	return fecha;
}

// Cargo los Datos
function cargarDatosPares(oValue){
    m= String ;
	var n="";
   for (var i=0;i < oValue.length; i++){
	if(i % 2 == 1) {
		m=(oValue[i]);
     	n += m + ",   ";
	}	
   }
  m=n.substring(0,n.length -4)

  return m;

}

// Cargo los Datos
function cargarDatosParesTresCampos(oValue){
    m= String ;
	ultimo=-2;
	var n="";
   for (var i=0;i < oValue.length; i++){
	//alert(i);
	if(ultimo + 3 == i) {		
		m=(oValue[i]);
     	n += m + ",   ";
		ultimo=i;
	}	
   }
  m=n.substring(0,n.length -4)

  return m;

}




// Cargo los Codigo
function cargarCod(oValue){
    m= String ;
	var n="";  
   for (var i=0;i < oValue.length; i++){
	if(i % 2 == 0) {
		m=(oValue[i]);
		n += m + ",";
	}	
   }
  m=n.substring(0,n.length -1)

  return m;

}

// Cargo los Codigo
function cargarCodDesc(oValue){
    m= String ;
	var n="";  
   for (var i=0;i < oValue.length; i++){
		m=(oValue[i]);
		n += m + "*";   	   
   }

  m=n.substring(0,n.length -1)

  return m;

}


// Cargo los Codigo Para los lookup con tres campos
function cargarCodTresCampos(oValue){
    m= String ;
	var n="";  
   for (var i=0;i < oValue.length; i++){
	if(i % 3 == 0) {
		m=(oValue[i]);
		n += m + ",";
	}	
   }
  m=n.substring(0,n.length -1)

  return m;

}

// Validacion de campos del formulario.
function validarCampos(ObjForm){
  cantidad=0;
  cantidadCampos=0;
  for (var i=0;i < ObjForm.length; i++){
     Obj = ObjForm[i];
	if(Obj.type == "text"){
	  if(Obj.value == "") {
	    cantidad++;
	 }
	 cantidadCampos++;
    }
  }
  if(cantidad == cantidadCampos){
	 alert("DEBE COMPLETAR ALGUN CAMPO")
     return false;}
  else
	 return true;

}


//Funcion que modifica los tabs de el punto de venta web.
function MoficicarTab(id){

  if(id == "1"){
   if (ie4){    
    eval("principal.className='tab_frame_on'");
    eval("misProspectos.className='tab_frame_off'");
    eval("misPresupuestos.className='tab_frame_off'");
    eval("misClientes.className='tab_frame_off'");
    eval("cambiarCampania.className='tab_frame_off'");
   } 
   else if (ns6){	  	
		objeto1=top.frameHeader.getObject("principal");
		objeto2=top.frameHeader.getObject("misProspectos");
		objeto3=top.frameHeader.getObject("misPresupuestos");
		objeto4=top.frameHeader.getObject("misClientes");
		objeto5=top.frameHeader.getObject("cambiarCampania");
		objeto1.className = "tab_frame_on";	  
		objeto2.className = "tab_frame_off";	  
		objeto3.className = "tab_frame_off";	  
		objeto4.className = "tab_frame_off";	  						
   		objeto5.className = "tab_frame_off";	  
   }     
   
  }
  if(id == "2"){
   if (ie4){  
    eval("principal.className='tab_frame_off_left'");
    eval("misProspectos.className='tab_frame_on'");
    eval("misPresupuestos.className='tab_frame_off'");
    eval("misClientes.className='tab_frame_off'");
    eval("cambiarCampania.className='tab_frame_off'");
   }
   else if (ns6){	  	
		objeto1=top.frameHeader.getObject("principal");
		objeto2=top.frameHeader.getObject("misProspectos");
		objeto3=top.frameHeader.getObject("misPresupuestos");
		objeto4=top.frameHeader.getObject("misClientes");
		objeto5=top.frameHeader.getObject("cambiarCampania");
		objeto1.className = "tab_frame_off_left";	  
		objeto2.className = "tab_frame_on";	  
		objeto3.className = "tab_frame_off";	  
		objeto4.className = "tab_frame_off";	  						
   		objeto5.className = "tab_frame_off";	  
   }     
  }
  if(id == "3"){
   if (ie4){   
    eval("principal.className='tab_frame_off_left'");
    eval("misProspectos.className='tab_frame_off_left'");
    eval("misPresupuestos.className='tab_frame_off'");
    eval("misClientes.className='tab_frame_on'");
    eval("cambiarCampania.className='tab_frame_off'");
   }
   else if (ns6){	  	
		objeto1=top.frameHeader.getObject("principal");
		objeto2=top.frameHeader.getObject("misProspectos");
		objeto3=top.frameHeader.getObject("misPresupuestos");
		objeto4=top.frameHeader.getObject("misClientes");
		objeto5=top.frameHeader.getObject("cambiarCampania");
		objeto1.className = "tab_frame_off_left";	  
		objeto2.className = "tab_frame_off_left";	  
		objeto3.className = "tab_frame_off";	  
		objeto4.className = "tab_frame_on";	  						
   		objeto5.className = "tab_frame_off";	  
   }   
  }

  if(id == "4"){
   if (ie4){  
    eval("principal.className='tab_frame_off_left'");
    eval("misProspectos.className='tab_frame_off_left'");
    eval("misPresupuestos.className='tab_frame_on'");
    eval("misClientes.className='tab_frame_off_left'");
    eval("cambiarCampania.className='tab_frame_off'");
   }
   else if (ns6){	  	
		objeto1=top.frameHeader.getObject("principal");
		objeto2=top.frameHeader.getObject("misProspectos");
		objeto3=top.frameHeader.getObject("misPresupuestos");
		objeto4=top.frameHeader.getObject("misClientes");
		objeto5=top.frameHeader.getObject("cambiarCampania");
		objeto1.className = "tab_frame_off_left";	  
		objeto2.className = "tab_frame_off_left";	  
		objeto3.className = "tab_frame_on";	  
		objeto4.className = "tab_frame_off_left";	  						
   		objeto5.className = "tab_frame_off";	  
   }

   
  }



}

//Función Nueva que abre una ventana popUp y muestra los datos de los cliente o prospectos.

function AbrirDatosCliente(idCliente){
			sUrl="Ente.asp?IDCLIENTE="+idCliente + "&sShowPopUp=YES"
           // window.open(sUrl);
			var strFeatures = "dialogWidth=466px;" + "dialogHeight=400px; scroll=no; status=no; statys=no; center=yes; help=no;ont-family:Arial;"+"font-size:12px"
            var oResult= window.showModalDialog(sUrl, null, strFeatures)
  }

function AbrirDatosClienteProspectos(idCliente,params){
	     	sUrl="Ente.asp?IDCLIENTE="+idCliente + "&sShowPopUp=YES&params="+params
           // window.open(sUrl);
			var strFeatures = "dialogWidth=466px;" + "dialogHeight=450px; scroll=no; status=no; statys=no; center=yes; help=no;ont-family:Arial;"+"font-size:12px"
            var oResult= window.showModalDialog(sUrl, null, strFeatures)
  }


// Esconde el Hint mostrado.
function showhidehint(nombreid){
	if(document.getElementById(nombreid).style.visibility == "hidden"){
		showHint(nombreid);
	}
	else{
		hideHint(nombreid);
	}
}
  
 //Muestra un Hint.
 function showHint(nombreid){
	document.getElementById(nombreid).style.visibility = "visible"
 }
 
 //Muesra un Hint en una posicion.
 function showHintPos(nombreid)
 {
	//se obtienen las posiciones del mouse
	x_position=event.x;
	y_position=event.y;

	document.getElementById(nombreid).style.top = y_position + 150;
	document.getElementById(nombreid).style.left = x_position - 20 ;
	document.getElementById(nombreid).style.visibility = "visible"
 }

 function hideHint(nombreid){
	document.getElementById(nombreid).style.visibility = "hidden"
 }


//RQ#6752/JAB
 //Valida la fecha de Inspeccion que se pasa como parametro.
function validarFechaInspeccion(fecha){
   fechaInicio= fecha.value;
   ok=false;

   if(isValidDate(fechaInicio)){
      fechaMax1=ReturnValidDateAAAAMMDD(fechaMax);
      fechaMin1=ReturnValidDateAAAAMMDD(fechaMin);
      fecha1=ReturnValidDate(fechaInicio);	  
        
      if(fechaMin == '18991230')
	  { 
	    if(fechaMax != '18991230')
		  {  ok=(fecha1 <= fechaMax1);		    
          }
		else
 		  ok=true;
          
	  }   
     else
	   {
        ok= fechaMin1 <= fecha1;	
	    if(fechaMax != '18991230')
		    ok= (ok && (fecha1 <= fechaMax1));
	   }
   }
  else
     {
      alert("LA FECHA ES INVALIDA");
     }
   if(!ok)
	   alert("LA FECHA DEBE ESTAR ENTRE "+ ReturnFechaDDMMAAAA(fechaMin1) +" Y " + ReturnFechaDDMMAAAA(fechaMax1));

   return ok;
  }

// Borra el objeto pasado como parametro.
 function borrarDato(obj){
      objeto= getObject(obj);
	  objeto.value="";

   }

// Valida la fecha de la poliza.
function validarFechaPoliza(fecha,fechaFinVigencia,FechaHastaOperacionDiferencia,FechaHastaOperacion){
   
   rlEsFeriado= sBoolean.split(",");   
   rlFechasNoValidas= fechasNoValidas.split(",");   
   
   fechaInicio= fecha.value;
   ok=false;
   okEsFeriado=true;
   if(isValidDate(fechaInicio)){
      fechaMax1=ReturnValidDateAAAAMMDD(fechaMax);
      fechaMin1=ReturnValidDateAAAAMMDD(fechaMin);
	  
	  fechaSubP=ReturnValidDateAAAAMMDD(fechaFinVigenciaPoliza);
      fecha1=ReturnValidDate(fechaInicio);

      //Se utiliza este tipo de fecha para validar el feriado.
      fechaValidarFeriado=ReturnFechaInt(fecha1);

	  fechaActual=new Date();
	  diferencia=fecha1-fechaActual;

	  fechaSubP2=new Date(fechaSubP.getTime() + diferencia);
	  fechaFinVigencia.value=ReturnFechaDDMMAAAA(fechaSubP2); 
	  
	  //Seteo la fecha de fin de operacion en el input. Si la fecha se corre esta funcion 
	  //tambien corre la fecha de fin de operacion	  
	  fechaFinOperacion=FechaHastaOperacionDiferencia.value;
	  
	  fechaFinVigenciaOperacion= ReturnValidDateAAAAMMDD(fechaFinOperacion);
      fechaDiferencia=new Date(fechaFinVigenciaOperacion.getTime() + diferencia);
      FechaHastaOperacion.value=ReturnFechaInt(fechaDiferencia)
      //alert(fechaFinVigenciaOperacion);
      
       //FechaHastaOperacionDiferencia.value=ReturnFechaDDMMAAAA(fechaDiferencia);	  
       okEsFeriado=validarFeriado(rlEsFeriado,rlFechasNoValidas,fechaValidarFeriado);
      
      if(fechaMin == '18991230')
	  {
	    if(fechaMax != '18991230'){
		    ok=(fecha1 <= fechaMax1);
		  }		
		else
 		  ok=true;          
	  }   
     else
	   { 
        ok= fechaMin1 <= fecha1;       
	    if(fechaMax != '18991230')
		    ok= (ok && (fecha1 <= fechaMax1));
	   }   
    }
	else
	   {
	    fechaFinVigencia.value="";
	    alert("LA FECHA ES INVALIDA");
       }
   if(!ok)
	   alert("LA FECHA DEBE ESTAR ENTRE "+ ReturnFechaDDMMAAAA(fechaMin1) +" Y " + ReturnFechaDDMMAAAA(fechaMax1));
   return (ok && okEsFeriado);
  }

// Valida si la fecha es feriado o no.  
 function validarFeriado(rlEsFeriado,rlFechasNoValidas,fecha){
   EsFeriado=true;
       
   for (var i=0;i< rlFechasNoValidas.length; i++){
     if(fecha == rlFechasNoValidas[i]){
        EsFeriado=false;
        if(rlFechasNoValidas== true)
          alert("ES UN DIA FERIADO");
        else
           alert("ES UN DIA NO LABORABLE");
        break;
     } 
   }   
  return EsFeriado;
 }


function ReturnValidDateAAAAMMDD(fecha){

  var sDay = fecha.substring(6,8);
  var sMonth = fecha.substring(4,6);
  var sYear = fecha.substring(0,4);
  var dTest = new Date(sYear,sMonth-1,sDay);

  return dTest;

}

// Retorna la fecha en AnioMesDia
function ReturnFechaInt(fecha){
  var sDay = fecha.getDate();
  var sMonth = fecha.getMonth()+ 1;
  var sYear = fecha.getYear();
  if(sMonth < 10)
     sMonth = "0" + sMonth;
  if(sDay < 10)
     sDay = "0" + sDay;
  
  var dTest = sYear + "" + sMonth + "" + sDay; 
  return dTest;

}

// Retorna la fecha en Dia/Mes/Año.
function ReturnFechaDDMMAAAA(fecha){

  var sDay = fecha.getDate();
  var sMonth = fecha.getMonth()+ 1;
  var sYear = fecha.getYear();
  var dTest = sDay + "/" + sMonth +"/" + sYear

  return dTest;

}

// Abre la ventana de Alta de conductores.
function AbrirAltaConductor(){
	sUrl="CheckAltaConductor.asp"
	var strFeatures = "dialogWidth=700px;" + "dialogHeight=430px; scroll=no; status=no; statys=no; center=yes; help=no;"
    //window.open(sUrl);
    var oResult=abrirVentana(sUrl,700,430,null,null);
    //var oResult= window.showModalDialog(sUrl, null, strFeatures);
    window.parent.close();        
}

// Abre la ventana de modificacion de conductores.
function AbrirModificacionConductor(conductor){
	sUrl="CheckAltaConductor.asp?AgregarDatosConductor=" + conductor
	var strFeatures = "dialogWidth=700px;" + "dialogHeight=430px; scroll=no; status=no; statys=no; center=yes; help=no;"
    var oResult=abrirVentana(sUrl,700,430,null,null);
    //var oResult= window.showModalDialog(sUrl, null, strFeatures);
    window.parent.close();          
}
 
 //Abre el ABM de conductores
function AbrirModificacionAgregarConductor(conductor){
	sUrl="CheckAltaConductor.asp?AgregarDatosConductor=" + conductor + "&ModificarAgregar=S"
	var strFeatures = "dialogWidth=700px;" + "dialogHeight=430px; scroll=no; status=no; statys=no; center=yes; help=no;"
    var oResult=abrirVentana(sUrl,700,430,null,null);
    //var oResult= window.showModalDialog(sUrl, null, strFeatures);
     window.parent.close();          
}

// Abre el listado de conductores
function VerListaConductores(subject,agrega){
	sUrl="VerListaConductores.asp?subject=" + subject + "&Agregar=" + agrega;
	var strFeatures = "dialogWidth=715px;" + "dialogHeight=350px; scroll=no; status=no; statys=no; center=yes; help=no;"
    var oResult=abrirVentana(sUrl,715,350,null,null);
    //var oResult= window.showModalDialog(sUrl, null, strFeatures)

}
 
 // Abre la ventana donde se eligira el mailing a imprimir
function AbrirModuloMailing(Datos){
        sUrl="ModuloMailing.asp?" + Datos;
        var strFeatures = "dialogWidth=800px;" + "dialogHeight=500px; scroll=auto; status=no; center=yes; help=no"       
        var oResult=abrirVentana(sUrl,800,500,null,null);  
        //window.open(sUrl);
}

//Abre la ventana donde va a imprimirse el mailing.
function AbrirModuloMailingServicio(Datos){
        sUrl="ServicioMailing.asp?" + Datos;
        var strFeatures = "dialogWidth=680px;" + "dialogHeight=500px; scroll=auto; status=no; center=yes; help=no"       
        var oResult=abrirVentana(sUrl,680,500,null,null);
        //window.open(sUrl);
}


function AbrirAyuda(){
		sUrl="Ayuda.asp";
        var strFeatures = "dialogWidth=700px;" + "dialogHeight=450px; scroll=auto; status=no; center=yes; help=no"       
        //var oResult= window.showModalDialog(sUrl, null, strFeatures)    
        var oResult=abrirVentana(sUrl,700,450,null,null);
        //window.open(sUrl);
}


function AbrirScoring(){
		oObjeto=getObject("CODSUBPRODUCTOS")
		sSubProductos=oObjeto.value;
		sUrl="Scoring.asp?listaSubProductos=" + sSubProductos;
        var strFeatures = "dialogWidth=600px;" + "dialogHeight=500px; scroll=auto; center=yes; status=no; help=no"       
        var oResult=abrirVentana(sUrl,600,500,null,null);
        //var oResult= window.showModalDialog(sUrl, null, strFeatures)    
        //window.open(sUrl);
}

function AbrirDatosVehiculoDetalle(){
		oObjeto=getObject("IdVehiculo")
		
		if((oObjeto != null)&& (oObjeto.value != "")) {
			idVehiculo=oObjeto.value;
			sUrl="DatosVehiculoDetalle.asp?IdVehiculo=" + idVehiculo;
			var strFeatures = "dialogWidth=600px;" + "dialogHeight=500px; scroll=auto; status=no; center=yes; help=no"       
			var oResult=abrirVentana(sUrl,600,500,null,null);
			//window.open(sUrl);		
		}
		else
		  alert("NO SELECCIONO NINGUN AUTOMOVIL");

}


//calcular la edad de una persona 
//recibe la fecha como un string en formato español 
//devuelve un entero con la edad. Devuelve false en caso de que la fecha sea incorrecta o mayor que el dia actual 
function calcular_edad(fecha){ 

    //calculo la fecha de hoy 
    hoy=new Date() 
    //alert(hoy) 

    //calculo la fecha que recibo 
    //La descompongo en un array 
    var array_fecha = fecha.split("/") 
    //si el array no tiene tres partes, la fecha es incorrecta 
    if (array_fecha.length!=3) 
       return false 

    //compruebo que los ano, mes, dia son correctos 
    var ano 
    ano = parseInt(array_fecha[2]); 
    if (isNaN(ano)) 
       return false 

    var mes 
    mes = parseInt(array_fecha[1]); 
    if (isNaN(mes)) 
       return false 

    var dia 
    dia = parseInt(array_fecha[0]); 
    if (isNaN(dia)) 
       return false 


    //si el año de la fecha que recibo solo tiene 2 cifras hay que cambiarlo a 4 
    if (ano<=99) 
       ano +=1900 

    //resto los años de las dos fechas 
    edad=hoy.getYear()- ano - 1; //-1 porque no se si ha cumplido años ya este año 

    //si resto los meses y me da menor que 0 entonces no ha cumplido años. Si da mayor si ha cumplido 
    if (hoy.getMonth() + 1 - mes < 0) //+ 1 porque los meses empiezan en 0 
       return edad 
    if (hoy.getMonth() + 1 - mes > 0) 
       return edad+1 

    //entonces es que eran iguales. miro los dias 
    //si resto los dias y me da menor que 0 entonces no ha cumplido años. Si da mayor o igual si ha cumplido 
    if (hoy.getUTCDate() - dia >= 0) 
       return edad + 1 

    return edad 
}

	//Se utiliza para ver la descripcion del vehiculo.
	function AbrirDatosBien(){
			sUrl="DescripcionBienVehiculo.asp"; 
			//window.open(sUrl);
			var strFeatures = "dialogWidth=466px;" + "dialogHeight=308px; scroll=no; status=no; statys=no; center=yes; help=no;ont-family:Arial;"+"font-size:12px"
		    var oResult=abrirVentana(sUrl,466,308,null,null);
	}
				  
	//Abre la ventana de errores en la grilla de cotizacion.
	//Se utiliza para los subproductos con cotizacion externa.			  
	  function AbrirErroresCotizacion(){
		sUrl="ErroresCotizacion.asp";
        var strFeatures = "dialogWidth=500px;" + "dialogHeight=400px; status=no; scroll=auto; center=yes; help=no"        
        //var oResult= window.showModalDialog(sUrl, null, strFeatures)
		var oResult=abrirVentana(sUrl,500,400,null,null);
    }					  


//Un template para abrir ventanas en netscape, ie y otros.
function abrirVentana(sUrl, iWidth, iHeight, oReturnFunc, oArgs) {
	if (iWidth == null) iWidth = 500;
	if (iHeight == null) iHeight = 500;

  if (bNS) {
    if (!dialogWin.win || (dialogWin.win && dialogWin.win.closed)) {
      // Inicializa las propiedades de object dialog modal
      dialogWin.returnFunc = oReturnFunc;
      dialogWin.returnedValue = "";
      dialogWin.args = oArgs;
      dialogWin.url = sUrl;
      dialogWin.width = iWidth;
      dialogWin.height = iHeight;
      // Genera un nombre unico para no sobreescribir una dialog exisitente
      dialogWin.name = (new Date()).getSeconds().toString();
      // Calcula la ubicacion del dialog para que aparezca window center
      dialogWin.left = window.screenX + ((window.outerWidth - dialogWin.width) / 2);
      dialogWin.top = window.screenY + ((window.outerHeight - dialogWin.height) / 2);
      var attr = "scrollbars=yes,screenX=" + dialogWin.left + ",screenY=" + dialogWin.top + ",resizable=no,width=" + String(dialogWin.width) + ",height=" + String(dialogWin.height);
      dialogWin.win=window.open(dialogWin.url, dialogWin.name, attr);
      dialogWin.win.focus()}
    else {
	  	dialogWin.win.focus()
  	}
  }
  else {
	sEstilo = "dialogTop=100px; dialogLeft=200px; dialogWidth=" + iWidth + "px; dialogHeight=" + iHeight + "px; status=no; center=yes scroll=auto; help=no";
	var oResult = window.showModalDialog(sUrl, null, sEstilo);
	
	if ((typeof(oResult) != "undefined") && (oResult != null)){
      return oResult;
    }
    else return null;
  }
}





