﻿// JScript File

//-------------------------------------
var	vDaysGR = new Array("Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ");	
var	vDaysEN = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");

var	vMonthsGR = new Array("Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος", "Μάϊος", "Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος", "Νοέμβριος","Δεκέμβριος");
var	vMonthsEN = new Array("January","February","March","April", "May","June","July","August","September","October", "November","December");

var vPrevMonthToolTip = new Array("Προηγούμενος μήνας", "Previous month");
var vNextMonthToolTip = new Array("Επόμενος μήνας", "Next month");

var vPrevYearToolTip = new Array("Προηγούμενο έτος", "Previous year");
var vNextYearToolTip = new Array("Επόμενο έτος", "Next year");

var vCloseBoxToolTip = new Array("Κλείσιμο", "Close");

var vDaysAll = new Array(vDaysGR, vDaysEN);
var vMonthsAll = new Array(vMonthsGR, vMonthsEN);


var imgBA = new Image();
imgBA.src = "../../Img/back_arrow.gif";

var imgNA = new Image();
imgNA.src = "../../Img/next_arrow.gif";

var imgUA = new Image();
imgUA.src = "../../Img/up_arrow.gif";

var imgDA = new Image();
imgDA.src = "../../Img/down_arrow.gif";

var imgCB = new Image();
imgCB.src = "../../Img/close_box.gif";

var vArrElemsIDs;


//------------------------------------------------------------

function HideShowSelectElements(bHide)
{
	for (i = 0; i < vArrElemsIDs.length; i++)
	{
		vElem = document.all[vArrElemsIDs[i]];
		
		if (typeof(vElem) == "undefined") 
			continue;
			
		posT = vElem.offsetParent.offsetParent.offsetTop;
		posL = vElem.offsetParent.offsetLeft + vElem.offsetLeft;
				
		if(bHide == true)
		{		
			vElem.style.visibility="hidden";
/*			vElem.style.position = "absolute";
			vElem.style.posTop = posT;
			vElem.style.posLeft = posL;
			vElem.style.clip = "rect(0px 100px 23px 0px)";
*/		}
		else 
		{
			vElem.style.visibility="visible";
//			vElem.style.position = "static";
//			vElem.style.clip = "auto";
		}
	}
}


function ReturnDate (pCalendarObjID, pDateBoxObjID, pReturnDateFormat, pDay, pMonth, pYear)
{
//	dDate = new Date (pYear, pMonth, pDay);
	strDate = pReturnDateFormat.toUpperCase();
	
	strDate = strDate.replace ("DD", lPadString (pDay.toString(), 2, "0"));
	strDate = strDate.replace ("MM", lPadString ((pMonth+1).toString(), 2, "0"));
	strDate = strDate.replace ("YYYY", pYear);
	
	document.all[pDateBoxObjID].value = strDate;
	document.all[pDateBoxObjID].focus();
	document.all[pDateBoxObjID].select();

	HideCalendar(pCalendarObjID);
	
	if (typeof(Page_ClientValidate) == 'function') {
		Page_ClientValidate();
	}
}

function lPadString (pSrcString, pResStringLength, pPadChar)
{
	resString = "";
	iLength = pResStringLength - pSrcString.length;
	
	for (i = 0; i < iLength; i++)
	{
		resString += pPadChar;
	}
	
	resString += pSrcString;
	return resString;
}

function IsDateValid (pDateString, pDateValidationExp)
{
	var rExp = new RegExp(pDateValidationExp);
	var matches = rExp.exec(pDateString);
	
	return (matches != null && pDateString == matches[0]);
}


