// this file is for the calendarPicker
var objContainer;
var objInput;
var objXmlHttp;
var strCallBackFunction;
var strLanguagerer;
var strActioner;
var intError = 0;

// document.onmousemove	= HideCalendar;
document.onmousedown	= GetMouseCoordinates;

var mouseX = 0;
var mouseY = 0;
var strEv  = "";

function GetMouseCoordinates(e) {
	var IE = document.all ? true : false;

	if (!IE) document.captureEvents(Event.MOUSEMOVE);
	if (IE) {
		mouseX = event.clientX + document.body.scrollLeft;
		mouseY = event.clientY + document.body.scrollTop;
		strEv  = window.event.srcElement.id;
	} else {
		mouseX = e.pageX;
		mouseY = e.pageY;
		strEv  = e.target.id;
	}
};

function GetMouseClick(event) {
	if (objContainer.style.visibility == "visible") {
		objContainer.style.visibility 	= "hidden";
	}
};

function OpenCalendar(p_objContainer, p_strInputName, p_languager, p_actioner, p_strCallBackFunction, p_intDaysSelectable) {
	objContainer	= document.getElementById(p_objContainer);
	objInput		= document.getElementById(p_strInputName);

	if (p_actioner == '') {
        strActioner = 0;
    } else {
		strActioner = p_actioner;
	}

	if (p_languager == '') {
        p_languager = 0;
    }
	strLanguagerer = p_languager;

	if (!objContainer.style.visibility || objContainer.style.visibility == "hidden") {
		GetCalendarData(p_objContainer, p_intDaysSelectable);
		objContainer.style.visibility 	= "visible";



		/*
		 * Mod: Offset des Containers berücksichtigen
		 */

		objContainer.style.display = 'block';
		objContainer.style.marginTop = '20px';


	//	objContainer.style.top			= (mouseY + 10) + "px";
	//	objContainer.style.left			= (mouseX - 150) + "px";
	} else {
		objContainer.style.visibility 	= "hidden";

		objContainer.style.display = 'none';
	}

    if (p_strCallBackFunction) {
        strCallBackFunction = p_strCallBackFunction;
    }
};

function CloseCalendar(p_objContainer) {
	var objCalendar	= document.getElementById(p_objContainer);

	objCalendar.style.visibility 	= "hidden";
};

function GetCalendarData(p_objContainer, p_intDaysSelectable) {
    jQuery.ajax({
          type: "GET",
          url: "/fileadmin/assets/js/libraries/datepicker/ws_calendarPicker.php?L="+ strLanguagerer +"&action="+strActioner+"&date=" + objInput.value + "&container=" + p_objContainer + (p_intDaysSelectable ? "&daysSelectable=" + p_intDaysSelectable : ""),
          success: UpdateCalendarData,
          error: UpdateCalendarError
    });
};

function UpdateCalendarData(data, ioArgs) {
	objContainer.innerHTML = data;
};

function UpdateCalendarError(data, ioArgs) {
    if (intError >= 3) {
        location.reload(false);
    } else {
        intError++;
        alert("Please try again!");
    }
}



function SwitchMonth(p_strTargetDate, p_objContainer, p_intDaysSelectable) {
	objInput.value = p_strTargetDate;
	GetCalendarData(p_objContainer, p_intDaysSelectable);
};

function SelectDate(p_strDate) {
	objInput.value = p_strDate;
	objContainer.style.visibility 	= "hidden";

    if (strCallBackFunction != "") {
        eval(strCallBackFunction + ";");
    }
	rechne();
};

function getWeekDay(dd,mm,yyyy) {
        // Referenztag ist Samstag, der 01.01.0001.
        // Nun werden alle Tage bis zum Eingabe-Datum gez�hlt.
        // Alle-Vergangenen-Tage modulo 7 ergibt dann eine Zahl
        // zwischen 0 und 6, die einen Wochentag
        // zwischen Samstag und Freitag repr�sentiert.

        // grobe Z�hlung: Ganze Jahre +
        // Tage im aktuellen Monat + ganze Monate im aktuellen Jahr
        var month = "312831303130313130313031";
        var days = (yyyy-1)*365 + (dd-1);
        for(var i=0;i<mm-1;i++) days += month.substr(i*2,2)*1;

        // Kalenderreform: Sprung vom 04.10.1582 zum 15.10.1582
        if(yyyy>1582 || yyyy==1582 && (mm>10 || mm==10 && dd >4)) days -= 10;

        // Schaltjahre bis 1599: alle Jahre, die durch 4 teilbar sind.
        // Ab 1600: alle Jahre, die durch 4 teilbar sind,
        // au�er den vollen Jahrhunderten,
        // es sei denn, sie sind durch 400 teilbar.
        var leapyears = Math.floor(yyyy / 4);
        if(yyyy%4==0 && mm<3) leapyears--;
        if(yyyy>=1600) {
          leapyears -= Math.floor((yyyy-1600) / 100);
          leapyears += Math.floor((yyyy-1600) / 400);
          if(yyyy%100==0 && mm<3) {
            leapyears++;
            if(yyyy%400==0) leapyears--;
          }
        }
        days += leapyears;

        // Ergebnis anzeigen
        var week = "SaSoMoDiMiDoFr";
        //alert(week.substr(days%7*2,2)+",  "+ dd+"."+mm+"."+yyyy);
		var day = (days%7);
		return day;
      }

