/* Creado por JMP, ya me vale hacer un calendario desde 0 */

pidm = "1";
tempfecha = "";
var Pprimerdia = "";
var online = true;
var diaactual = "";	
var contenedor;
var anoactual;
var pTipo;
var myText;
var Initop;
var Inileft;

function goaño(Paño)
{
	var dia = tempfecha.getDate();
	var mes = tempfecha.getMonth();
	var año = Paño;
	
	mes = mes + 1;
	
	if (mes < "10")
		mes = "0" + mes;
	
	diaactual = dia + "/" + mes + "/" + año;
	Calendario();
}

function gomes (Pmes)
{
	var dia = tempfecha.getDate();
	var año = tempfecha.getFullYear();
	var mes = Pmes + 1;
	
	mes = mes + "";
	
	if (mes < "10")
		mes = "0" + mes;
	
	diaactual = dia + "/" + mes + "/" + año;
	Calendario();
}

function jsChange(e)
{
	esfirefox = false;    	
	try
	{
		oo = event.srcElement;
			
    } catch(e)
    {
		esfirefox = true;
        oo = e.target;
	}
	var a;
	if (esfirefox == false)
	{
		if (oo.tipo == "mes")
		{
			a = oo.options[oo.selectedIndex].value * 1;
			gomes (a);
		}

		if (oo.tipo == "año")
		{
			
			a = oo.options[oo.selectedIndex].value * 1;
			goaño (a);
		}
	}
	else
	{
		if (e.target.tipo == "mes")
		{
			a = e.target.options[e.target.selectedIndex].value * 1;
			gomes (a);
		}

		if (e.target.tipo == "año")
		{
			a = e.target.options[e.target.selectedIndex].value * 1;
			goaño (a);
		}
	}
}

function Calendario (pInitop, pInileft, Initipo, Inifecha,pObj,Idioma)
{
	if (Idioma > 0 && Idioma < 5)
		pidm = Idioma + "";

	if (!pInileft) {pInileft = Inileft;}
	if (!pInitop) {pInitop = Initop;}

	if (pObj)
		myText = document.getElementById(pObj);
	
	tempfecha = "";

	if (Inifecha)
		diaactual = Inifecha;

	pTipo = "EUR";
	if (Initipo == "US")
		pTipo = "US";



	if (diaactual)
	{
		if ( pTipo == "US")
		{
			var fechaini = diaactual.split("/");
			var ano = fechaini[2];
			if ((ano*1) < 100)
				ano = "20" + ano;
			
			var diasmes = jsDameDias(fechaini[0]-1 + "", ano + "")
			if (fechaini[1]*1 > diasmes) fechaini[1] = diasmes;
			

			var fechaINI = new Date (ano,fechaini[0]-1,fechaini[1]);
			tempfecha = fechaINI;	
		}
		else
		{
			var fechaini = diaactual.split("/");
			var ano = fechaini[2];
			if ((ano*1) < 100)
				ano = "20" + ano;
			
			var diasmes = jsDameDias(fechaini[1]-1 + "", ano + "")
			if (fechaini[0]*1 > diasmes) fechaini[0] = diasmes;

			var fechaINI = new Date (ano,fechaini[1]-1,fechaini[0]);
			tempfecha = fechaINI;	
		}
	}
	else
		tempfecha = new Date();

	dia = tempfecha;

	year			= tempfecha.getFullYear();
	month			= tempfecha.getMonth();
	monthname		= jsDameNombreMes (month+"");
	fecha			= tempfecha.getDate();
			
	primerdiain = new Date (year, month, 1);
	primerdia   = primerdiain.getDay();
	if (primerdia == 0) primerdia = 7;
	Pprimerdia = primerdia;
  dias = jsDameDias (month+"", year+"");
	if (!contenedor)
		contenedor = jsCrEl (document.body, "div", "z-index:1;");

	contenedor.innerHTML = "";
	jsRefresh   (primerdia, dias, fecha, monthname, year, pInileft, pInitop );
	jsMuestra();
}

