var isMac = '';
if (navigator.platform == "MacPPC")	isMac = true;

//variable for popup-timer
var close;

//*****************************************************************
// Calendar-functions
//****************************************************************

activeDate = new Object;
activeDate.day = 0;
activeDate.month = 0;
activeDate.year = 2000;
activeDate.hilite = [0,0,0];

//daylist abbreviations
function getDayAbbrevs(){
	var dayHTML = '';
	for (var i = 0; i < daylist.length; i++) {
		dayHTML += '<span class="dayabbr">' + daylist[i] + '</span>';
	}
	return(dayHTML);

}

function openDatepicker(formName,dayInput,monthInput,yearInput,pickerPosition,pickerID){
	dpDayInput   = document.forms[formName][dayInput];
	dpMonthInput = document.forms[formName][monthInput];
	dpYearInput  = document.forms[formName][yearInput];
	dpPickerID=pickerID;
	initCalendar();
	//datepicker positioning relative to cal-button
	document.getElementById("calendarcontainer").style.left = (calButtonLeft + 84) + "px";
	//datepicker position under button
	if (pickerPosition == 1) {
		document.getElementById("calendarcontainer").style.top = (calButtonTop) + "px";
	}
	//datepicker position above button
	else {
		document.getElementById("calendarcontainer").style.top = (calButtonTop -128) + "px";
	}
	document.getElementById("calendarcontainer").style.display = "block";
	document.getElementById("calendarcontainer").style.visibility = "visible";

}

function checkCalButtonPos(whichMousePos, relativeParent){
	calButtonLeft = findPosX(whichMousePos);
	calButtonTop = findPosY(whichMousePos);
	if (relativeParent) {
		calButtonLeft -= findPosX(relativeParent);
		calButtonTop -= findPosY(relativeParent);
	}
}

//detect mouse-over image position for correct layer positioning

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	} else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	} else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function initCalendar(){
	//is date already chosen?
	if (dpDayInput.value != '') {
		activeDate.day = parseInt(dpDayInput.value,10);
		activeDate.month = parseInt(dpMonthInput.value,10);
		activeDate.year = parseInt(dpYearInput.value);
	} else {
		var actualDate = new Date()
		var month = actualDate.getMonth() + 1;
		var year = actualDate.getFullYear();
		var day = actualDate.getDate();
		activeDate.month = parseInt(month);
		activeDate.year = parseInt(year);
		activeDate.day = parseInt(day);
	}
	activeDate.hilite = [activeDate.day,activeDate.month,activeDate.year];
	var daylistHTML = getDayAbbrevs();
	document.getElementById("calendardays").innerHTML = daylistHTML;
	generateCalendarset();
	document.getElementById("calendarcontent").style.display = "block";
	document.getElementById("calendarcontent").style.visibility = "visible";
}

// get weekday and month-length
function getWeekDay(dd,mm,yyyy,date) {
	var timeObj=new Date();
	var time=Date.UTC(yyyy,(mm-1),dd);

	//monthlength
	var mLength = 31;
	if (mm == 4 || mm == 6 || mm == 9 || mm == 11) --mLength;
	if (mm == 2) {
		mLength = mLength - 3;
		if (yyyy % 4 == 0)
			mLength++;
		if (yyyy % 100 == 0)
			mLength--;
		if (yyyy % 400 == 0)
			mLength++;
	}

	if (yyyy<1582 || yyyy==1582 && (mm<10 || mm==10 && dd<15))
		time+=10*24*60*60*1000;
	for (k=0;k<4;k++) {
		for (year=1500-k*400;year>1200-k*400;year-=100) {
			if (yyyy<year || yyyy==year && mm<3) time-=24*60*60*1000;
		}
	}

	if (yyyy<100) time-=24*60*60*1000;

	//weekday (0-6)
	timeObj.setTime(time);
	var thisweekday = timeObj.getDay();
	var dateSet = new Array();
	dateSet = [thisweekday,mLength];
	return dateSet;

}


//generate complete year/month/day set (NEW FUNCTION)