function GetDatePart (pDateString, pValidDateFormats, pDatePart)
{
	var srcStr = pDateString;
    var reDDMM = /\d{1,2}/g;               //Create regular expression pattern.
    var reYYYY = /\d{4}/;               //Create regular expression pattern.
    var resStr;
    var wDatePart;
    
    if (pDatePart.toUpperCase() == "YYYY")
    {
		resStr = reYYYY.exec(srcStr);
		
		wDatePart = parseInt (resStr, 10);

		if (isNaN(wDatePart))
			wDatePart = 0;
		
		return wDatePart;
    }

    wStrDatePart = 1;
    wDateFormats = pValidDateFormats.split("|");
    
	for (i=0; i < wDateFormats.length; i++)
	{
//		alert ("in");
		wDateFrm = wDateFormats[i];
		
    	if  (pDateString.length < (wDateFrm.length - 2))
			continue;
	
		
		while ((wPos = wDateFrm.toUpperCase().indexOf(pDatePart.toUpperCase())) != -1)
		{
			srcStr = pDateString;
			wStrDatePart = "";
			resStr = "";
			
//			alert ("pos " + wPos);

			while ((resStr = reDDMM.exec(srcStr)) != null)
			{
//				alert (resStr.index + " " + wPos)
				if ((resStr.index == wPos) || (resStr.index == (wPos-1)))
				{
//					alert ("res " + resStr);
					wStrDatePart = resStr;
					break;
				}
			} //while
			
			if (wStrDatePart != "")
				break;
		} //while

		if (wStrDatePart != "")
			break;		
	} //for


//	alert ("wStrDatePart -" + wStrDatePart + "-");

	wDatePart = parseInt(wStrDatePart, 10);
	
//	alert ("wDatePart " + wDatePart);

	if (isNaN(wDatePart))
		wDatePart = 0;
		
	return wDatePart;
	
}


function numberOfDays(pMonth,pYear) 
{
	var numDays=new Array(31,28,31,30,31,30,31,31,30,31,30,31)
	
	n = numDays[pMonth]
	
	if( (pMonth == 1) && ( ((pYear % 4 == 0) && (pYear % 100 != 0)) || ((pYear % 400 == 0) && (pYear % 4000 != 0))) )
		++n
	
	return n
}


function ChangeClass(pClassName)
{
	window.event.srcElement.className = pClassName;
}

function gotoMonth(pCalendarObjID, pLangID, pDateBoxObjID, pReturnDateFormat, pMonth, pYear, pSign)
{

	eval("pMonth"+pSign+pSign);
	
	if(pMonth>11) 
	{	
		pMonth=0;
		//if(year>startyear)
		//year--;
		//else
		pYear++;
	}	
	else if (pMonth==-1)
	{ 
//		if(year>startyear)
		{
			
			pYear--;
			pMonth=11;
		}
		
//		month=0;	
	}	
	
					
	DisplayCalendar(pCalendarObjID, pLangID, pDateBoxObjID, pReturnDateFormat, pMonth, pYear) 
}



function gotoYear(pCalendarObjID, pLangID, pDateBoxObjID, pReturnDateFormat, pMonth, pYear, pSign)
{
 	eval("pYear"+pSign+pSign);
					
	DisplayCalendar(pCalendarObjID, pLangID, pDateBoxObjID, pReturnDateFormat, pMonth, pYear) 
}



function ShowCalendar(pCalendarObjID, pSelectElemsIDs, pOwner, pDateBoxObjID, pLangID, pReturnDateFormat, pValidDateFormats, pDateValidationExp) 
{
//	GetDatePart (document.all[pDateBoxObjID].value, pReturnDateFormat, "MM");

	vArrElemsIDs = pSelectElemsIDs;
	
	if (document.all[pCalendarObjID].style.visibility == "visible")
	{
		return;
	}
	
	if (!IsDateValid (document.all[pDateBoxObjID].value, pDateValidationExp))
		vDate = new Date();
	else
	{
		wYear = GetDatePart (document.all[pDateBoxObjID].value, pValidDateFormats, "yyyy");
		wMonth = GetDatePart (document.all[pDateBoxObjID].value, pValidDateFormats, "MM");
		
		if (wYear == 0 || wMonth == 0)
			vDate = new Date();
		else
			vDate = new Date(wYear, wMonth-1, 1);
	}
	
	posL = 0;
	posT = 0;
	
	
	for(var p=pOwner; p&&p.tagName!='BODY'; p=p.offsetParent){
	  if ((p.id.substr(p.id.length-9, 9).toUpperCase() != 'MAINPANEL'))
	  {
        posL += p.offsetLeft;
        posT += p.offsetTop;
      }
    }
		
    posL += 3;
    posT += 3;
    
	
	document.all[pCalendarObjID].style.posTop = posT; // + pOwner.height;
	document.all[pCalendarObjID].style.posLeft = posL; 
	
	HideShowSelectElements(true);
	
	DisplayCalendar (pCalendarObjID, pLangID, pDateBoxObjID, pReturnDateFormat, vDate.getMonth(), vDate.getFullYear());
}


