/* PopUp Calendar v2.1
© PCI, Inc.,2000 • Freeware
webmaster@personal-connections.com
+1 (925) 955 1624
Permission granted  for unlimited use so far
as the copyright notice above remains intact. */

/* Modified by Copas */


var ppcDF = "Ymd";
var ppcER = new Array(4);
ppcER[0] = "Required DHTML functions are not supported in this browser.";
ppcER[1] = "Target form field is not assigned or not accessible.";
ppcER[2] = "Sorry, the chosen date is not acceptable. Please read instructions on the page.";
ppcER[3] = "Unknown error occured while executing this script.";
var ppcUC = false;
 var ppcUX = 4;
 var ppcUY = 4;


/* Do not edit below this line unless you are sure what are you doing! */

var ppcYearFrom=1920;
var ppcYearTo=2020;
var ppcIE=(navigator.appName == "Microsoft Internet Explorer");
var ppcNN=((navigator.appName == "Netscape")&&(document.layers));
var ppcTT="<table width=\"200\" cellspacing=\"1\" cellpadding=\"2\" border=\"1\" bordercolorlight=\"#000000\" bordercolordark=\"#000000\">\n";
var ppcCD=ppcTT;var ppcFT="<font face=\"MS Sans Serif, sans-serif\" size=\"1\" color=\"#000000\">";var ppcFC=true;
var ppcTI=false;var ppcSV=null;var ppcRL=null;var ppcXC=null;var ppcYC=null; var ppcOC=null;
var ppcML=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var ppcNow=new Date();var ppcPtr=new Date(); var ppcSelectedPtr=new Date();
 var Frame_obj = null;
 var Year_obj = null;
 var Month_obj = null;

if (ppcNN) {
 window.captureEvents(Event.RESIZE);
 window.onresize = restoreLayers;
 document.captureEvents(Event.MOUSEDOWN|Event.MOUSEUP);
  alert("listener: OK");
 if (document.addEventListener){
  alert("listener: OK");
  document.addEventListener('mousedown', recordXY, true); 
  document.addEventListener('mouseup', confirmXY, true); 
 } else if (document.attachEvent){
  document.attachEvent('mousedown', recordXY );
  document.attachEvent('mouseup', confirmXY );
 }	
}
else if (!ppcIE)
{
 if (document.addEventListener){
  document.addEventListener('mousedown', recordXY, true); 
  document.addEventListener('mouseup', confirmXY, true); 
 } else if (document.attachEvent){
  document.attachEvent('mousedown', recordXY );
  document.attachEvent('mouseup', confirmXY );
 }	
}
 

function restoreLayers(e) {
 if (ppcNN) {
  with (window.document) {
   open("text/html");
   write("<html><head><title>Restoring the layer structure...</title></head>");
   write("<body bgcolor=\"#FFFFFF\" onLoad=\"history.go(-1)\">");
   write("</body></html>");
   close();}}}

function recordXY(e) {
 if (ppcNN) {
  ppcXC = e.x;
  ppcYC = e.y;
//  document.routeEvent(e);
 }
 else if (!ppcIE)
 {
    ppcXC = e.clientX+window.scrollX;
    ppcYC = e.clientY+window.scrollY;
//    document.routeEvent(e);
 }
}



function confirmXY(e) {
 if (ppcNN) {
  ppcXC = (ppcXC == e.x) ? e.x : null;
  ppcYC = (ppcYC == e.y) ? e.y : null;
//  document.routeEvent(e);
}}