function addEvent(obj, evType, fn)
{
  if (obj.addEventListener != undefined)
  {
  	obj.addEventListener(evType, fn, false);
    return true;
  }
  else if (obj.attachEvent)
  {
  	var r = obj.attachEvent("on"+evType, fn);
  }
  else
  {
    return false;
  }
}

function jsRefresh(Pprimerdia, Pultimafecha, Pfecha, PnombreMes, Ppaño, left, top)
{
		Initop = top;
		Inileft = left;
		pbordercolor = "#f4ae20";
		pcabcolor = "#f4ae20";
		pwdayscolor = "#f4ae20"; 
		pbordercolord = "#f4ae20";
		pbordercolord1 = "#f4ae20";
		pbordercolor1 = "#f4ae20";
		pndayscolor = "#EEEEEE";
		psdaycolor = "#ffffff";
		psfinsemana	 = "#ffffff";
		pdayscolor = "#ffffff";

		contenedor.style.left = left + "px";
		contenedor.style.top = top + "px";
		contenedor.style.position = "absolute";
		contenedor.style.visibility='visible';
    var tabla      = jsCrEl (contenedor, "TABLE", "z-index:1;border-top:solid 1px " + pbordercolor + ";border-bottom:solid 1px " + pbordercolor + ";border-left:solid 1px " + pbordercolor + ";border-right:solid 1px " + pbordercolor + ";font-family:Verdana; font-size:9px; font-style:normal");
    tabla.style.fontSize = 7;
		tabla.cellSpacing = 0;
		tabla.cellPadding = 0;
		tabla.border = 0;
		var cuerpo     = jsCrEl (tabla, "TBODY", "");
		var tr         = jsCrEl (cuerpo, "TR", "background-color:" + pcabcolor + ";font-family:Verdana;font-size:9px; font-style:normal;");
		var td         = jsCrEl (tr, "TD", "");
		td.colSpan = 3;
		
		oo = jsCrEl (td,"select","font-family:Verdana; font-size:9px;border-left:#ffba00;border-right:#ffba00;border-top:#ffba00;border-bottom:#ffba00;");
		addEvent(oo,"change",jsChange);
		oo.tipo = "mes";
    for (i=0; i <= 11; i++)
      {
	   ee = document.createElement("OPTION");
	   ee.text = jsDameNombreMes (i+"");
         ee.value = i;
         if (oo.addEventListener != undefined)
         {
         	oo.add (ee,null);
         }
         else
         {
         	 oo.add (ee);
         }
      }
	
		oo.options[tempfecha.getMonth()].selected = true;
    oo = jsCrEl (td,"select","font-family:Verdana; font-size:9px;");
    addEvent(oo,"change",jsChange);
    
    oo.tipo = "año";

		hoy = new Date();
		tt = hoy.getFullYear();
		Paño = tt;
		anoactual = tt;

		if (!Ppaño)
			Ppaño = Paño;

		count = 0;
		for (i=Paño-100; i <= Paño+1; i++)
	  {
      ee = document.createElement("OPTION");
			ee.text = i
			ee.value = i;
			if (oo.addEventListener != undefined)
			 	oo.add (ee,null);
			else
			 oo.add (ee);
			
			count = count + 1;
			if (i == Ppaño)
				elano = count-1;
		}

		 oo.options[elano].selected = true;

     var td         = jsCrEl (tr, "TD", "");
     td.align = "RIGHT";
     td.colSpan = 1;
     var img        = jsCrEl (td, "IMG", "position:relative;top:1;");
     img.src = "/img/prev.gif";
     img.tipo = "prev";
     switch (pidm)
     {
		    case '1':
					img.alt = "Mes anterior";
					break;
		    case '3':
					img.alt = "Letzten Monat";
					break;
		    case '4':
					img.alt = "Mois antérieur";
					break;
		    case '2':
					img.alt = "Previous month";
     }
		 addEvent(img, "click", jsClick);
     var pnull      = jsCrEl (td, "B", "");
     pnull.innerHTML = "&nbsp;";
     var img        = jsCrEl (td, "IMG", "position:relative;top:1;");
     img.src = "/img/next.gif";
     img.tipo = "next";
		 addEvent(img, "click", jsClick);
		 
         switch (pidm)
         {
            case '1':
               img.alt = "Mes posterior";
               break;
            case '3':
               img.alt = "Nächster Monat";
               break;
			case '4':
               img.alt = "Mois suivant";
               break;
            case '2':
               img.alt = "Next month";
         }
         var pnull      = jsCrEl (td, "B", "");
         pnull.innerHTML = "&nbsp;&nbsp;"
       
		 var tr = jsCrEl (cuerpo,"TR","");
		 var td         = jsCrEl (tr, "TD", "");
		 td.colSpan = 4;
		 var table1		= jsCrEl (td, "TABLE", "border-top:solid 1px " + pbordercolor1 + ";border-bottom:solid 1px " + pbordercolor1 + ";border-left:solid 1px " + pbordercolor1 + ";border-right:solid 1px " + pbordercolor1 + ";font-family:Verdana; font-size:9px; font-style:normal");
		 table1.style.fontSize = 11;
		 table1.cellSpacing = 0;
		 table1.cellPadding = 0;
         table1.border = 0;
		 
		 var cuerpo1     = jsCrEl (table1, "TBODY", "");

         
         var tr         = jsCrEl (cuerpo1, "TR", "");

		 for (dianum = 0; dianum < 7; ++dianum)
         {
			
            if (dianum == 0)
            {
			   
               var td = jsCrEl (tr, "TD", "color:#000000;background-color:" + pwdayscolor + ";font-family:Verdana;font-size:9px; font-style:normal;border-top:solid 1px " + pbordercolord + ";border-bottom:solid 1px " + pbordercolord + ";border-left:solid 1px " + pbordercolord + ";border-right:solid 1px " + pbordercolord + ";font-family:Verdana; font-size:9px; font-style:normal");
			   
            }
            else
            {
			   
               if (dianum == 7)
               {
                  var td = jsCrEl (tr, "TD", "color:#000000;background-color:" + pwdayscolor + ";font-family:Verdana;font-size:9px; font-style:normal;border-top:solid 1px " + pbordercolord + ";border-bottom:solid 1px " + pbordercolord + ";border-right:solid 1px " + pbordercolord + ";font-family:Verdana; font-size:9px; font-style:normal");
               }
               else
               {
                  var td = jsCrEl (tr, "TD", "color:#000000;background-color:" + pwdayscolor + ";font-family:Verdana;font-size:9px; font-style:normal;border-top:solid 1px " + pbordercolord + ";border-bottom:solid 1px " + pbordercolord + ";border-right:solid 1px " + pbordercolord + ";font-family:Verdana; font-size:9px; font-style:normal");
               }
            }

            td.width = "26";
            td.align = "CENTER";
			//var pnull      = jsCrEl (td, "B", "")
			
			dia = jsDameNombreDia (dianum+"");
			
			td.innerHTML = dia;
			//pnull.innerHTML = dia;

         }
         
         var diadelmes = 1;
         var celdaactual = 1;

		 for (var celda = 1; celda <= Math.ceil ((Pultimafecha + Pprimerdia -1) / 7); ++ celda)
         {
            var tr = jsCrEl (cuerpo1, "TR", "");
            for (var col = 1; col <= 7; ++col)
            {
               if ((celdaactual < Pprimerdia) || (diadelmes > Pultimafecha))
               {
                  var td = jsCrEl (tr, "TD", "background-color:" + pndayscolor + ";border-top:solid 1px " + pbordercolor + ";border-bottom:solid 1px " + pbordercolor + ";border-left:solid 1px " + pbordercolor + ";border-right:solid 1px " + pbordercolor + ";font-family:Verdana; font-size:9px; font-style:normal");
                  td.align = "CENTER";
                  td.innerHTML = "&nbsp";

                  if (celdaactual < Pprimerdia)
                  {
                     td.tipo = "prev";
                  }
                  else
                  {
                     td.tipo = "next";
                  }

                  celdaactual ++;
               }
               else
               {
				  if (diadelmes == Pfecha && online == true)
                  {
					 var td = jsCrEl (tr, "TD", "cursor:pointer;color:#4191CE;background-color:" + psdaycolor + ";border-top:solid 1px " + pbordercolor + ";border-bottom:solid 1px " + pbordercolor + ";border-left:solid 1px " + pbordercolor + ";border-right:solid 1px " + pbordercolor + ";color:#000000;font-family:Verdana; font-size:9px; font-style:normal");
                     td.align = "CENTER";
                     addEvent(td, "click", jsClick);
					 var pnull = jsCrEl(td, "B","");
					 addEvent(pnull, "click", jsClick);
                     pnull.innerHTML = diadelmes;
					 pnull.tipo = "dia";
                     td.tipo = "dia";
                  }
                  else
                  {						
                     if (col == 6 || col == 7)
                     {  
						var td = jsCrEl (tr, "TD", "cursor:pointer;color:#4191CE;background-color:" + psfinsemana + ";border-top:solid 1px " + pbordercolor + ";border-bottom:solid 1px " + pbordercolor + ";border-left:solid 1px " + pbordercolor + ";border-right:solid 1px " + pbordercolor + ";font-family:Verdana; font-size:9px; font-style:normal");
                     }
                     else
                     {
						var td = jsCrEl (tr, "TD", "cursor:pointer;color:#4191CE;background-color:" + pdayscolor + ";border-top:solid 1px " + pbordercolor + ";border-bottom:solid 1px " + pbordercolor + ";border-left:solid 1px " + pbordercolor + ";border-right:solid 1px " + pbordercolor + ";font-family:Verdana; font-size:9px; font-style:normal");
					 }
                     td.align = "CENTER";
                     td.innerHTML = diadelmes;
                     addEvent(td, "click", jsClick);
                     td.tipo = "dia";
                  }
                  diadelmes++;
			   }
            }
		 }
}