function DisplayCalendar(pCalendarObjID, pLangID, pDateBoxObjID, pReturnDateFormat, pMonth, pYear) 
{

	strCalendarHTML = "<TABLE style='Z-INDEX: 995' align='center' BORDER='1' Bordercolor='#1f3773' BGCOLOR='white' cellspacing ='1' cellpadding='0'><tr Bordercolor='white'><td>";
	strCalendarHTML += "<TABLE style='Z-INDEX: 995' align='center' BORDER='0' width='177' Bordercolor='#1f3773' BGCOLOR='white' cellpadding='0' cellspacing='0'>"
 	
 	strCalendarHTML += CreateCalendarHeader(pCalendarObjID, pLangID, pDateBoxObjID, pReturnDateFormat, pMonth, pYear);
 	strCalendarHTML += CreateCalendarDates(pCalendarObjID, pDateBoxObjID, pReturnDateFormat, pMonth, pYear);

 	//DisplayCalendarHeader(pCalendarObjID, pMonth, pYear)
 	//displayDates(0,this.month,this.year,false)
 	
 	strCalendarHTML += "</TABLE>";
 	strCalendarHTML += "</td></tr></TABLE>";
	
	//var toto = document.getElementById[pCalendarObjID];
	
 	document.all[pCalendarObjID].innerHTML = strCalendarHTML;
 	document.all[pCalendarObjID].style.visibility = "visible";

 	document.all[pCalendarObjID].focus();
 	document.all[pCalendarObjID].attachEvent ("ondeactivate", eventHideCalendar);
}


function CreateCalendarHeader(pCalendarObjID, pLangID, pDateBoxObjID, pReturnDateFormat, pMonth, pYear)
{
	vDays = vDaysAll[pLangID];
 	
 	vMonths = vMonthsAll[pLangID];
 	
 	strHeaderHTML = "<TR><td width='15' height='20' align='left' class='CalendarHeader' ><img src='../../Img/back_arrow.gif' border='0' onclick='javascript:gotoMonth(\"" + pCalendarObjID+ "\", " + pLangID + ", \"" + pDateBoxObjID + "\", \"" + pReturnDateFormat + "\", " + pMonth + ", " + pYear + ", \"-\")'  onmouseover='style.cursor=\"hand\"' alt='" + vPrevMonthToolTip[pLangID]+ "'></td>";
 	strHeaderHTML += "<td class='CalendarHeader' align='right' colspan='2' style='font-size:11'><b>"
 	strHeaderHTML += vMonths[pMonth];
 	strHeaderHTML += "&nbsp;"+pYear+"&nbsp;</b></td>";
 	strHeaderHTML += "<td width='18' align='left' colspan='2' class='CalendarHeader'><TABLE style='Z-INDEX: 995' align='left' class='CalendarHeader' BORDER='1' Bordercolor='#1f3773' cellpadding='0' cellspacing='0'>";
	strHeaderHTML += "<TR><td class='CalendarHeader' align='top'><img src='../../Img/up_arrow.gif' border='0' onclick='javascript:gotoYear(\"" + pCalendarObjID+ "\", " + pLangID + ", \"" + pDateBoxObjID + "\", \"" + pReturnDateFormat + "\", " + pMonth + ", " + pYear + ", \"+\")'  onmouseover='style.cursor=\"hand\"' alt='" + vNextYearToolTip[pLangID]+ "'></td></TR>";
	strHeaderHTML += "<TR><td class='CalendarHeader' align='bottom'><img src='../../Img/down_arrow.gif' border='0' onclick='javascript:gotoYear(\"" + pCalendarObjID+ "\", " + pLangID + ", \"" + pDateBoxObjID + "\", \"" + pReturnDateFormat + "\", " + pMonth + ", " + pYear + ", \"-\")'  onmouseover='style.cursor=\"hand\"' alt='" + vPrevYearToolTip[pLangID]+ "'></td></TR>";
	strHeaderHTML += "</table></td>";
 	strHeaderHTML += "<td align='center' width='15' class='CalendarHeader' ><img src='../../Img/next_arrow.gif' border='0' onclick='javascript:gotoMonth(\"" + pCalendarObjID+ "\", " + pLangID + ", \"" + pDateBoxObjID + "\", \"" + pReturnDateFormat + "\", " + pMonth + ", " + pYear + ", \"+\")'  onmouseover='style.cursor=\"hand\"' align='absmiddle' alt='" + vNextMonthToolTip[pLangID]+ "'></td>";
 	strHeaderHTML += "<td align='center' width='20' class='CalendarHeader' ><img src='../../Img/close_box.gif' border='0' onclick='javascript:HideCalendar(\"" + pCalendarObjID + "\")'  onmouseover='style.cursor=\"hand\";' align='absmiddle' alt='" + vCloseBoxToolTip[pLangID]+ "'>&nbsp;</td></TR>"
 	strHeaderHTML +="<TABLE style='Z-INDEX: 995' align='center' BORDER='0' Bordercolor='#1f3773' BGCOLOR='white' cellpadding='2' cellspacing='2' >"
	strHeaderHTML +="<TR>";

	for(var i=0; i < vDays.length; ++i) 
	strHeaderHTML +="<td class='CalendarDays' height='15' align='center'><b>"+vDays[i]+" </td>";
	strHeaderHTML +="</b></TR>";
	
 	return strHeaderHTML;
}