function getCalendarFor(target,rules,onChange) {
 ppcSV = target;
 ppcRL = rules;
 ppcOC = onChange;
 if (ppcIE) 
 {
    Year_obj = PopUpCalendarFrame.sYearItem;
    Month_obj = PopUpCalendarFrame.sMonthItem;
    if (Month_obj==null)
    {
	try {
	    PopUpCalendarFrame.document.body.innerHTML=htmltext;
	}
	catch(ex){};
	if (Month_obj==null)
	{
	    // alert("Az oldal még nem töltődött be teljesen. Kérem várjon!\nThe page has not been fully loaded yet. Please wait!");
	    return;
	}
    }
 }
 else if (ppcNN) 
 {
    Year_obj = document.layers['PopUpCalendar'].document.layers['monthSelector'].sYearItem;
    Month_obj = document.layers['PopUpCalendar'].document.layers['monthSelector'].sMonthItem;
 }
 else 
 {
    Year_obj = document.getElementById('sYearItem');
    Month_obj = document.getElementById('sMonthItem');
 }

 if (ppcFC) 
 {	
    setCalendar();
    ppcFC = false;
 }
 if ((ppcSV != null)&&(ppcSV)) {
  if (ppcSV.value!="")
  {
    getFormattedDate(ppcSV.value);
    Year_obj.value=ppcPtr.getFullYear();
    Month_obj.value=ppcPtr.getMonth();
    switchMonth();
  }
  else
  {
    Year_obj.value=ppcNow.getFullYear();
    Month_obj.value=ppcNow.getMonth();
    switchMonth();  
  }
  if (ppcIE) {
   var obj = document.all['PopUpCalendar'];
   var left = document.body.scrollLeft+event.clientX;
   var screenright= document.body.clientWidth+document.body.scrollLeft-parseInt(obj.style.width)-20;
   if (left>screenright)
   {
    left = screenright;
   }
   obj.style.left = left;
   var top  = document.body.scrollTop+event.clientY;
   var screenbottom= document.body.clientHeight+document.body.scrollTop-parseInt(obj.style.height)-20;
   if (top>screenbottom)
   {
    top = screenbottom;
   }
   obj.style.top=top;
   obj.style.visibility = "visible";}
  else if (ppcNN) {
   var obj = document.layers['PopUpCalendar'];
   obj.left = ppcXC
   obj.top  = ppcYC
   obj.visibility = "show";
  }
  else {
   var obj = document.getElementById("PopUpCalendar");
   obj.style.left = ppmXC;
   obj.style.top  = ppmYC;
   obj.style.visibility = "visible";
  }
 }
 else {showError(ppcER[1]);}}

function switchMonth(param) 
{
 setCalendar(Year_obj.value,Month_obj.value);
}

function moveMonth(dir) {
 var limit = false;
 var tmp,dptrYear,dptrMonth;
 if (Year_obj != null) {
  if ((dir.toLowerCase() == "back")&&((Year_obj.selectedIndex > 0)||(Month_obj.selectedIndex > 0))) 
  {
    if (Month_obj.selectedIndex > 0)
    {
	Month_obj.selectedIndex--;
    }	
    else
    {
	Year_obj.selectedIndex--;
	Month_obj.selectedIndex=11;
    }
  }
  else if ((dir.toLowerCase() == "forward")&&((Year_obj.value < 2020)||(Month_obj.selectedIndex < 11))) 
  {
    if (Month_obj.selectedIndex < 11)
    {
	Month_obj.selectedIndex++;
    }	
    else
    {
	Year_obj.selectedIndex++;
	Month_obj.selectedIndex=0;
    }
  }
  else {limit = true;}}
 if (!limit) {
  setCalendar(Year_obj.value,Month_obj.value);}
 else {
  if (ppcIE) {
   Year_obj.style.backgroundColor = "#FF0000";
   Month_obj.style.backgroundColor = "#FF0000";
   window.setTimeout("sYearItem.style.backgroundColor = '#FFFFFF'",50);
}}}

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);
 if ((ppcSV != null)&&(ppcSV)) {
  if (validDate(date)) {
    ppcSV.value = dateFormat(year,month,date);
    hideCalendar();
    if ((ppcOC != null)&&(ppcOC != "")) {
	try {
	eval(ppcOC);
	}
	catch (ex) {}
    }
  }
  else {showError(ppcER[2]);if (ppcTI) {clearTimeout(ppcTI);ppcTI = false;}}}
 else {
  showError(ppcER[1]);
  hideCalendar();}}

function setCalendar(year,month) {
 if (year  == null) {year = getFullYear(ppcNow);}
 if (month == null) {month = ppcNow.getMonth();setSelectList(year,month);}
 if (month == 1) {ppcML[1]  = (isLeap(year)) ? 29 : 28;}
 ppcPtr.setYear(year);
 ppcPtr.setMonth(month);
 ppcPtr.setDate(1);
 updateContent();}

