function verifyletrascifras(arg)
{

for ((i=0);(i<arg.elements.length-1);i++){
        nombre2=arg.elements[i].id;
        var primera2 = nombre2.charAt(0);
        if (primera2=="c"){
        	str = arg.elements[i].value;
  		if (str == "") {
			//return true;
  		} else {
  			// backslash, punt comma, dubbele en enkele aanhalingstekens gaat niet 
    			if (inValidCharSet(str,"0123456789abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZéúíóáëüïöäêûîâôèùìòà!|@()?¿¡+-_","c")) {
        			//return true;
    			} else {
    				alert(txt_solo_cifras_letras);
    				arg.elements[i].focus();
    				return false; 
    			}
  		}
  	}	
}

}


function verifycontrasena(arg)
{

for ((i=0);(i<arg.elements.length-1);i++){
        nombre2=arg.elements[i].id;
        var primera2 = nombre2.charAt(0);
        if (primera2=="q"){
        	str = arg.elements[i].value;
  		if (str == "") {
			//return true;
  		} else {
  			// backslash, punt comma, dubbele en enkele aanhalingstekens gaat niet 
    			if (!inValidCharSet(str,"0123456789abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZéúíóáëüïöäêûîâôèùìòà!|@()?¿¡+-_","q")) {
        			alert(txt_solo_cifras_letras);
    				arg.elements[i].focus();
    				return false; 
    			}
    			if (str.length < 6) {
    				alert(txt_contr_peq);
    				arg.elements[i].focus();
    				return false; 
    			}
    			if (str != document.DBBusqueda.passwd2.value) {
    				alert(txt_contr_inequal);
    				arg.elements[i].focus();
    				return false; 
    			}	
    			//return true;
  		}
  	}	
}

}


function validartext(arg)
{

for ((i=0);(i<arg.elements.length-1);i++){
        nombre2=arg.elements[i].id;
        var primera2 = nombre2.charAt(0);
        if (primera2=="x"){
        	str = arg.elements[i].value;
  		if (str == "") {
			//return true;
  		} else {
  			// backslash, punt comma, dubbele en enkele aanhalingstekens gaat niet 
    			if (inValidCharSet(str,"0123456789abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZéúíóáëüïöäêûîâôèùìòà!|ªº@·$%€&¬/()=?¿¡*+][-_:.,<>#\\{} \n","x")) {
        			//return true;
    			} else {
    				alert(txt_solo_texto);
    				arg.elements[i].focus();
    				return false; 
    			}
  		}
  	}	
}

}


function isEmailAddr(email)
{
	
  var result = false;
  var theStr = new String(email);
  
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  if (!result) {
    alert(txt_formato_email);
    document.forms[0].email.focus();
  }  
  
  return result;
}

function isEmailAddrMeerderen(email)
{
	
  var result = false;
  var theStr = new String(email);
  
  
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  if (!result) {
    alert(txt_formato_mal1 + email + txt_formato_mal2 + txt_formato_email);
    document.forms[0].email.focus();
  }  
  
  return result;
}

function verifyemail(arg)
{
for ((i=0);(i<arg.elements.length-1);i++){
        nombre2=arg.elements[i].id;
        var primera2 = nombre2.charAt(0);
        if (primera2=="e"){
        	str = arg.elements[i].value;
  		if (str == "") {
			//return true;
  		} else {
  			// backslash, punt comma, dubbele en enkele aanhalingstekens gaat niet 
    			if (!inValidCharSet(str,"0123456789abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZéúíóáëüïöäêûîâôèùìòà!@-_.","e")) {
    				alert(txt_solo_cifras_letras_email);
    				arg.elements[i].focus();
    				return false; 
    			}
    			if ((str.length < 3) || (!isEmailAddr(str)) ) {
				alert(txt_formato_email);
				arg.elements[i].focus();
				return false;
			}
   
  			//return true;
  		}
  	}	
}

}

function inValidCharSet(str,charset, tipo)
{
	var result = true;
	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			
			 if ((tipo != "x" && tipo != "e") || ((tipo == "x" || tipo == "e")&& (str.substr(i,1) == "\'" || str.substr(i,1) == ";"))) {
				result = false;
				break;
			} 	
			
		}
	
	return result;
}      	
		


