/*
* function abreConfirmacion (pagina) {
* Abre una pagina en una ventana llamada Confirmacion
*/

function abreConfirmacion (pagina) {

  var opciones="left=100,top=100,width=400,height=250", i= 0;
  window.open(pagina,"Confirmacion",opciones);
}
/*
* function abreConfirmacion (pagina) {
* Abre una pagina en una ventana llamada Confirmacion
*/

function abreConfirmacionencliente (pagina,anchura,altura) {

  var anchura2=anchura*1/2;
  var altura2=altura*1/2;
  var opciones="left="+((anchura2)-100)+",top="+((altura2)-50)+",width=135,height=20", i= 0;
  window.open(pagina,"Confirmacion",opciones);
}
/*
* function abreVentana (pagina, nombre,opciones) {
* Abre una pagina en una ventana totalmente configurable
* aunque tiene valores por defecto.
*/

function abreventana (pagina, nombre,opciones) {

  var opciones="left=0,top=0,width=600,height=450", i= 0;
  window.open(pagina,nombre,opciones);
}

/*
*  function esNulo(val)
*  Determina si un campo es nulo o no
*  devuelve verdadero o falso
*/
function esNulo(val){
	return(val==null);
}

/*
*  function esNumero(val)
*  Determina si un string es un numero o no
*  devuelve verdadero o falso
*/

function esNumero(val){
 if(!esBlanco(val)){
   return(parseFloat(val,10)==(val*1));
 }
}