function jsCrEl (pobj,petq,pest)
{
	var oo = document.createElement (petq);
    if (pest != "")
    {
		oo.style.cssText = pest;
	}

    pobj.insertBefore (oo, null);
    return oo;
}

/////////////////////////////////////////////////////////////////////////
// Función jsDameDias.
// Función de uso interno que a partir de un número de mes y de año nos
// retorna el número de dias que tiene el mes.
/////////////////////////////////////////////////////////////////////////
function jsDameDias(Pmes, Paño)
{
	switch (Pmes)
	{
		case '0':
			return 31;
			break;
		case '1':
			var bisiesto = jsEsBisiesto (Paño);
			if (bisiesto == true)
			{
				return 29;
			}
			else
			{
				return 28;
			}
			break;
		case '2':
			return 31;
			break;
		case '3':
			return 30;
			break;
		case '4':
			return 31;
			break;
		case '5':
			return 30;
			break;
		case '6':
			return 31;
			break;
		case '7':
			return 31;
			break;
		case '8':
			return 30;
			break;
		case '9':
			return 31;
			break;
		case '10':
			return 30;
			break;
		case '11':
			return 31;
			break;
	}
}

  /////////////////////////////////////////////////////////////////////////
  // Función jsDameNombreMes.
  // Función de uso interno que nos proporciona el nombre del mes en el 
  // idioma del usuario, por defecto en español.
  /////////////////////////////////////////////////////////////////////////