function verifyFichero(arg) {

for ((i=0);(i<arg.elements.length-1);i++){
        nombre2=arg.elements[i].id;
        var primera2 = nombre2.charAt(0);
        if (primera2=="f"){
        	str = arg.elements[i].value;
  		if (str == "") {
			//return true;
  		} else {
  			loc = str.lastIndexOf("\\") + 1;
  			str = str.substring(loc,str.length); 
  			
  			// backslash, punt comma, dubbele en enkele aanhalingstekens gaat niet 
  			if (inValidCharSet(str,"0123456789abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZéúíóáëüïöäêûîâôèùìòà!|:.@()?¿¡+-_\\","f")) {
  				//return true;
    			} else {
    				alert(txt_solo_cifras_letras_file);
    				arg.elements[i].focus();
    				return false; 
    			}
  		}
  	}	
}

}

//Replace substring
function replaceSubstring(inputString, fromString, toString) {
   // Goes through the inputString and replaces every occurrence of fromString with toString
   var temp = inputString;
   if (fromString == "") {
      return inputString;
   }
   if (toString.indexOf(fromString) == -1) { // If the string being replaced is not a part of the replacement string (normal situation)
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
      }
   } else { // String being replaced is part of replacement string (like "+" being replaced with "++") - prevent an infinite loop
      var midStrings = new Array("~", "`", "_", "^", "#");
      var midStringLen = 1;
      var midString = "";
      // Find a string that doesn't exist in the inputString to be used
      // as an "inbetween" string
      while (midString == "") {
         for (var i=0; i < midStrings.length; i++) {
            var tempMidString = "";
            for (var j=0; j < midStringLen; j++) { tempMidString += midStrings[i]; }
            if (fromString.indexOf(tempMidString) == -1) {
               midString = tempMidString;
               i = midStrings.length + 1;
            }
         }
      }
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + midString + toTheRight;
      }
      // Next, replace the "inbetween" string with the "toString"
      while (temp.indexOf(midString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(midString));
         var toTheRight = temp.substring(temp.indexOf(midString)+midString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
      }
   } // Ends the check to see if the string being replaced is part of the replacement string or not
   return temp; // Send the updated string back to the user
} // Ends the "replaceSubstring" function


function ChequearElementos(arg)
{

        cadena=new Array();
	//alert("numero de elementos del formulario=" + arg.elements.length)
        j=0;
        for ((i=0);(i<arg.elements.length);i++){
                var nombre = arg.elements[i].id;
                var posicion4 = nombre.charAt(nombre.length-4);
                if (posicion4 =="_"){
                	
                        if (arg.elements[i].value == "" || arg.elements[i].value == " ")
                                {
                        
                                cadena[j]=i;
                        
                                j++;
                                }
                 }
        }

        if (cadena.length==0){
                return true;
        }else{
                for ((i=0);(i<cadena.length);i++){
                nombrecampo = arg.elements[cadena[i]].id;

                        if ((nombrecampo.charAt(nombrecampo.length-4)=="_")&&(nombrecampo.charAt(1)=="_")){
                        campo1=arg.elements[cadena[i]].name;
                        campo2=campo1;

                                if (arg.elements[cadena[i]].disabled==true){
                                        return false;
                                }else{
                                        nn = campo2.split("_");
                                        campo2nombre = nn[0];

                                        //alert("debe_cumplir " + campo2nombre);
		                        alert(txt_campos_obligatorios);
                                        arg.elements[cadena[i]].focus();
                                        return false;
                                }
                        }
                        if ((nombrecampo.charAt(nombrecampo.length-4)=="_")&&(nombrecampo.charAt(1)!="_")){
                                campo1=arg.elements[cadena[i]].name;

                                if (arg.elements[cadena[i]].disabled==true){
                                        alert("cumplir_fecha");
                                        return false;
                                }else{
                                        nn = campo2.split("_");
                                        campo2nombre = nn[0];
                                        //alert("debe_cumplir " + campo2nombre);
		                        alert(txt_campos_obligatorios);
                                        arg.elements[cadena[i]].focus();
                                        return false;
                                }
                        }

                        if ((nombrecampo.charAt(nombrecampo.length-4)!="_")&&(nombrecampo.charAt(1)=="_")){
                                campo2=arg.elements[cadena[i]].name;
                                if (arg.elements[cadena[i]].disabled==true){
                                        
                                        return false;
                                }else{
                                        nn = campo2.split("_");
                                        campo2nombre = nn[0];
                                        alert(txt_campos_obligatorios);
                                        arg.elements[cadena[i]].focus();
                                        return false;
                                }
                        }
                return false;
        }
}
}