function CreateCalendarDates(pCalendarObjID, pDateBoxObjID, pReturnDateFormat, pMonth, pYear)
{
	 todayDate = new Date();
	 todayYear = todayDate.getFullYear();
	 todayMonth = todayDate.getMonth();
	 todayDay = todayDate.getDate();
	 
	 d = new Date(pYear,pMonth,1);
 	 var startDay = d.getDay();
	 var numDays = numberOfDays(pMonth,pYear);
 	 var numRows = Math.floor((numDays+startDay)/7);
	 
 
 	if((numDays+startDay)%7 >= 1)
 		++numRows;
 	
 	var currentDay=0;
 	
 	strDatesHTML = "";
 	
 	for(var i=0; i<numRows; ++i) 
 	{
  		strDatesHTML += "<TR>";
  		
  		for(var j=0; j<7; ++j) 
  		{
	
			if(i*7+j<startDay || currentDay>=numDays)
				theclass = "class='CalendarBlue'"; 		
			else			
				theclass = "class='Calendar' onclick='javascript:ReturnDate(\"" + pCalendarObjID + "\", \"" + pDateBoxObjID + "\", \"" + pReturnDateFormat + "\", " + (currentDay+1) + ", " + pMonth + ", " + pYear + ");' onmouseover='javascript:ChangeClass(\"CalendarMouseOn\"); style.cursor=\"hand\"' onmouseout='javascript:ChangeClass(\"Calendar\");'";
			   					
			strDatesHTML +="<TD width='23' height='15' align='center' BGCOLOR='white' " + theclass + " >";
   			
			if(currentDay>=numDays) 
				strDatesHTML +="&nbsp;";
   			else if(currentDay>0){ 
    			++currentDay;
//    			strDatesHTML += "&nbsp" + ((todayYear == pYear) &&  (todayMonth == pMonth) && (currentDay == todayDay) ? "<b>"+currentDay+"</b>" : currentDay) + "&nbsp";
    			strDatesHTML += "&nbsp;" +  currentDay + "&nbsp;";
   			}
   			else if(i*7+j>=startDay)
   			{
	    		++currentDay;
//    			strDatesHTML += "&nbsp" + ((todayYear == pYear &&  todayMonth == pMonth && currentDay == todayDate+1) ? "<b>"+currentDay+"</b>" : currentDay) + "&nbsp";
    			strDatesHTML += "&nbsp;" + currentDay + "&nbsp;";
   			}
   			else strDatesHTML +="&nbsp;"
	   
   			strDatesHTML +="</TD>";
  		}
 		
		strDatesHTML +="</TR>";
 	
	}
	
	return strDatesHTML;
}


function HideCalendar(pCalendarObjID)
{
 	document.all[pCalendarObjID].detachEvent ("ondeactivate", eventHideCalendar);
	document.all[pCalendarObjID].style.visibility = "hidden";
	document.all[pCalendarObjID].style.posTop = 0;
	document.all[pCalendarObjID].style.posLeft = 0; 
	
	HideShowSelectElements(false);
}


function eventHideCalendar()
{
	for (var srcElem=event.srcElement; srcElem&&srcElem.tagName!='BODY'; srcElem=srcElem.parentElement){
		if (srcElem.tagName == 'DIV')
			break;
	}
	
	var closeOK = true;

	if (event.toElement == null)
		closeOk = false;
		
	for (var toElem=event.toElement; toElem&&toElem.tagName!='BODY'; toElem=toElem.parentElement){
		if (toElem == srcElem)
		{
			closeOK = false;
			break;
		}
	}

	if (closeOK)
		HideCalendar (srcElem.id);		
}

