
//Pasa un valor numérico a formato moneda 
//Recibe el valor numérico double (precio) y la coletilla (moneda)
//Devuelve el valor convertido
// Precio no tiene separador de millares, y el separador decimal es "."
function FormatNum (precio, decim){
	var pdecimal;
	var strprecio = new String(precio);	
	var strdecimar = new String("0000000000");	
	
	if (decim == 0) {
		precio = Math.round(precio);
		precioaux = "";
	}
	else {
    exp=Math.pow(10, decim);
    precio=Math.round(precio*exp)/exp;
    strprecio=new String(precio);
		pdecimal=strprecio.indexOf(".");
		if (pdecimal != -1){
			precioaux = "," + strprecio.substr(pdecimal+1,decim);
		}	
		else {
			precioaux = "," + strdecimar.substr(0,decim);
		}
    var l=precioaux.length;
    if (l<(decim+1)) {
      precioaux+=strdecimar.substr(0,decim+1-l);
    }
	}	
	
	var entera = new String(parseInt(precio));	
	while (entera.length > 2){
		precioaux = "." + entera.substring(entera.length-3,entera.length)+ precioaux;
		entera =  entera.substring(0,entera.length-3);
	}
	if (entera.length > 0 ) {
		precioaux = entera + precioaux;
	}
	else {
		precioaux = precioaux.substring(1,precioaux.length);
	}
	return(precioaux);
}

// Se pasa como parámetro una cadena con puntos
// Se devuelve el valor numérico correspondiente
function CDbl (strDbl) {
	var pdecimal;													// Almacena la posición de los puntos
	var strprecio = new String(strDbl);		// Almacena la cadena de entrada
	
	// Calcular la posición del primer punto recorriendo la cadena de Izda. a Dcha.
	pdecimal=strprecio.indexOf(".");
	// Si hay algún punto en la cadena
	while (pdecimal != -1) {
	  // Obtener la subcadena antes del punto
		precioauxini = strprecio.substr(0,pdecimal);
		// Obtener la subcadena después del punto para eliminarlo
		precioauxresto = strprecio.substring(pdecimal+1, strprecio.length);
		// Unir ambas subcadenas
		strprecio = precioauxini + precioauxresto;
		// Calcular la posición del siguiente punto
		pdecimal=strprecio.indexOf(".");
	}	
	// Calcular la posición de la coma
	pdecimal=strprecio.indexOf(",");
	// Si hay una coma se sustituye por un punto
	if (pdecimal != -1) {
		precioauxini = strprecio.substr(0,pdecimal);
		precioauxresto = strprecio.substring(pdecimal+1, strprecio.length);
		strprecio = precioauxini + "." + precioauxresto;
	}
		
	return(parseFloat(strprecio));
}

function FormatNum2 (precio, moneda, decim){
	var pdecimal;
	var strprecio = new String(precio);	
	
	if (decim == 0) {
		precio = Math.round(precio);
		precioaux = moneda;
	}
	else {
		pdecimal=strprecio.indexOf(".");
		precioaux = "," + strprecio.substring(pdecimal+1,pdecimal+decim+1)+ moneda;
	}	
	
	var entera = new String(parseInt(precio));	
	while (entera.length > 2){
		precioaux = entera.substring(entera.length-3,entera.length)+ precioaux;
		entera =  entera.substring(0,entera.length-3);
	}
	if (entera.length > 0 ) {
		precioaux = entera + precioaux;
	}
	else {
		precioaux = precioaux.substring(1,precioaux.length);
	}
	return(precioaux);
}

// Se pasa como parámetro una cadena con puntos
// Se devuelve la cedena sin puntos correspondiente
function PDbl (strDbl) {
	var pdecimal;													// Almacena la posición de los puntos
	var strprecio = new String(strDbl);		// Almacena la cadena de entrada
	
	// Calcular la posición del primer punto recorriendo la cadena de Izda. a Dcha.
	pdecimal=strprecio.indexOf(".");
	// Si hay algún punto en la cadena
	while (pdecimal != -1) {
	  // Obtener la subcadena antes del punto
		precioauxini = strprecio.substr(0,pdecimal);
		// Obtener la subcadena después del punto para eliminarlo
		precioauxresto = strprecio.substring(pdecimal+1, strprecio.length);
		// Unir ambas subcadenas
		strprecio = precioauxini + precioauxresto;
		// Calcular la posición del siguiente punto
		pdecimal = strprecio.indexOf(".");
	}	
	// Calcular la posición de la coma
	pdecimal=strprecio.indexOf(",");
	// Si hay una coma se sustituye por un punto
	if (pdecimal != -1) {
		precioauxini = strprecio.substr(0,pdecimal);
		precioauxresto = strprecio.substring(pdecimal+1, strprecio.length);
		strprecio = precioauxini + "." + precioauxresto;
	}
		
	return(strprecio);
}