function SoloNumeros(arg)
{
	


for ((i=0);(i<arg.elements.length-1);i++){
	

        nombre2=arg.elements[i].id;
        var primera2 = nombre2.charAt(0);
        if (primera2=="n"){
        	
        	str = arg.elements[i].value;
        	
  		if (str == "") {
			//return true;
  		} else {
  			 
    			if (inValidCharSet(str,"0123456789","n")) {
			//return true;
    			} else {
				
    				alert(txt_introduce_numero);
    				arg.elements[i].focus();
    				return false; 
    			}
  		}
  	}	
}

}



function SoloNumerosOLD(arg)
{

        cadenanum=new Array();
        //cadenanum="";
        j=0;
//   cadena=eval("document.forms[0]." + campo + ".value");
        for ((i=0);(i<arg.elements.length);i++){
        	
                nombre3=arg.elements[i].id;
                       primera=nombre3.charAt(0);
        if (primera=="n"){
                cadenanum[j]=i;
                        j++;

	}
	
        }
        
        if (cadenanum.length!=0){
	
                for ((i=0);(i<cadenanum.length);i++){

                nombrecampo=arg.elements[cadenanum[i]].id;
                contenidocampo = arg.elements[cadenanum[i]].value;
        
                contenidocampo2=contenidocampo.charAt(contenidocampo.length-1);
                //plantillanumerica=/\d/
                //chequeo=plantillanumerica.test(contenidocampo2);
                
                
                var _exp1 = new RegExp(/^[0-9]+$/i); /* any non space */
                var _test=_exp1.test(contenidocampo);
                
                if(!_test) {
                
                
                //if (chequeo==false){
                        if (contenidocampo2==""){

                                //return true;

                	}else{

                                if ((nombrecampo.charAt(nombrecampo.length-4)=="_")&&(nombrecampo.charAt(1)=="_")){
                                campo1=arg.elements[cadenanum[i]].name;
                                campo2=campo1;
                                alert(txt_introduce_numero);
                                arg.elements[cadenanum[i]].focus();
                                return false;
                                }
                                if ((nombrecampo.charAt(nombrecampo.length-4)=="_")&&(nombrecampo.charAt(1)!="_")){
                                campo1=arg.elements[cadenanum[i]].name;
                                alert(txt_introduce_numero);
                                arg.elements[cadenanum[i]].focus();
                                return false;
                                }
                                if ((nombrecampo.charAt(nombrecampo.length-4)!="_")&&(nombrecampo.charAt(1)=="_")){
                                campo2=arg.elements[cadenanum[i]].name;
                                alert(txt_introduce_numero);
                                arg.elements[cadenanum[i]].focus();
                                return false;
                                }

                        }

                }

        }
 
 return true;
}

return true;
}

    function Validartodo(arg){
    	
	    if (ChequearElementos(arg) == false) {
	    		return false;
                        }
		else if (SoloNumeros(arg)==false){
			return false;
                        }
		else if (validartext(arg)==false){
			return false;
                        }
                else if (verifyletrascifras(arg)==false){
                	return false;
                        }
                else if (verifyFichero(arg)==false){
                	return false;
                        }
                else if (verifyemail(arg)==false){
                	return false;
                        }        
                else if (verifycontrasena(arg)==false){
                	return false;
                        }                
                        
                else {
                    	return true;
                }
        }


//Obtener Fecha
function ObtenerFecha(theFrm) {
var now = new Date();
var dia = now.getDate();
var mes = now.getMonth() + 1;
var ano = now.getYear();
var fecha = dia + "/" + mes + "/" + ano;
theFrm.fechaIntroduccion.value=fecha;
}



//Menu
var head="display:''"
//img1=new Image()
//img1.src="fold.gif"
//img2=new Image()
//img2.src="open.gif"

var ns6=document.getElementById&&!document.all
var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1

function checkcontained(e){
var iscontained=0
cur=ns6? e.target : event.srcElement
i=0
if (cur.id=="foldheader")
iscontained=1
else
while (ns6&&cur.parentNode||(ie4&&cur.parentElement)){
if (cur.id=="foldheader"||cur.id=="foldinglist"){
iscontained=(cur.id=="foldheader")? 1 : 0
break
}
cur=ns6? cur.parentNode : cur.parentElement
}

if (iscontained){
var foldercontent=ns6? cur.nextSibling.nextSibling : cur.all.tags("UL")[0]
if (foldercontent.style.display=="none"){
foldercontent.style.display=""
//cur.style.listStyleImage="url(open.gif)"
}
else{
foldercontent.style.display="none"
//cur.style.listStyleImage="url(fold.gif)"
}
}
}