function jsDameNombreMes (Pmes)
{
	switch (pidm)
	{
		case '1':
			switch (Pmes)
			{
				case '0':
					return "Enero";
					break;
				case '1':
					return "Febrero";
					break;
				case '2':
					return "Marzo";
					break;
				case '3':
					return "Abril";
					break;
				case '4':
					return "Mayo";
					break;
				case '5':
					return "Junio";
					break;
				case '6':
					return "Julio";
					break;
				case '7':
					return "Agosto";
					break;
				case '8':
					return "Septiembre";
					break;
				case '9':
					return "Octubre";
					break;
				case '10':
					return "Noviembre";
					break;
				case '11':
					return "Diciembre";
					break;
			}
			break;
		case '4':
			switch (Pmes)
			{
				case '0':
					return "Janvier";
					break;
				case '1':
					return "Février";
					break;
				case '2':
					return "Mars";
					break;
				case '3':
					return "Avril";
					break;
				case '4':
					return "Mai";
					break;
				case '5':
					return "Juin";
					break;
				case '6':
					return "Juillet";
					break;
				case '7':
					return "Août";
					break;
				case '8':
					return "Septembre";
					break;
				case '9':
					return "Octobre";
					break;
				case '10':
					return "Novembre";
					break;
				case '11':
					return "Décembre";
					break;
			}
			break;
		case '2':
			switch (Pmes)
			{
				case '0':
					return "January";
					break;
				case '1':
					return "February";
					break;
				case '2':
					return "March";
					break;
				case '3':
					return "April";
					break;
				case '4':
					return "May";
					break;
				case '5':
					return "June";
					break;
				case '6':
					return "July";
					break;
				case '7':
					return "August";
					break;
				case '8':
					return "September";
					break;
				case '9':
					return "October";
					break;
				case '10':
					return "November";
					break;
				case '11':
					return "December";
					break;
			}
			break;
		case '3':
			switch (Pmes)
			{
				case '0':
					return "Januar";
					break;
				case '1':
					return "Februar";
					break;
				case '2':
					return "März";
					break;
				case '3':
					return "April";
					break;
				case '4':
					return "Mai";
					break;
				case '5':
					return "Juni";
					break;
				case '6':
					return "Juli";
					break;
				case '7':
					return "August";
					break;
				case '8':
					return "September";
					break;
				case '9':
					return "Oktober";
					break;
				case '10':
					return "November";
					break;
				case '11':
					return "Dezember";
					break;
			}
			break;
	}
}

      
function jsDameNombreDia(Pdia)
{
	
	switch (pidm)
	{
	   case '3':
           switch (Pdia)
           {
              case "0":
                 return "Mo";
              case "1":
                 return "Di";
              case "2":
                 return "Mi";
              case "3":
                 return "Do";
              case "4":
                 return "Fr";
              case "5":
                 return "Sa";
              case "6":
                 return "So";
           }
			break;
		case '4':
           switch (Pdia)
           {
              case "0":
                 return "Lu";
              case "1":
                 return "Ma";
              case "2":
                 return "Me";
              case "3":
                 return "Je";
              case "4":
                 return "Ve";
              case "5":
                 return "Sa";
              case "6":
                 return "Di";
           }
			break;
		case '1':
           switch (Pdia)
           {
              case "0":
                 return "Lu";
              case "1":
                 return "Ma";
              case "2":
                 return "Mi";
              case "3":
                 return "Ju";
              case "4":
                 return "Vi";
              case "5":
                 return "Sa";
              case "6":
                 return "Do";
           }
			break;
		case '2':
           switch (Pdia)
           {
              case "0":
                 return "Mo";
              case "1":
                 return "Tu";
              case "2":
                 return "We";
              case "3":
                 return "Th";
              case "4":
                 return "Fr";
              case "5":
                 return "Sa";
              case "6":
                 return "Su";
           }
			break;
	}
}