/*
 * isDate ( date_string, format_string )
 * Returns true if date string matches format of format string and
 * is a valid date. Else returns false.
 * It is recommended that you trim whitespace around the value before
 * passing it to this function, as whitespace is NOT ignored!
*/
function esFecha(val) {
	var date=getFechaFromFormat(val,"dd/MM/yyyy");
	if (date==0) { return false; }
	return true;
}
/**
* funcion que determina si un determinado campo esta vacio
*si esta vacio devolvera true i si no false
*/
function esBlanco(val){
	if(val==null){
		return true;
	}
	for(var i=0;i<val.length;i++){
		if((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){
			return false;
		}
	}
	return true;
}
/**
* funcion que calcula la semana en la que esta el sistema
* devuelve la semana.
*/
function semana(val){
	// Obtengo mes dia y anyo por separado.
	if (val!=0){
		var dia = val.charAt(0)+val.charAt(1);
		var mes = val.charAt(3)+val.charAt(4);
        var anyo= val.charAt(6)+val.charAt(7)+val.charAt(8)+val.charAt(9);
	}
	var fecha = new Date(anyo,mes-1,dia);   // Fecha a calcular
    var fecha_inicio = new Date(anyo,0,01); // Primer dia del año
	var fecha_fin = new Date(anyo,11,31);   // Ultimo  dia del año

    var domingo = 0 ;
	var empiezo = 0;
	var diferencia = 0;

        // Averiguo si el primer dia del año entra dentro de la primera semana del año
		if (fecha_inicio.getDay()<=3){
        	empiezo++;
        }

		//Para hacer el cálculo de la semanas empezando por domingo
		if (fecha_inicio.getDay()!=0){
		 domingo=6-fecha_inicio.getDay()+1;
		 fecha_inicio.setDate(domingo+1);
		}

		diferencia = fecha.getTime() - fecha_inicio.getTime();
  	    diferencia = Math.round(diferencia/(1000*60*60*24));//Paso la diferencia a dias
	    var semanas = Math.ceil((diferencia/7));//paso la diferencia a semanas
		semanas=semanas+empiezo;
	    //es la primera semana del siguiente año
		if (mes==12 && (semanas==53||semanas==52) && (fecha_fin.getDay()<3)) {
			semanas=1;
		}
		//es la ultima  semana del  año anterior
		if (mes==01 && semanas==0) {
			semanas=52;
		}
		//alert('semana es \n'+semanas);
        return semanas;
}
/**
* funcion que calcula la semana en la que esta el sistema
* devuelve la semana.
*/
function obtenerViernes(semana,anyo){
	var fecha = new Date();   // Fecha a calcular
    var fecha_inicio = new Date(anyo,0,01); // Primer dia del año
	var fecha_fin = new Date(anyo,11,31);   // Ultimo  dia del año

    var domingo = 0 ;
	var empiezo = 0;
	var diferencia = 0;

        // Averiguo si el primer dia del año entra dentro de la primera semana del año
		if (fecha_inicio.getDay()>3){
        	empiezo++;
        }

		//Para hacer el cálculo de la semanas empezando por domingo
		// Obtengo el primer domingo del año
		if (fecha_inicio.getDay()!=0){
		 domingo=6-fecha_inicio.getDay()+1;
		 fecha_inicio.setDate(domingo+1);

		}
   	    // como empezamos a contar desde la primera semana, entonces tendremos que restar una semana
		dias =(semana-1+empiezo)*7*(24*60*60*1000);//pasamos  a milisegundos
		//como quiero el viernes pues le resto dos dias....
		dias= dias-(2*(24*60*60*1000));

		fecha.setTime( fecha_inicio.getTime() + dias ) ;

		//Compongo un String con la fecha

		var year=fecha.getYear();
		if (year < 1000)
			year+=1900;
		var day=fecha.getDay();
		var month=fecha.getMonth()+1;
		if (month<10)
			month="0"+month;
		var daym=fecha.getDate();
		if (daym<10)
			daym="0"+daym;

		var fecha=daym+'/'+month+'/'+year;

        return fecha
}

/*
* function redireccionar(direccion)
*Funcion que redirecciona a una pagina en concreto.....previa confirmación
*/
function redireccionar(direccion,nombre)
{
 if (confirm("Se va a borrar el caso,\n"+ nombre +"\n ¿Desea continuar?")) location.href=direccion;
}

/* function redimension()
Funcion que redimensiona un frame
*/
function redimension(){

if (parent.document.all("superior").all("izquierdo").cols=="173,*"){
	parent.document.all("superior").all("izquierdo").cols="0,*";
	// parent.document.all("superior").cols="0%,*";
}else
{
	// parent.document.all("superior").cols="20%,*";
	parent.document.all("superior").all("izquierdo").cols="173,*";
}

}
// ------------------------------------------------------------------
// getDateFromFormat( date_string , format_string )
//
// This function takes a date string and a format string. It matches
// If the date string matches the format string, it returns the
// getTime() of the date. If it does not match, it returns 0.
// ------------------------------------------------------------------
function getFechaFromFormat(val,format) {
	val=val+"";
	format=format+"";
	var i_val=0;
	var i_format=0;
	var c="";
	var token="";
	var token2="";
	var x,y;
	var now=new Date();
	var year=now.getYear();
	var month=now.getMonth()+1;
	var date=1;
	var hh=now.getHours();
	var mm=now.getMinutes();
	var ss=now.getSeconds();
	var ampm="";

	while (i_format < format.length) {
		// Get next token from format string
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
			}
		// Extract contents of value based on format token
		if (token=="yyyy" || token=="yy" || token=="y") {
			if (token=="yyyy") { x=4;y=4; }
			if (token=="yy")   { x=2;y=2; }
			if (token=="y")    { x=2;y=4; }
			year=_getInt(val,i_val,x,y);
			if (year==null) { return 0; }
			i_val += year.length;
			if (year.length==2) {
				if (year > 70) { year=1900+(year-0); }
				else { year=2000+(year-0); }
				}
			}
		else if (token=="MMM"){
			month=0;
			for (var i=0; i<MONTH_NAMES.length; i++) {
				var month_name=MONTH_NAMES[i];
				if (val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()) {
					month=i+1;
					if (month>12) { month -= 12; }
					i_val += month_name.length;
					break;
					}
				}
			if ((month < 1)||(month>12)){return 0;}
			}
		else if (token=="EE"||token=="E"){
			for (var i=0; i<DAY_NAMES.length; i++) {
				var day_name=DAY_NAMES[i];
				if (val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()) {
					i_val += day_name.length;
					break;
					}
				}
			}
		else if (token=="MM"||token=="M") {
			month=_getInt(val,i_val,token.length,2);
			if(month==null||(month<1)||(month>12)){return 0;}
			i_val+=month.length;}
		else if (token=="dd"||token=="d") {
			date=_getInt(val,i_val,token.length,2);
			if(date==null||(date<1)||(date>31)){return 0;}
			i_val+=date.length;}
		else if (token=="hh"||token=="h") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<1)||(hh>12)){return 0;}
			i_val+=hh.length;}
		else if (token=="HH"||token=="H") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<0)||(hh>23)){return 0;}
			i_val+=hh.length;}
		else if (token=="KK"||token=="K") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<0)||(hh>11)){return 0;}
			i_val+=hh.length;}
		else if (token=="kk"||token=="k") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<1)||(hh>24)){return 0;}
			i_val+=hh.length;hh--;}
		else if (token=="mm"||token=="m") {
			mm=_getInt(val,i_val,token.length,2);
			if(mm==null||(mm<0)||(mm>59)){return 0;}
			i_val+=mm.length;}
		else if (token=="ss"||token=="s") {
			ss=_getInt(val,i_val,token.length,2);
			if(ss==null||(ss<0)||(ss>59)){return 0;}
			i_val+=ss.length;}
		else if (token=="a") {
			if (val.substring(i_val,i_val+2).toLowerCase()=="am") {ampm="AM";}
			else if (val.substring(i_val,i_val+2).toLowerCase()=="pm") {ampm="PM";}
			else {return 0;}
			i_val+=2;}
		else {
			if (val.substring(i_val,i_val+token.length)!=token) {return 0;}
			else {i_val+=token.length;}
			}
		}
	// If there are any trailing characters left in the value, it doesn't match
	if (i_val != val.length) { return 0; }
	// Is date valid for month?
	if (month==2) {
		// Check for leap year
		if ( ( (year%4==0)&&(year%100 != 0) ) || (year%400==0) ) { // leap year
			if (date > 29){ return false; }
			}
		else { if (date > 28) { return false; } }
		}
	if ((month==4)||(month==6)||(month==9)||(month==11)) {
		if (date > 30) { return false; }
		}
	// Correct hours value
	if (hh<12 && ampm=="PM") { hh=hh-0+12; }
	else if (hh>11 && ampm=="AM") { hh-=12; }
	var newdate=new Date(year,month-1,date,hh,mm,ss);
	return newdate.getTime();
	}
	