if (ie4||ns6)
document.onclick=checkcontained



	function verificarFecha() {


	  if (document.forms(0).dia.value == "31" && (document.forms(0).mes.value=="4" || document.forms(0).mes.value=="6" || document.forms(0).mes.value=="9" || document.forms(0).mes.value=="11")) {
	    alert(txt_dia_no_existe);
	    document.forms(0).dia.selectedIndex=29;
	    document.forms(0).dia.focus();
	    return false;
	  }
	  if (document.forms(0).mes.value == "2" && document.forms(0).dia.value > 29) {
	    alert(txt_dia_no_existe_febrero);
	    document.forms(0).dia.selectedIndex=28;
	    document.forms(0).dia.focus();
	    return false;
	  }
	  schrikkeljaar = document.forms(0).ano.options[document.forms(0).ano.selectedIndex].value % 4;
	  //alert(schrikkeljaar);
	  //alert("schrikkeljaar=" + schrikkeljaar + " mes" + document.forms(0).mes.value + "dia" + document.forms(0).dia.value);
	  if (document.forms(0).mes.value == "2" && schrikkeljaar>0 && document.forms(0).dia.value == "29") {
	    alert(txt_dia_no_existe_febrero);
	    document.forms(0).dia.selectedIndex=27;
	    document.forms(0).dia.focus();
	    return false;
	  }

	  document.forms(0).fecha.value=document.forms(0).dia.value + "/" + document.forms(0).mes.value + "/" + document.forms(0).ano.options[document.forms(0).ano.selectedIndex].value;
	  //alert(document.forms(0).fecha.value);
	  return true;
	}




    function EliminarRegistro() {
      var Eliminar = window.confirm(txt_quieres_eliminar);
    	if (Eliminar == true) {
        window.location.href="member.php?estado=2";
        return false;

    	} else {
      	return false;
    	}
	}


//***************CALENDAR*********************************

var weekend = [0,6];
var weekendColor = "#e0e0e0";
var fontface = "Verdana";
var fontsize = 2;

var gNow = new Date();
var ggWinCal;
isNav = (navigator.appName.indexOf("Netscape") != -1) ? true : false;
isIE = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;

Calendar.Months = [txt_enero, txt_febrero, txt_marzo, txt_abril, txt_mayo, txt_junio,
txt_julio, txt_agosto, txt_septiembre, txt_octubre, txt_noviembre, txt_diciembre];

// Non-Leap year Month days..
Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// Leap year Month days..
Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

function Calendar(p_item, p_WinCal, p_month, p_year, p_format) {
        if ((p_month == null) && (p_year == null))	return;

        if (p_WinCal == null)
                this.gWinCal = ggWinCal;
        else
                this.gWinCal = p_WinCal;

        if (p_month == null) {
                this.gMonthName = null;
                this.gMonth = null;
                this.gYearly = true;
        } else {
                this.gMonthName = Calendar.get_month(p_month);
                this.gMonth = new Number(p_month);
                this.gYearly = false;
        }

        this.gYear = p_year;
        this.gFormat = p_format;
        this.gBGColor = "white";
        this.gFGColor = "black";
        this.gTextColor = "black";
        this.gHeaderColor = "black";
        this.gReturnItem = p_item;
}

Calendar.get_month = Calendar_get_month;
Calendar.get_daysofmonth = Calendar_get_daysofmonth;
Calendar.calc_month_year = Calendar_calc_month_year;
Calendar.print = Calendar_print;

function Calendar_get_month(monthNo) {
        return Calendar.Months[monthNo];
}