function updateContent() {
 generateContent();
 if (ppcIE) {PopUpCalendarFrame.monthDays.innerHTML = ppcCD;}
 else if (ppcNN) {
  with (document.layers['PopUpCalendar'].document.layers['monthDays'].document) {
   open("text/html");
   write("<html>\n<head>\n<title>DynDoc</title>\n</head>\n<body bgcolor=\"#FFFFFF\">\n");
   write(ppcCD);
   write("</body>\n</html>");
   close();}}
 else 
 {
    var tmp=m3;
    tmp.innerHTML = ppcCD;
    // showError(ppcER[0]);
 }
 ppcCD = ppcTT;}

function generateContent() {
 var year  = ppcPtr.getFullYear();
 var month = ppcPtr.getMonth();
 var date  = 1;
 var day   = ppcPtr.getDay();
 var len   = ppcML[month];
 var bgr,cnt,tmp = "";
 var j,i = 0;
 var lines=0;
 for (j = 0; j < 7; ++j) { 
  if (date > len) {break;}
  for (i = 0; i < 7; ++i) {
   bgr = ((i == 0)||(i == 6)) ? "#FFFFCC" : "#FFFFFF";
   if (((j == 0)&&(i < day))||(date > len)) {tmp  += makeCell(bgr,year,month,0);}
   else {tmp  += makeCell(bgr,year,month,date);++date;}}
  ppcCD += "<tr align=\"center\">\n" + tmp + "</tr>\n";tmp = ""; lines++;}
 ppcCD += "</table>\n";
    if (lines<6)
	getObj("PopUpCalendar").style.height="159px";
    else
        getObj("PopUpCalendar").style.height="175px";
}

function makeCell(bgr,year,month,date) {
 var param = "\'"+year+"|"+month+"|"+date+"\'";
 var td1 = "<td width=\"20\" bgcolor=\""+bgr+"\" ";
 var td2 = (ppcIE) ? "</font></span></td>\n" : "</font></a></td>\n";
 var evt
 if (ppcIE)
 {
     evt = " onMouseOver=\"this.style.backgroundColor=\'#FF0000\'\" onMouseOut=\"this.style.backgroundColor=\'"+bgr+"\'\" onMouseUp=\"parent.selectDate("+param+")\" "; 
 }
 else
 {
     evt = " onMouseOver=\"this.style.backgroundColor=\'#FF0000\'\" onMouseOut=\"this.style.backgroundColor=\'"+bgr+"\'\" ";
 }
 var ext = "<span Style=\"cursor: pointer\">";
 var lck = "<span>";
 var lnk = "<a href=\"javascript:selectDate("+param+")\" onMouseOver=\"window.status=\' \';return true;\">";
 var cellValue = (date != 0) ? date+"" : "&nbsp;";
 if ((ppcNow.getDate() == date)&&(ppcNow.getMonth() == month)&&(ppcNow.getFullYear() == year)) {
  cellValue = "<b>"+cellValue+"</b>";}
 if ((ppcSelectedPtr.getDate() == date)&&(ppcSelectedPtr.getMonth() == month)&&(ppcSelectedPtr.getFullYear() == year)) {
  cellValue = "<font color=red><b>"+cellValue+"</b></font>";}
 var cellCode = "";
 if (date == 0) {
  if (ppcIE) {cellCode = td1+">"+lck+ppcFT+cellValue+td2;}
  else {cellCode = td1+">"+ppcFT+cellValue+td2;}}
 else {
  if (ppcIE) {cellCode = td1+evt+"Style=\"cursor: pointer\">"+ext+ppcFT+cellValue+td2;}
  else {
   if (date < 10) {cellValue = "&nbsp;" + cellValue + "&nbsp;";}
   cellCode = td1+evt+">"+lnk+ppcFT+cellValue+td2;}}
 return cellCode;}

