var ppcDF="d/m/a";
var ppcTI=false;
var ppcSV=null;
var ppcML=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var ppcFL=new Date();
var ppcNow=new Date();
var ppcPtr=new Date();
var posX = 0;
var posY = 0;
var calTipo = 0; //0 entrada, 1 salida

function getCalendarFor(event,target,fechaLimite,cal) {
 ppcSV = document.getElementById(target);
 calTipo = cal;
 var tmp = fechaLimite.split("/");
 ppcFL = new Date(tmp[2],tmp[1]-1,tmp[0]);
 setSelectList(ppcNow.getFullYear(),ppcNow.getMonth());
 setCalendar(tmp[2],tmp[1]-1);
 document.getElementById('tipusCalendari').innerHTML = (calTipo == 0) ? txtEntrada : txtSortida;
 var obj = document.getElementById('PopUpCalendar'); 
 getCoordCursor(event); 
 obj.style.left = (posX-20) +"px";
 obj.style.top = (posY-10) +"px";
 obj.style.visibility = "visible";
}
function switchMonth(param) {
 var tmp = param.split("|");
 setCalendar(tmp[0],tmp[1]);
}
function getCoordCursor(event) {
 var IE = document.all?true:false;
 if (IE) {
  posX = event.clientX + document.body.scrollLeft;
  posY = event.clientY + document.body.scrollTop;
 } else {
  posX = event.pageX + window.scrollX;
  posY = event.pageY + window.scrollY;
 }
}
function moveMonth(dir) {
 var limit = false;
 var obj = document.getElementById('selMesos');
 if ((dir.toLowerCase() == "back")&&(obj.selectedIndex > 0)) obj.selectedIndex--;
 else if ((dir.toLowerCase() == "forward")&&(obj.selectedIndex < 11)) obj.selectedIndex++;
 else limit = true;
 if (!limit) {
  var tmp = obj.options[obj.selectedIndex].value.split("|");
  setCalendar(tmp[0],tmp[1]);
 } else {
  setTimeout("document.getElementById('selMesos').style.backgroundColor = '#FFFFFF'",150);
  obj.style.backgroundColor = "#FFF0D9";
 }
}
function selectDate(param) {
 var arr   = param.split("|");
 var year  = arr[0];
 var month = arr[1];
 var date  = arr[2];
 var ptr = parseInt(date);
 ppcPtr.setDate(ptr);
 ppcSV.value = dateFormat(year,month,date);
 posarNits();
 hideCalendar();	  
}
function setCalendar(year,month) {
 if (month == 1) ppcML[1] = (deTraspas(year)) ? 29 : 28;
 ppcPtr = new Date(year,month,1);
 document.getElementById('monthDays').innerHTML = verMes();
}
function verMes() {
 var year = ppcPtr.getFullYear();
 var month = ppcPtr.getMonth();
 var date = 1;
 var len = ppcML[month];
 var bgr = "";
 var j,i = 0;
 var strHtml = "<table width=\"200\" cellspacing=\"1\" cellpadding=\"2\" border=\"0\">";
 var strHtmlTd = "";
 for (j = 0; j < 6; ++j) { //semanas
  if (date > len) {break;}
  for (i = 0; i < 7; ++i) { // dias
   bgr = (i > 4) ? "#FFFAE6" : "#FFFFFF";
   var diaActiu = 1;
   var primerDiaMes = (ppcPtr.getDay() == 0) ? 6 : ppcPtr.getDay()-1;
   if (( (j == 0)&&( i < primerDiaMes ) )||(date > len)) {
    strHtmlTd  += verDia(bgr,year,month,0,diaActiu);
   } else {
	if ((ppcFL.getFullYear()>year || ppcFL.getMonth()>month || ppcFL.getDate()>date) && ppcFL >= ppcPtr) {diaActiu = 0;}
    strHtmlTd  += verDia(bgr,year,month,date,diaActiu);
   	++date;
   }
  }
  strHtml += "<tr>" + strHtmlTd + "</tr>";
  strHtmlTd = "";
 }
 strHtml += "<tr><td colspan=\"7\">&nbsp;</td></tr>";
 strHtml += "</table>";
 return strHtml;
}
function verDia(bgr,year,month,date,actiu) {
 var param = "\'"+year+"|"+month+"|"+date+"\'";
 var cellCode = "<td align=\"center\" bgcolor=\""+bgr+"\" ";
 var cellValue = (date != 0) ? date+"" : "&nbsp;";
 if ((ppcNow.getDate() == date)&&(ppcNow.getMonth() == month)&&(ppcNow.getFullYear() == year)) {
	 cellValue = "<div style=\"background-color: #EEEEEE;\"><b>"+cellValue+"</b></div>";
 }
 if (date == 0 || actiu==0) {
	 if (actiu==0) {
		 cellValue = "<span style=\"color: #CCCCCC;\">"+cellValue+"</span>";
	 }
	 cellCode += " style=\"cursor: default\">";
 } else {
	 cellCode += "onMouseOver=\"this.style.backgroundColor=\'#C7ECF8\'\" onMouseOut=\"this.style.backgroundColor=\'"+bgr+"\'\" onMouseUp=\"selectDate("+param+")\" style=\"cursor: pointer\">";
 }
 cellCode += cellValue+"</td>"
 return cellCode;
}
function setSelectList(year,month) {
 var obj = document.getElementById('selMesos');
 var i = 0; 
 while (i < 12) {
  obj.options[i].value = year + "|" + month;
  obj.options[i].text  = calNomMes[month] + " " + year;
  if (calTipo==1 && month == ppcFL.getMonth()){obj.selectedIndex = i;}
  i++;
  month++;
  if (month == 12) {year++;month = 0;}
 }
} 
function hideCalendar() {
 document.getElementById('PopUpCalendar').style.visibility = "hidden";
 ppcTI = false;
 ppcSV = null;
 var obj = document.getElementById('selMesos');
 obj.selectedIndex = 0;
}
function deTraspas(year) {
 if ((year%400==0)||((year%4==0)&&(year%100!=0))) return true;
 else return false;
}
function isEvenOrOdd(date) {
 if (date - 21 > 0) {return "e";}
 else if (date - 14 > 0) {return "o";}
 else if (date - 7 > 0) {return "e";}
 else {return "o";}
}
function dateFormat(year,month,date) {
 var str = "";
 for (var i = 0; i < ppcDF.length; ++i) {
  switch (ppcDF.charAt(i)) {
   case "d": str += ((ppcDF.indexOf("m")!=-1)&&(date<10)) ? ("0"+date) : date; break;
   case "m": str += (month<9) ? ("0"+(++month)) : ++month; break;
   case "a": str += year; break;
   default: str += ppcDF.charAt(i);
  }
 }
 return unescape(str);
}