function Calendar_get_daysofmonth(monthNo, p_year) {

//	Check for leap year ..
//	1.Years evenly divisible by four are normally leap years, except for...
//	2.Years also evenly divisible by 100 are not leap years, except for...
//	3.Years also evenly divisible by 400 are leap years.

        if ((p_year % 4) == 0) {
                if ((p_year % 100) == 0 && (p_year % 400) != 0)
                        return Calendar.DOMonth[monthNo];

                return Calendar.lDOMonth[monthNo];
        } else
                return Calendar.DOMonth[monthNo];
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {

//	Will return an 1-D array with 1st element being the calculated month
//	and second being the calculated year
//	after applying the month increment/decrement as specified by 'incr' parameter.
//	'incr' will normally have 1/-1 to navigate thru the months.

        var ret_arr = new Array();

        if (incr == -1) {
                // B A C K W A R D
                if (p_Month == 0) {
                        ret_arr[0] = 11;
                        ret_arr[1] = parseInt(p_Year) - 1;
                }
                else {
                        ret_arr[0] = parseInt(p_Month) - 1;
                        ret_arr[1] = parseInt(p_Year);
                }
        } else if (incr == 1) {
                // F O R W A R D
                if (p_Month == 11) {
                        ret_arr[0] = 0;
                        ret_arr[1] = parseInt(p_Year) + 1;
                }
                else {
                        ret_arr[0] = parseInt(p_Month) + 1;
                        ret_arr[1] = parseInt(p_Year);
                }
        }

        return ret_arr;
}

function Calendar_print() {
        ggWinCal.print();
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {

//	Will return an 1-D array with 1st element being the calculated month
//	and second being the calculated year
//	after applying the month increment/decrement as specified by 'incr' parameter.
//	'incr' will normally have 1/-1 to navigate thru the months.

        var ret_arr = new Array();

        if (incr == -1) {
                // B A C K W A R D
                if (p_Month == 0) {
                        ret_arr[0] = 11;
                        ret_arr[1] = parseInt(p_Year) - 1;
                }
                else {
                        ret_arr[0] = parseInt(p_Month) - 1;
                        ret_arr[1] = parseInt(p_Year);
                }
        } else if (incr == 1) {
                // F O R W A R D
                if (p_Month == 11) {
                        ret_arr[0] = 0;
                        ret_arr[1] = parseInt(p_Year) + 1;
                }
                else {
                        ret_arr[0] = parseInt(p_Month) + 1;
                        ret_arr[1] = parseInt(p_Year);
                }
        }

        return ret_arr;
}

// This is for compatibility with Navigator 3, we have to create and discard one object before the prototype object exists.
new Calendar();

Calendar.prototype.getMonthlyCalendarCode = function() {
        var vCode = "";
        var vHeader_Code = "";
        var vData_Code = "";

        // Begin Table Drawing code here..
        vCode = vCode + "<TABLE BORDER=1 BGCOLOR=\"" + this.gBGColor + "\">";

        vHeader_Code = this.cal_header();
        vData_Code = this.cal_data();
        vCode = vCode + vHeader_Code + vData_Code;

        vCode = vCode + "</TABLE>";

        return vCode;
}

Calendar.prototype.show = function() {
        var vCode = "";

        this.gWinCal.document.open();

        // Setup the page...
        this.wwrite("<html>");
        this.wwrite("<head><title>"+ txt_calendario + "</title>");
        this.wwrite("</head>");

        this.wwrite("<body " +
                "link=\"" + this.gLinkColor + "\" " +
                "vlink=\"" + this.gLinkColor + "\" " +
                "alink=\"" + this.gLinkColor + "\" " +
                "text=\"" + this.gTextColor + "\">");
        this.wwriteA("<FONT FACE='" + fontface + "' SIZE=2><B>");
        this.wwriteA(this.gMonthName + " " + this.gYear);
        this.wwriteA("</B><BR>");

        // Show navigation buttons
        var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1);
        var prevMM = prevMMYYYY[0];
        var prevYYYY = prevMMYYYY[1];

        var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1);
        var nextMM = nextMMYYYY[0];
        var nextYYYY = nextMMYYYY[1];

        this.wwrite("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0'><TR><TD ALIGN=center>");
        
        var esteFecha = new Date();
        var esteMes = parseInt(esteFecha.getMonth());
        esteMes = parseInt(esteMes);
        var esteAno = parseInt(esteFecha.getYear());
        esteAno = parseInt(esteAno);
        var anoeleg = parseInt(this.gYear);
        anoeleg = parseInt(anoeleg);
        var meseleg = parseInt(this.gMonth);
        meseleg = parseInt(meseleg);
        //this.wwrite(esteMes + "-" + esteAno  +"-" + anoeleg + "-" +  meseleg);
        if (anoeleg > esteAno) {
                yearDiff = 1
                //parseInt(anoleg) + parseInt(esteAno);
        } else {
        	yearDiff = 0;
        }	        
        
        
        if (this.gYear > esteAno) {
        	
        if ((yearDiff > 2) || (yearDiff > 0  && esteMes <= meseleg)) {
        this.wwrite("[<A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-1) + "', '" + this.gFormat + "'" +
                ");" +
                "\"><<<\/A>]</TD><TD ALIGN=center>");
 	}
 	}
 	
 	if (this.gMonth > esteMes || this.gYear > esteAno) {               
        this.wwrite("[<A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "'" +
                ");" +
                "\"><<\/A>]</TD><TD ALIGN=center>");
         }
                
//	this.wwrite("[<A HREF=\"javascript:window.print();\">Print</A>]</TD><TD ALIGN=center>");
        this.wwrite("[<A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "'" +
                ");" +
                "\">><\/A>]</TD><TD ALIGN=center>");
        this.wwrite("[<A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+1) + "', '" + this.gFormat + "'" +
                ");" +
                "\">>><\/A>]</TD></TR></TABLE><BR>");

        // Get the complete calendar code for the month..
        vCode = this.getMonthlyCalendarCode();
        this.wwrite(vCode);

        this.wwrite("</font></body></html>");
        this.gWinCal.document.close();
}