function generateCalendarset(){
	document.getElementById("chosenmonthname").innerHTML = monthFullnames[activeDate.month -1];

	if(document.getElementById("chosenyearname")) {
		document.getElementById("chosenyearname").innerHTML = activeDate.year;
	} else {
		var theSelect = document.getElementById("chosenyearselect");
		//remove all previous options
		for(var i = theSelect.options.length-1; i >= 0 ; i--) {
			theSelect.options[i] = null;
		}
		for(var i = eval("calstart_" + dpPickerID); i <= eval("calstop_" + dpPickerID); i++) {
			theSelect.options[i - eval("calstart_" + dpPickerID)] = new Option(i,i, i == eval("calstart_" + dpPickerID), i == activeDate.year);
		}
	}
	var calendarSet = getWeekDay(1,activeDate.month,activeDate.year);
	//write html
	var spacerHTML = '';
	switch (calendarSet[0]) {
	case 0:
		spacerHTML += '<span class="number">&nbsp;</span><span class="number">&nbsp;</span><span class="number">&nbsp;</span><span class="number">&nbsp;</span><span class="number">&nbsp;</span><span class="number">&nbsp;</span>';
		break;
	case 1:
		break;
	case 2:
		spacerHTML += '<span class="number">&nbsp;</span>';
		break;
	case 3:
		spacerHTML += '<span class="number">&nbsp;</span><span class="number">&nbsp;</span>';
		break;
	case 4:
		spacerHTML += '<span class="number">&nbsp;</span><span class="number">&nbsp;</span><span class="number">&nbsp;</span>';
		break;
	case 5:
		spacerHTML += '<span class="number">&nbsp;</span><span class="number">&nbsp;</span><span class="number">&nbsp;</span><span class="number">&nbsp;</span>';
		break;
	case 6:
		spacerHTML += '<span class="number">&nbsp;</span><span class="number">&nbsp;</span><span class="number">&nbsp;</span><span class="number">&nbsp;</span><span class="number">&nbsp;</span>';
		break;
	}

	var monthHTML = '';
	monthHTML += spacerHTML;
	for (var y = 1; y < calendarSet[1] + 1; y++) {
		if (y < 10) {
			var numToString = "0" + y;
		} else {
			var numToString = y;
		}
		//insert day hilite
		if (y == activeDate.hilite[0] && activeDate.month == activeDate.hilite[1] && activeDate.year == activeDate.hilite[2]) {
			monthHTML += '<span class="number"><a class="numberlink_active" href="javascript:setDay(' + numToString + ')">' + numToString + '</a></span>';
		} else {
			monthHTML += '<span class="number"><a class="numberlink" href="javascript:setDay(' + numToString + ')">' + numToString + '</a></span>';
		}
	}
	document.getElementById("calendarcontent").innerHTML = monthHTML;
}

// monthswitch buttons

function switchMonthForward(){
	var mymonthcount = activeDate.month + 1;
	if (activeDate.month == 12) {
		var myyearcount = parseInt(activeDate.year + 1);
		if (myyearcount > eval("calstop_" + dpPickerID)) return;
		activeDate.month = 1;
		activeDate.year = parseInt(activeDate.year + 1);
	} else {
		activeDate.month = (activeDate.month + 1);
	}
	generateCalendarset();
	document.getElementById("monthlist").style.display = "none";
	document.getElementById("monthlist").style.visibility = "hidden";
	document.getElementById("yearlist").style.display = "none";
	document.getElementById("yearlist").style.visibility = "hidden";
}

function switchMonthBack(){
	var mymonthcount = activeDate.month - 1;
	if (activeDate.month == 1) {
		var myyearcount = parseInt(activeDate.year - 1);
		if (myyearcount < eval("calstart_" + dpPickerID))	return;
		activeDate.month = 12;
		activeDate.year = parseInt(activeDate.year - 1);
	} else {
		activeDate.month = (activeDate.month - 1);
	}
	generateCalendarset();
	document.getElementById("monthlist").style.display = "none";
	document.getElementById("monthlist").style.visibility = "hidden";
	document.getElementById("yearlist").style.display = "none";
	document.getElementById("yearlist").style.visibility = "hidden";
}