function jsEsBisiesto (Paño)
{
	// Un año es bisiesto si es su modulo base cuatro es cero y si al mismo tiempo su modulo base 100 es diferente de cero o
	// bien si el el modulo base 400 es cero.
	if (((Paño % 4 == 0) && (Paño % 100 != 0)) || (Paño % 400 == 0))
	{
		return true;
	}
	return false;
}

function jsIniDay(Pday)
{
	diaactual = Pday;
}

function jsClick(e)
{
  	 esfirefox = false;    	
  	 try
  	 {
     	oo = event.srcElement;
	
     } catch(e)
     {
	esfirefox = true;
     	oo = e.target;
     }

 if (esfirefox == false)
 {
	 if (oo.tagName == "TD" || oo.tagName == "B")
	 {
		if (oo.tipo == "dia")
		{
		   zz = oo.innerHTML;
		   rExp = /<B tipo="dia">/gi;
		   zz = zz.replace (rExp,"");
		   rExp = /<\/B>/gi;
		   zz = zz.replace (rExp,"");
		   fechasel = construyefecha(zz);
		   myText.value = fechasel;
		   try{myText.onchange();}catch(ev){}
		}
	 }

	 if (oo.tipo == "next")
	 {
	   gonextmonth();      
	 }
	 if (oo.tipo == "prev")
	 {
		goprevmonth();
	 }

	 if (oo.tipo == "cierre")
	 {
		jsOculta();
	 }
 }        
 else
{

	 a = e.target;
	 if (a == "[object HTMLTableCellElement]" || a == "[object HTMLSpanElement]")
	 {
		if (a.tipo == "dia")
		{
		   zz = a.innerHTML;
		   rExp = /<B tipo="dia">/gi;
		   zz = zz.replace (rExp,"");
		   rExp = /<\/B>/gi;
		   zz = zz.replace (rExp,"");
		   fechasel = construyefecha(zz);
		   //fechasel = construyefecha(zz);
		   myText.value = fechasel;
		   try{myText.onchange();}catch(ev){}
		}
	 }

	 if (a.tipo == "next")
	 {
	   gonextmonth();      
	 }
	 if (a.tipo == "prev")
	 {
		goprevmonth();
	 }

	 if (a.tipo == "cierre")
	 {
		jsOculta();
	 }
}

   //window.status = oo.tagName;
}
      