Calendar.prototype.showY = function() {
        var vCode = "";
        var i;
        var vr, vc, vx, vy;		// Row, Column, X-coord, Y-coord
        var vxf = 285;			// X-Factor
        var vyf = 200;			// Y-Factor
        var vxm = 10;			// X-margin
        var vym;				// Y-margin
        if (isIE)	vym = 75;
        else if (isNav)	vym = 25;

        this.gWinCal.document.open();

        this.wwrite("<html>");
        this.wwrite("<head><title>" + txt_calendario + "</title>");
        this.wwrite("<style type='text/css'>\n<!--");
        for (i=0; i<12; i++) {
                vc = i % 3;
                if (i>=0 && i<= 2)	vr = 0;
                if (i>=3 && i<= 5)	vr = 1;
                if (i>=6 && i<= 8)	vr = 2;
                if (i>=9 && i<= 11)	vr = 3;

                vx = parseInt(vxf * vc) + vxm;
                vy = parseInt(vyf * vr) + vym;

                this.wwrite(".lclass" + i + " {position:absolute;top:" + vy + ";left:" + vx + ";}");
        }
        this.wwrite("-->\n</style>");
        this.wwrite("</head>");

        this.wwrite("<body " +
                "link=\"" + this.gLinkColor + "\" " +
                "vlink=\"" + this.gLinkColor + "\" " +
                "alink=\"" + this.gLinkColor + "\" " +
                "text=\"" + this.gTextColor + "\">");
        this.wwrite("<FONT FACE='" + fontface + "' SIZE=2><B>");
        this.wwrite("Year : " + this.gYear);
        this.wwrite("</B><BR>");

        // Show navigation buttons
        var prevYYYY = parseInt(this.gYear) - 1;
        var nextYYYY = parseInt(this.gYear) + 1;

        this.wwrite("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0'><TR><TD ALIGN=center>");
        this.wwrite("[<A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', null, '" + prevYYYY + "', '" + this.gFormat + "'" +
                ");" +
                "\" alt='Prev Year'><<<\/A>]</TD><TD ALIGN=center>");
                
        this.wwrite("[<A HREF=\"javascript:window.print();\">Print</A>]</TD><TD ALIGN=center>");
        this.wwrite("[<A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', null, '" + nextYYYY + "', '" + this.gFormat + "'" +
                ");" +
                "\">>><\/A>]</TD></TR></TABLE><BR>");

        // Get the complete calendar code for each month..
        var j;
        for (i=11; i>=0; i--) {
                if (isIE)
                        this.wwrite("<DIV ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");
                else if (isNav)
                        this.wwrite("<LAYER ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");

                this.gMonth = i;
                this.gMonthName = Calendar.get_month(this.gMonth);
                vCode = this.getMonthlyCalendarCode();
                this.wwrite(this.gMonthName + "/" + this.gYear + "<BR>");
                this.wwrite(vCode);

                if (isIE)
                        this.wwrite("</DIV>");
                else if (isNav)
                        this.wwrite("</LAYER>");
        }

        this.wwrite("</font><BR></body></html>");
        this.gWinCal.document.close();
}

Calendar.prototype.wwrite = function(wtext) {
        this.gWinCal.document.writeln(wtext);
}

Calendar.prototype.wwriteA = function(wtext) {
        this.gWinCal.document.write(wtext);
}