//Valida que el texto pasado es una fecha correcta:
function ValidaFecha (strFecha) {
	var dia , mes, anio;
	var aDatos;
	aDatos=strFecha.split("/");
	if (aDatos.length!=3) return false;
		
	dia=aDatos[0];
	mes=aDatos[1];
	anio=aDatos[2];

	if (isNaN(dia) || isNaN(mes) || isNaN(anio))
		return (false);
	anio = parseInt (anio,10)
	if ((anio >=100)& (anio < 1800))
			return (false)
		
	dia = parseInt (dia, 10);
	mes = parseInt (mes, 10);
	
	if (dia<=0) return false;
	if ((mes<=0) || (mes>12)) return false;
		
	var year
	if (anio<100) {
		year= anio + ((anio<70) ? 2000 : 1900);
	} else {
		year=anio;
	}
	
	return (dia<=GetMonthCount(mes,year));
}

var rgMC = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

function GetMonthCount(month,year) {
	var c=rgMC[month-1];
	if((2==month)&&IsLeapYear(year)) c++;
	return c;
}

function IsLeapYear(year) {
	return( 0==year%4 && ((year%100!=0)||(year%400==0)) );
}


// Valida que el email es correcto:
function ValidaEmail(mail) {
	if (mail == "") {
		return (false);
	}
	else {
		var arroba = mail.indexOf('@');
		var punto = mail.lastIndexOf('.');

		if ((arroba == -1) || (punto == -1)) {
			return (false);
		}
		else if (punto < arroba) {
			return (false);
		}
	}
	return true
}


// remote procedure call
function callServer(fichero) {
    var head = document.getElementsByTagName('head').item(0);
    var old  = document.getElementById('lastLoadedCmds');
    if (old) {
        head.removeChild(old);
    }

    var d=new Date();
    var script = document.createElement("script");
    script.src = fichero + "&rndm=" + d;
    script.type = "text/javascript";
    script.defer = true;
    script.id = "lastLoadedCmds";
    void(head.appendChild(script));
}


function CrearInput(nombre, valor) {
	var inp;
	inp=document.createElement("input")
	inp.type="hidden";
	inp.name=nombre;
	inp.value=valor;
	return inp
}


function getComputedStyleX(el, sProp) {
	if (!document.defaultView)
		return parseInt(el.currentStyle[sProp]);
	else
		return parseInt(document.defaultView.getComputedStyle(el, null).getPropertyValue(sProp));
}



function hasClassName(el, sClassName) {
	if (el == null) return false;
	var parts = String(el.className).split(/\s+/);
	for (var i = 0; i < parts.length; i++) {
		if (parts[i] == sClassName)
			return true;
	}
	return false;
}


//comprueba que un campo de un formulario contiene un número entero
// y devuelve ese valor. Si no es número le asigna el valor inicial
function ValidarInt(obj, inicial) {
	var tmp=parseInt(obj.value, 10);
	if (isNaN(tmp)) tmp=inicial;
	obj.value=tmp;
	return tmp;
}

//comprueba que un campo de un formulario contiene un número en coma flotante
// en formato español y devuelve el número interpretado en JS.
function ValidarDbl(obj, inicial, decimales) {
	var tmp=CFloat(obj.value, inicial);
	obj.value=FormatNum(tmp, decimales);
	return tmp;
}

function CFloat(num, inicial) {
	var tmp=num;
	tmp=tmp.replace(/\./g, "");
	tmp=tmp.replace(/,/g, ".");
	tmp=parseFloat(tmp);
	if (isNaN(tmp)) tmp=inicial;
	return tmp;
}



function getCookieVal (offset) {
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1)
    endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) {
  var arg = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;
  while (i < clen) {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg)
      return getCookieVal (j);
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break; 
  }
  return null;
}

function SetCookie (name,value,expires,path,domain,secure) {
var expdate = new Date ();
expdate.setTime (expdate.getTime() + (10*365 * 24 * 60 * 60 * 1000)); 

  document.cookie = name + "=" + escape (value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "; expires=" + expdate.toGMTString()) +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
}

function CambiarClase(el, sClassName) {
	if (el == null) return;
	var found=false;
	var nueva="";
	var parts = String(el.className).split(/\s+/);
	for (var i = 0; i < parts.length; i++) {
		if (parts[i] == sClassName) {
			found=true;
		} else {
			nueva+=parts[i];
			if (i<parts.length) nueva+=" ";
		}
	}
	if (!found) nueva+=" " + sClassName;
	el.className=nueva;
}

function fuera(x) {
	if (x.blur) x.blur();
}