function construyefecha (Pdia)
{
	var dia = ""+Pdia;
	var mes = tempfecha.getMonth();
	var año = tempfecha.getFullYear();
	
	mes = mes + 1;
	
	if (mes < 10)
	  mes = "0" + mes;
	if (dia < 10)
		dia = "" + "0" + dia;

	tempsel = ""+dia + "/" + mes + "/" + año;

	if (pTipo == "US")
		tempsel = ""+mes + "/" + dia + "/" + año;
	
	jsOculta();
	return tempsel;
}
      
function gonextmonth()
{
	var dia = tempfecha.getDate();
	var mes = tempfecha.getMonth();
	var año = tempfecha.getFullYear();
	if (mes == 11)
	{
	  mes = "1";
		//if ((año+1) > anoactual )
		//{ año = anoactual-100; }
		//else
		//{ año = año + 1; }
		año = año + 1;
	}
	else
	{
	  mes = mes + 2;
	}

	if (mes < "10")
	  mes = "0" + mes;
	
	diaactual = dia + "/" + mes + "/" + año;
	Calendario();
}
      
function goprevmonth()
{
	var dia = tempfecha.getDate();
	var mes = tempfecha.getMonth();
	var año = tempfecha.getFullYear();
	
	if (mes == 0)
	{
		mes = "12";
		//if ((año -1) <= (anoactual-100))
		if ((año-1) < (anoactual))
			año = anoactual;
		else
			año = año - 1;
	}
	else
	{
	  mes = mes;
	}
		
	if (mes < "10")
	{
	 mes = "0" + mes;
	}
	
	diaactual = dia + "/" + mes + "/" + año;
	
	Calendario();
}
      
function jsOculta()
{
	try
	{
		contenedor.style.visibility='hidden';	
	}
	catch (e){} 
}

function jsMuestra()
{
	contenedor.style.visibility='visible';
}
      
function findPos(obj) 
{
	var curleft = curtop = 0;
	if (obj.offsetParent) 
	{
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) 
		{
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	return [curleft,curtop];
}