Calendar.prototype.cal_header = function() {
        var vCode = "";

        vCode = vCode + "<TR>";
        vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>&nbsp;D&nbsp;&nbsp;</B></FONT></TD>";
        vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>&nbsp;L&nbsp;&nbsp;</B></FONT></TD>";
        vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>&nbsp;M&nbsp;&nbsp;</B></FONT></TD>";
        vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>&nbsp;X&nbsp;&nbsp;</B></FONT></TD>";
        vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>&nbsp;J&nbsp;&nbsp;</B></FONT></TD>";
        vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>&nbsp;V&nbsp;&nbsp;</B></FONT></TD>";
        vCode = vCode + "<TD WIDTH='16%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>&nbsp;S&nbsp;&nbsp;</B></FONT></TD>";
        vCode = vCode + "</TR>";

        return vCode;
}

Calendar.prototype.cal_data = function() {
        var vDate = new Date();
        vDate.setDate(1);
        vDate.setMonth(this.gMonth);
        vDate.setFullYear(this.gYear);

        var vFirstDay=vDate.getDay();
        var vDay=1;
        var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear);
        var vOnLastDay=0;
        var vCode = "";
        
        var esteFecha = new Date();
        var esteMes = parseInt(esteFecha.getMonth());
        var esteAno = parseInt(esteFecha.getYear());
        var esteDate = parseInt(esteFecha.getDate());
        var anoeleg = parseInt(this.gYear);
        var meseleg = parseInt(this.gMonth);
        

//	Get day for the 1st of the requested month/year..
//	Place as many blank cells before the 1st day of the month as necessary.


        vCode = vCode + "<TR>";
        for (i=0; i<vFirstDay; i++) {
                vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(i) + "><FONT SIZE='2' FACE='" + fontface + "'> </FONT></TD>";
        }

        // Write rest of the 1st week
        for (j=vFirstDay; j<7; j++) {
        	if ( ( (anoeleg != esteAno) || (meseleg != esteMes) ) || (vDay >= esteDate) ) {
                vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>" +
                        "<A HREF='#' " +
                                "onClick=\"self.opener.document." + this.gReturnItem + ".value='" +
                                this.format_data(vDay) +
                                "';window.close();\">" +
                                this.format_day(vDay) +
                        "</A>" +
                        "</FONT></TD>";
                } else {
                	vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>" +
                        "&nbsp;" +
                        "</FONT></TD>";	
                }	        
                vDay=vDay + 1;
        }
        vCode = vCode + "</TR>";

        // Write the rest of the weeks
        for (k=2; k<7; k++) {
                vCode = vCode + "<TR>";

                for (j=0; j<7; j++) {
                	if ( ( (anoeleg != esteAno) || (meseleg != esteMes) ) || (vDay >= esteDate) ) {
                        vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>" +
                                "<A HREF='#' " +
                                        "onClick=\"self.opener.document." + this.gReturnItem + ".value='" +
                                        this.format_data(vDay) +
                                        "';window.close();\">" +
                                this.format_day(vDay) +
                                "</A>" +
                                "</FONT></TD>";
                        } else {
                        vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + ">&nbsp;</TD>";
                        }	       
                        vDay=vDay + 1;

                        if (vDay > vLastDay) {
                                vOnLastDay = 1;
                                break;
                        }
                }

                if (j == 6)
                        vCode = vCode + "</TR>";
                if (vOnLastDay == 1)
                        break;
        }

        // Fill up the rest of last week with proper blanks, so that we get proper square blocks
        for (m=1; m<(7-j); m++) {
                if (this.gYearly)
                        vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) +
                        "><FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'> </FONT></TD>";
                else
                        vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) +
                        "><FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'>" + m + "</FONT></TD>";
        }

        return vCode;
}

Calendar.prototype.format_day = function(vday) {
        var vNowDay = gNow.getDate();
        var vNowMonth = gNow.getMonth();
        var vNowYear = gNow.getFullYear();

        if (vday == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear)
                return ("<FONT COLOR=\"RED\"><B>" + vday + "</B></FONT>");
        else
                return (vday);
}

Calendar.prototype.write_weekend_string = function(vday) {
        var i;

        // Return special formatting for the weekend day.
        for (i=0; i<weekend.length; i++) {
                if (vday == weekend[i])
                        return (" BGCOLOR=\"" + weekendColor + "\"");
        }

        return "";
}