function setSelectList(year,month) {
 var i = 0;
 Month_obj.length=0;
 while (i < 12) {
  NewOpt= new Option;
  NewOpt.value=i;
  NewOpt.text=Month_Names[i];
  Month_obj.options[i] = NewOpt;
  i++;
 }
 i=ppcYearFrom;
 var j=0;
 Year_obj.length=0;
 while (i < ppcYearTo) {
  NewOpt= new Option;
  NewOpt.value=i;
  NewOpt.text=i;
  Year_obj.options[j] = NewOpt;
  i++;
  j++;
 }
 Year_obj.value=year;
 Month_obj.value=month;
}

function hideCalendar() {
 if (ppcIE) {document.all['PopUpCalendar'].style.visibility = "hidden";}
 else if (ppcNN) {document.layers['PopUpCalendar'].visibility = "hide";window.status = " ";}
 else 
 {
    document.getElementById('PopUpCalendar').style.visibility = "hidden"; 
 }
 ppcTI = false;
// setCalendar();
 ppcSV = null;
}

function showError(message) {
 window.alert("[ PopUp Calendar ]\n\n" + message);}

function isLeap(year) {
 if ((year%400==0)||((year%4==0)&&(year%100!=0))) {return true;}
 else {return false;}}

function getFullYear(obj) {
 if (ppcNN) {return obj.getYear() + 1900;}
 else {return obj.getYear();}}

function validDate(date) {
 var reply = true;
 if (ppcRL == null) {/* NOP */}
 else {
  var arr = ppcRL.split(":");
  var mode = arr[0];
  var arg  = arr[1];
  var key  = arr[2].charAt(0).toLowerCase();
  if (key != "d") {
   var day = ppcPtr.getDay();
   var orn = isEvenOrOdd(date);
   reply = (mode == "[^]") ? !((day == arg)&&((orn == key)||(key == "a"))) : ((day == arg)&&((orn == key)||(key == "a")));}
  else {reply = (mode == "[^]") ? (date != arg) : (date == arg);}}
 return reply;}

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) {
 if (ppcDF == null) {ppcDF = "m/d/Y";}
 var day = ppcPtr.getDay();
 var crt = "";
 var str = "";
 var chars = ppcDF.length;
 for (var i = 0; i < chars; ++i) {
  crt = ppcDF.charAt(i);
  switch (crt) {
   case "M": str += Month_Names[month]; break;
   case "m": str += (month<9) ? ("0"+(++month)) : ++month; break;
   case "Y": str += year; break;
   case "y": str += year.substring(2); break;
   case "d": str += ((ppcDF.indexOf("m")!=-1)&&(date<10)) ? ("0"+date) : date; break;
   case "W": str += Day_Names[day]; break;
    default: str += crt;}}
 return unescape(str);}


function getFormattedDate(str) {
 if (ppcDF == null) {ppcDF = "m/d/Y";}
 var day = ppcPtr.getDay();
 var crt = "";
 var chars = ppcDF.length;
 var j=0;
 str=str.replace(new RegExp(" ","g"),"",str);
 for (var i = 0; i < chars; ++i) {
  crt = ppcDF.charAt(i);
  switch (crt) {
   case " ":
     continue;
     break;
   case "M": 
     // ppcPtr.setMonth(0);
     j+=1; // Ez sem működik
     break;
   case "m": 
     var str2=str.substring(j,j+2);
     if (parseInt(str2)==0)
     {
        str2=str2.substring(1,2);
     }
     ppcPtr.setMonth(parseInt(str2)-1);
     ppcSelectedPtr.setMonth(parseInt(str2)-1);
     j+=2;
     break;
   case "Y": 
     ppcPtr.setYear(str.substring(j,j+4));
     ppcSelectedPtr.setYear(str.substring(j,j+4));
     j+=4;
     break;
   case "y": 
     var tmp=parseInt(str.substring(j,j+2));
     if (tmp<20)
     {
        tmp+=100;
     }
     tmp+=1900;
     ppcPtr.setYear(tmp);
     ppcSelectedPtr.setYear(str.substring(j,j+2));
     j+=2;
     break;
   case "d": 
     ppcPtr.setDate(str.substring(j,j+2));
     ppcSelectedPtr.setDate(str.substring(j,j+2));
     j+=2;
     break;
   case "W": 
     j+=1; // Ez nem működik
     break;
   default:
     j++;
   }
  }
}
 