//Expresion Regular para el formato de la fecha
var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;


//Comprueba que la fecha cumpla la expresion anterior
function isValidDate(fecha) {
	
	//Si esta vacio, no hacemos nada
   if (fecha.length == 0) return true;

	var matchArray = fecha.match(datePat);
	if (matchArray == null) {
		//Esta vacio
		alert("Formato de fecha no Valido.")
		return false;
	}else{
		day = matchArray[1];
		month = matchArray[3]; 
		year = matchArray[4];

		if (month < 1 || month > 12) { // check month range
			alert("El mes debe estar entre 1 y 12.");
			return false;
		}
	
		if (day < 1 || day > 31) {
			alert("El dia debe estar entre 1 y 31.");
			return false;
		}
		if ((month==4 || month==6 || month==9 || month==11) && day==31) {
			alert("El mes "+month+" no tiene 31 dias.")
		return false
		}
		
		if (month == 2) { // check for february 29th
			var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
			if (day>29 || (day==29 && !isleap)) {
				alert("Febrero de " + year + " no tiene " + day + " dias.");
				return false;
	   		}
		}
	}
	return true;  // date is valid
}

function aFecha(fecha) {
	
	var matchArray = fecha.match(datePat);
	var resultado;

	day = matchArray[1];
	month = matchArray[3]; 
	year = matchArray[4];
	resultado = new Date(year,month,day).getTime();
	
	return resultado;  // date is valid
}