//popup functions

//mouseoverfunction showmonthlist / showyearlist

function showMonthlist(){
	document.getElementById("yearlist").style.display = "none";
	document.getElementById("yearlist").style.visibility = "hidden";
	var monthlistHTML = '';
	monthlistHTML += '<ul>';
	for (var i = 0; i < monthFullnames.length; i++) {
		if (monthFullnames[i] == monthFullnames[activeDate.month - 1]) {
			monthlistHTML += '<li class="active"><a href="javascript:setMonth(' + (i+1) + ')">' + monthFullnames[i] + '</a></li>';
		} else {
			monthlistHTML += '<li><a href="javascript:setMonth(' + (i+1) + ')">' + monthFullnames[i] + '</a></li>';
		}
	}
	monthlistHTML += '</ul>';
	document.getElementById("monthlist").innerHTML = monthlistHTML;
	document.getElementById("monthlist").style.display = "block";
	document.getElementById("monthlist").style.visibility = "visible";
}

function showYearlist(){
	document.getElementById("monthlist").style.display = "none";
	document.getElementById("monthlist").style.visibility = "hidden";
	var yearlistHTML = '';
	var totalYears = (eval("calstop_" + dpPickerID) - eval("calstart_" + dpPickerID)) + 1;
	var yearCounter = parseInt(eval("calstart_" + dpPickerID));
	yearlistHTML += '<ul>';
	for (var i = 0; i < totalYears; i++) {
		if (yearCounter == activeDate.year) {
			yearlistHTML += '<li class="active"><a href="javascript:setYear(' + yearCounter + ')">' + yearCounter + '</a></li>';
			yearCounter = yearCounter + 1;
		} else {
			yearlistHTML += '<li><a href="javascript:setYear(' + yearCounter + ')">' + yearCounter + '</a></li>';
			yearCounter = yearCounter + 1;
		}
	}
	yearlistHTML += '</ul>';
	document.getElementById("yearlist").innerHTML = yearlistHTML;
	document.getElementById("yearlist").style.display = "block";
	document.getElementById("yearlist").style.visibility = "visible";
}

//hilite functions mouseover active month/year

function setmonthHilite(){
	document.getElementById("chosenmonthname").style.color = "#9A0C39";

}

function resetmonthHilite(){
	document.getElementById("chosenmonthname").style.color = "#7F8789";

}

function setyearHilite(){
	document.getElementById("chosenyearname").style.color = "#9A0C39";

}

function resetyearHilite(){
	document.getElementById("chosenyearname").style.color = "#7F8789";

}


//clickfunction for months in monthlist
function setMonth(whichMonth){
	activeDate.month = parseInt(whichMonth,10);
	document.getElementById("monthlist").style.display = "none";
	document.getElementById("monthlist").style.visibility = "hidden";
	generateCalendarset();
}

//clickfunction for year in yearlist
function setYear(whichYear){
	activeDate.year = whichYear;
	document.getElementById("yearlist").style.display = "none";
	document.getElementById("yearlist").style.visibility = "hidden";
	generateCalendarset();
}

//clickfunction for days in calendar
function setDay(whichDay){
	activeDate.day = parseInt(whichDay,10);
	document.getElementById("yearlist").style.display = "none";
	document.getElementById("yearlist").style.visibility = "hidden";
	document.getElementById("monthlist").style.display = "none";
	document.getElementById("monthlist").style.visibility = "hidden";
	document.getElementById("calendarcontainer").style.display = "none";
	document.getElementById("calendarcontainer").style.visibility = "hidden";
	if (activeDate.day < 10) {
		var dayString = "0" + activeDate.day;
	} else {
		var dayString = activeDate.day;
	}
	if (activeDate.month < 10) {
		var monthString = "0" + activeDate.month;
	} else {
		var monthString = activeDate.month;
	}
	dpDayInput.value = dayString;
	dpMonthInput.value = monthString;
	dpYearInput.value = activeDate.year;
}