Calendar.prototype.format_data = function(p_day) {
        var vData;
        var vMonth = 1 + this.gMonth;
        vMonth = (vMonth.toString().length < 2) ? "0" + vMonth : vMonth;
        var vMon = Calendar.get_month(this.gMonth).substr(0,3).toUpperCase();
        var vFMon = Calendar.get_month(this.gMonth).toUpperCase();
        var vY4 = new String(this.gYear);
        var vY2 = new String(this.gYear.substr(2,2));
        var vDD = (p_day.toString().length < 2) ? "0" + p_day : p_day;

        switch (this.gFormat) {
                case "MM\/DD\/YYYY" :
                        vData = vMonth + "\/" + vDD + "\/" + vY4;
                        break;
                case "MM\/DD\/YY" :
                        vData = vMonth + "\/" + vDD + "\/" + vY2;
                        break;
                case "MM-DD-YYYY" :
                        vData = vMonth + "-" + vDD + "-" + vY4;
                        break;
                case "MM-DD-YY" :
                        vData = vMonth + "-" + vDD + "-" + vY2;
                        break;

                case "DD\/MON\/YYYY" :
                        vData = vDD + "\/" + vMon + "\/" + vY4;
                        break;
                case "DD\/MON\/YY" :
                        vData = vDD + "\/" + vMon + "\/" + vY2;
                        break;
                case "DD-MON-YYYY" :
                        vData = vDD + "-" + vMon + "-" + vY4;
                        break;
                case "DD-MON-YY" :
                        vData = vDD + "-" + vMon + "-" + vY2;
                        break;

                case "DD\/MONTH\/YYYY" :
                        vData = vDD + "\/" + vFMon + "\/" + vY4;
                        break;
                case "DD\/MONTH\/YY" :
                        vData = vDD + "\/" + vFMon + "\/" + vY2;
                        break;
                case "DD-MONTH-YYYY" :
                        vData = vDD + "-" + vFMon + "-" + vY4;
                        break;
                case "DD-MONTH-YY" :
                        vData = vDD + "-" + vFMon + "-" + vY2;
                        break;

                case "DD\/MM\/YYYY" :
                        vData = vDD + "\/" + vMonth + "\/" + vY4;
                        break;
                case "DD\/MM\/YY" :
                        vData = vDD + "\/" + vMonth + "\/" + vY2;
                        break;
                case "DD-MM-YYYY" :
                        vData = vDD + "-" + vMonth + "-" + vY4;
                        break;
                case "DD-MM-YY" :
                        vData = vDD + "-" + vMonth + "-" + vY2;
                        break;

                default :
                        vData = vMonth + "\/" + vDD + "\/" + vY4;
        }

        return vData;
}

function Build(p_item, p_month, p_year, p_format) {
        var p_WinCal = ggWinCal;
        gCal = new Calendar(p_item, p_WinCal, p_month, p_year, p_format);

        // Customize your Calendar here..
        gCal.gBGColor="white";
        gCal.gLinkColor="black";
        gCal.gTextColor="black";
        gCal.gHeaderColor="darkgreen";

        // Choose appropriate show function
        if (gCal.gYearly)	gCal.showY();
        else	gCal.show();
}

function show_calendar() {
	

//		p_month : 0-11 for Jan-Dec; 12 for All Months.
//		p_year	: 4-digit year
//		p_format: Date format (	dd/mm/yyyy, dd/mm/yy, ...)
//		p_item	: Return Item.


        p_item = arguments[0];
        if (arguments[1] == null)
                p_month = new String(gNow.getMonth());
        else
                p_month = arguments[1];
        if (arguments[2] == "" || arguments[2] == null)
                p_year = new String(gNow.getFullYear().toString());
        else
                p_year = arguments[2];
        if (arguments[3] == null)
                p_format = "DD/MM/YYYY";
        else
                p_format = arguments[3];

        vWinCal = window.open("", txt_calendario,
                "width=250,height=250,status=no,resizable=no,top=200,left=200");
        vWinCal.opener = self;
        ggWinCal = vWinCal;

        Build(p_item, p_month, p_year, p_format);
}

//Yearly Calendar Code Starts here

function show_yearly_calendar(p_item, p_year, p_format) {
        // Load the defaults..
        if (p_year == null || p_year == "")
                p_year = new String(gNow.getFullYear().toString());
        if (p_format == null || p_format == "")
                p_format = "MM/DD/YYYY";

        var vWinCal = window.open("", txt_calendario, "scrollbars=yes");
        vWinCal.opener = self;
        ggWinCal = vWinCal;

        Build(p_item, null, p_year, p_format);
}


	



