var pathToImages = '/js/calendar/images/';
var selectBoxHighlightColor = '#D60808';

var startWeek = 0;

var todayStringFormat = '[todayString] [year]/[monthString]/[day] ([UCFdayString])';

var monthArray = ['1','2','3','4','5','6','7','8','9','10','11','12'];
var monthArrayShort = ['1','2','3','4','5','6','7','8','9','10','11','12'];
var dayArray = ['日','月','火','水','木','金','土'];
var todayString = '今日';

var speedOfSelectBoxSliding = 200;
var intervalSelectBox_minutes = 5;

var calendar_offsetTop = 0;
var calendar_offsetLeft = 0;



var calendarDiv = false;

var MSIE  = false;
var Opera = false;
if(0<=navigator.userAgent.indexOf('MSIE')) {MSIE=true;}
else if(0<=navigator.userAgent.indexOf('Opera')) {Opera=true;}

var daysInMonthArray = [31,28,31,30,31,30,31,31,30,31,30,31];
var currentMonth;
var currentYear;
var currentHour;
var currentMinute;
var calendarContentDiv;
var returnDateTo;
var returnFormat;
var activeSelectBoxMonth;
var activeSelectBoxYear;
var activeSelectBoxHour;
var activeSelectBoxMinute;

var iframeObj  = false;
var iframeObj2 = false;

function EIS_FIX_EI1(where2fixit)
{
	if(!iframeObj2)return;
	iframeObj2.style.display = 'block';
	iframeObj2.style.height=el(where2fixit).offsetHeight+1;
	iframeObj2.style.width=el(where2fixit).offsetWidth;
	iframeObj2.style.left=getLeftPos(el(where2fixit))+1-calendar_offsetLeft;
	iframeObj2.style.top=getTopPos(el(where2fixit))-el(where2fixit).offsetHeight-calendar_offsetTop;
}

function EIS_Hide_Frame()
{
	if(iframeObj2)iframeObj2.style.display = 'none';
}

var returnDateToYear;
var returnDateToMonth;
var returnDateToDay;
var returnDateToHour;
var returnDateToMinute;

var inputYear;
var inputMonth;
var inputDay;
var inputHour;
var inputMinute;
var calendarDisplayTime = false;
var calendarPostionAlign = 'left';
var limitMinDate;
var limitMaxDate;

var selectBoxMovementInProgress = false;
var activeSelectBox = false;

function cancelCalendarEvent()
{
	return false;
}

function isLeapYear(inputYear)
{
	if(inputYear%400==0||(inputYear%4==0&&inputYear%100!=0)) return true;
	return false;
}

var activeSelectBoxMonth = false;
var activeSelectBoxDirection = false;

function highlightMonthYear()
{
	if(activeSelectBoxMonth)activeSelectBoxMonth.className='';
	activeSelectBox = this;

	if(this.className=='monthYearActive'){
		this.className='';
	}else{
		this.className = 'monthYearActive';
		activeSelectBoxMonth = this;
	}

	if(this.innerHTML.indexOf('-')>=0 || this.innerHTML.indexOf('+')>=0){
		if(this.className=='monthYearActive')
			selectBoxMovementInProgress = true;
		else 
			selectBoxMovementInProgress = false;
		if(this.innerHTML.indexOf('-')>=0)activeSelectBoxDirection = -1; else activeSelectBoxDirection = 1;

	}else selectBoxMovementInProgress = false;
}

function showMonthDropDown()
{
	if(el('monthDropDown').style.display=='block'){
		el('monthDropDown').style.display='none';
				EIS_Hide_Frame();
	}else{
		el('monthDropDown').style.display='block';
		el('yearDropDown').style.display='none';
		el('hourDropDown').style.display='none';
		el('minuteDropDown').style.display='none';
			if (MSIE)
		{ EIS_FIX_EI1('monthDropDown')}
		
		var div = el('monthDropDown');
		var subDivs = div.getElementsByTagName('DIV');
		for(var no=0;no<subDivs.length;no++){
			if(subDivs[no].innerHTML == currentMonth+1) subDivs[no].style.color = selectBoxHighlightColor;
			else subDivs[no].style.color = null;
		}
	}
}

function showYearDropDown()
{
	if(el('yearDropDown').style.display=='block'){
		el('yearDropDown').style.display='none';
				EIS_Hide_Frame();
	}else{
		el('yearDropDown').style.display='block';
		el('monthDropDown').style.display='none';
		el('hourDropDown').style.display='none';
		el('minuteDropDown').style.display='none';
			if (MSIE)
		{ EIS_FIX_EI1('yearDropDown')}
		
		var div = el('yearDropDown');
		var subDivs = div.getElementsByTagName('DIV');
		for(var no=0;no<subDivs.length;no++){
			if(subDivs[no].innerHTML == currentYear) subDivs[no].style.color = selectBoxHighlightColor;
			else subDivs[no].style.color = null;
		}
	}
}

function showHourDropDown()
{
	if(el('hourDropDown').style.display=='block'){
		el('hourDropDown').style.display='none';
				EIS_Hide_Frame();
	}else{
		el('hourDropDown').style.display='block';
		el('monthDropDown').style.display='none';
		el('yearDropDown').style.display='none';
		el('minuteDropDown').style.display='none';
				if (MSIE)
		{ EIS_FIX_EI1('hourDropDown')}
	}
}

function showMinuteDropDown()
{
	if(el('minuteDropDown').style.display=='block'){
		el('minuteDropDown').style.display='none';
				EIS_Hide_Frame();
	}else{
		el('minuteDropDown').style.display='block';
		el('monthDropDown').style.display='none';
		el('yearDropDown').style.display='none';
		el('hourDropDown').style.display='none';
				if (MSIE)
		{ EIS_FIX_EI1('minuteDropDown')}
	}
}

function selectMonth()
{
	el('calendar_month_txt').innerHTML = this.innerHTML
	currentMonth = this.id.replace(/[^\d]/g,'');

	el('monthDropDown').style.display='none';
				EIS_Hide_Frame();
	for(var no=0;no<monthArray.length;no++){
		el('monthDiv_'+no).style.color='';
	}
	this.style.color = selectBoxHighlightColor;
	activeSelectBoxMonth = this;
	writeCalendarContent();
}

function selectHour()
{
	el('calendar_hour_txt').innerHTML = this.innerHTML
	currentHour = this.innerHTML.replace(/[^\d]/g,'');
	el('hourDropDown').style.display='none';
				EIS_Hide_Frame();
	if(activeSelectBoxHour){
		activeSelectBoxHour.style.color='';
	}
	activeSelectBoxHour=this;
	this.style.color = selectBoxHighlightColor;
}

function selectMinute()
{
	el('calendar_minute_txt').innerHTML = this.innerHTML
	currentMinute = this.innerHTML.replace(/[^\d]/g,'');
	el('minuteDropDown').style.display='none';
				EIS_Hide_Frame();
	if(activeSelectBoxMinute){
		activeSelectBoxMinute.style.color='';
	}
	activeSelectBoxMinute=this;
	this.style.color = selectBoxHighlightColor;
}

function selectYear()
{
	el('calendar_year_txt').innerHTML = this.innerHTML
	currentYear = this.innerHTML.replace(/[^\d]/g,'');
	el('yearDropDown').style.display='none';
				EIS_Hide_Frame();
	if(activeSelectBoxYear){
		activeSelectBoxYear.style.color='';
	}
	activeSelectBoxYear=this;
	this.style.color = selectBoxHighlightColor;
	writeCalendarContent();
}

function switchMonth()
{
	if(this.src.indexOf('left')>=0){
		currentMonth=currentMonth-1;
		if(currentMonth<0){
			currentMonth=11;
			currentYear=currentYear-1;
		}
	}else{
		currentMonth=currentMonth+1;
		if(currentMonth>11){
			currentMonth=0;
			currentYear=currentYear/1+1;
		}
	}

	writeCalendarContent();
}

function createMonthDiv()
{
	var div = document.createElement('DIV');
	div.className='monthYearPicker';
	div.id = 'monthPicker';

	for(var no=0;no<monthArray.length;no++){
		var subDiv = document.createElement('DIV');
		subDiv.innerHTML = monthArray[no];
		subDiv.onmouseover = highlightMonthYear;
		subDiv.onmouseout = highlightMonthYear;
		subDiv.onclick = selectMonth;
		subDiv.id = 'monthDiv_' + no;
		subDiv.style.width = '56px';
		subDiv.onselectstart = cancelCalendarEvent;
		div.appendChild(subDiv);
		if(currentMonth && currentMonth==no){
			subDiv.style.color = selectBoxHighlightColor;
			activeSelectBoxMonth = subDiv;
		}
	}
	return div;
}

function changeSelectBoxYear(e,inputObj)
{
	if(!inputObj)inputObj =this;
	var yearItems = inputObj.parentNode.getElementsByTagName('DIV');
	if(inputObj.innerHTML.indexOf('-')>=0){
		var startYear = yearItems[1].innerHTML/1-1;
		if(limitMinDate != false && yearItems[yearItems.length-2].innerHTML/1 <= limitMinDate.getFullYear()) return;
		if(activeSelectBoxYear){
			activeSelectBoxYear.style.color='';
		}
	}else{
		var startYear = yearItems[1].innerHTML/1+1;
		if(limitMaxDate != false && limitMaxDate.getFullYear() <= yearItems[1].innerHTML/1) return;
		if(activeSelectBoxYear){
			activeSelectBoxYear.style.color='';
		}
	}

	for(var no=1;no<yearItems.length-1;no++){
		yearItems[no].innerHTML = startYear+no-1;
		yearItems[no].id = 'yearDiv' + (startYear+no-1);
		if((limitMinDate != false && limitMaxDate != false && limitMinDate.getFullYear() <= (startYear+no-1) && (startYear+no-1) <= limitMaxDate.getFullYear())
				|| (limitMinDate != false && limitMaxDate == false && limitMinDate.getFullYear() <= (startYear+no-1))
				|| (limitMinDate == false && limitMaxDate != false && (startYear+no-1) <= limitMaxDate.getFullYear())
				|| (limitMinDate == false && limitMaxDate == false)){
			yearItems[no].style.color=null;
			yearItems[no].onmouseover = highlightMonthYear;
			yearItems[no].onmouseout = highlightMonthYear;
			yearItems[no].onclick = selectYear;
			yearItems[no].className=null;
		}else{
			yearItems[no].style.color=null;
			yearItems[no].onmouseover=null;
			yearItems[no].onmouseout=null;
			yearItems[no].onclick=null;
			yearItems[no].className='year_div_disable';
		}
	}
	
	if(activeSelectBoxYear){
		activeSelectBoxYear.style.color='';
		if(document.getElementById('yearDiv'+currentYear)){
			activeSelectBoxYear = document.getElementById('yearDiv'+currentYear);
			activeSelectBoxYear.style.color=selectBoxHighlightColor;;
		}
	}
}

function changeSelectBoxHour(e,inputObj)
{
	if(!inputObj)inputObj = this;

	var hourItems = inputObj.parentNode.getElementsByTagName('DIV');
	if(inputObj.innerHTML.indexOf('-')>=0){
		var startHour = hourItems[1].innerHTML/1 -1;
		if(startHour<0)startHour=0;
		if(activeSelectBoxHour){
			activeSelectBoxHour.style.color='';
		}
	}else{
		var startHour = hourItems[1].innerHTML/1 +1;
		if(startHour>14)startHour = 14;
		if(activeSelectBoxHour){
			activeSelectBoxHour.style.color='';

		}
	}
	var prefix = '';
	for(var no=1;no<hourItems.length-1;no++){
		if((startHour/1 + no/1) < 11)prefix = '0'; else prefix = '';
		hourItems[no].innerHTML = prefix + (startHour+no-1);

		hourItems[no].id = 'hourDiv' + (startHour/1+no/1-1);

	}
	if(activeSelectBoxHour){
		activeSelectBoxHour.style.color='';
		if(el('hourDiv'+currentHour)){
			activeSelectBoxHour = el('hourDiv'+currentHour);
			activeSelectBoxHour.style.color=selectBoxHighlightColor;;
		}
	}
}

function updateYearDiv()
{
	var div = el('yearDropDown');
	var yearItems = div.getElementsByTagName('DIV');
	for(var no=1;no<yearItems.length-1;no++){
		yearItems[no].innerHTML = currentYear/1-6+no;
		if((limitMinDate != false && limitMaxDate != false && limitMinDate.getFullYear() <= (currentYear/1-6+no) && (currentYear/1-6+no) <= limitMaxDate.getFullYear())
				|| (limitMinDate != false && limitMaxDate == false && limitMinDate.getFullYear() <= (currentYear/1-6+no))
				|| (limitMinDate == false && limitMaxDate != false && (currentYear/1-6+no) <= limitMaxDate.getFullYear())
				|| (limitMinDate == false && limitMaxDate == false)){
			yearItems[no].onmouseover = highlightMonthYear;
			yearItems[no].onmouseout = highlightMonthYear;
			yearItems[no].onclick = selectYear;
			yearItems[no].className=null;
			
			if(currentYear==(currentYear/1-6+no)){
				yearItems[no].style.color = selectBoxHighlightColor;
				activeSelectBoxYear = yearItems[no];
			}else{
				yearItems[no].style.color = '';
			}
		}else{
			yearItems[no].onmouseover=null;
			yearItems[no].onmouseout=null;
			yearItems[no].onclick=null;
			yearItems[no].className='year_div_disable';
		}
	}
}

function updateMonthDiv()
{
	for(no=0;no<12;no++){
		el('monthDiv_' + no).style.color = '';
	}
	el('monthDiv_' + currentMonth).style.color = selectBoxHighlightColor;
	activeSelectBoxMonth = 	el('monthDiv_' + currentMonth);
}

function updateHourDiv()
{
	var div = el('hourDropDown');
	var hourItems = div.getElementsByTagName('DIV');

	var addHours = 0;
	if((currentHour/1 -6 + 1)<0){
		addHours = 	(currentHour/1 -6 + 1)*-1;
	}
	for(var no=1;no<hourItems.length-1;no++){
		var prefix='';
		if((currentHour/1 -6 + no + addHours) < 10)prefix='0';
		hourItems[no].innerHTML = prefix + (currentHour/1 -6 + no + addHours);
		if(currentHour==(currentHour/1 -6 + no)){
			hourItems[no].style.color = selectBoxHighlightColor;
			activeSelectBoxHour = hourItems[no];
		}else{
			hourItems[no].style.color = '';
		}
	}
}

function updateMinuteDiv()
{
	for(no=0;no<60;no+=intervalSelectBox_minutes){
		var prefix = '';
		if(no<10)prefix = '0';

		el('minuteDiv_' + prefix + no).style.color = '';
	}
	if(el('minuteDiv_' + currentMinute)){
		el('minuteDiv_' + currentMinute).style.color = selectBoxHighlightColor;
		activeSelectBoxMinute = el('minuteDiv_' + currentMinute);
	}
}

function createYearDiv()
{
	if(!el('yearDropDown')){
		var div = document.createElement('DIV');
		div.className='monthYearPicker';
	}else{
		var div = el('yearDropDown');
		var subDivs = div.getElementsByTagName('DIV');
		for(var no=0;no<subDivs.length;no++){
			subDivs[no].parentNode.removeChild(subDivs[no]);
		}
	}

	var d = new Date();
	if(currentYear){
		d.setFullYear(currentYear);
	}

	var startYear = d.getFullYear()/1 - 5;

	var subDiv = document.createElement('DIV');
	subDiv.innerHTML = '&nbsp;&nbsp;-&nbsp;&nbsp;';
	subDiv.onclick = changeSelectBoxYear;
	subDiv.onmouseover = highlightMonthYear;
	subDiv.onmouseout = function(){ selectBoxMovementInProgress = false;};
	subDiv.onselectstart = cancelCalendarEvent;
	div.appendChild(subDiv);

	for(var no=startYear;no<(startYear+10);no++){
		var subDiv = document.createElement('DIV');
		subDiv.innerHTML = no;
		if((limitMinDate != false && limitMaxDate != false && limitMinDate.getFullYear() <= no && no <= limitMaxDate.getFullYear())
				|| (limitMinDate != false && limitMaxDate == false && limitMinDate.getFullYear() <= no)
				|| (limitMinDate == false && limitMaxDate != false && no <= limitMaxDate.getFullYear())
				|| (limitMinDate == false && limitMaxDate == false)){
			subDiv.onmouseover = highlightMonthYear;
			subDiv.onmouseout = highlightMonthYear;
			subDiv.onclick = selectYear;
		}else{
			subDiv.onmouseover=null;
			subDiv.onmouseout=null;
			subDiv.onclick=null;
			subDiv.className='year_div_disable';
		}
		
		subDiv.id = 'yearDiv' + no;
		subDiv.onselectstart = cancelCalendarEvent;
		div.appendChild(subDiv);
		if(currentYear && currentYear==no){
			subDiv.style.color = selectBoxHighlightColor;
			activeSelectBoxYear = subDiv;
		}
	}
	
	var subDiv = document.createElement('DIV');
	subDiv.innerHTML = '&nbsp;&nbsp;+&nbsp;&nbsp;';
	subDiv.onclick = changeSelectBoxYear;
	subDiv.onmouseover = highlightMonthYear;
	subDiv.onmouseout = function(){ selectBoxMovementInProgress = false;};
	subDiv.onselectstart = cancelCalendarEvent;
	div.appendChild(subDiv);
	
	return div;
}

/* This function creates the hour div at the bottom bar */

function slideCalendarSelectBox()
{
	if(selectBoxMovementInProgress){
		if(activeSelectBox.parentNode.id=='hourDropDown'){
			changeSelectBoxHour(false,activeSelectBox);
		}
		if(activeSelectBox.parentNode.id=='yearDropDown'){
			changeSelectBoxYear(false,activeSelectBox);
		}
	}
	setTimeout('slideCalendarSelectBox()',speedOfSelectBoxSliding);

}

function createHourDiv()
{
	if(!el('hourDropDown')){
		var div = document.createElement('DIV');
		div.className='monthYearPicker';
	}else{
		var div = el('hourDropDown');
		var subDivs = div.getElementsByTagName('DIV');
		for(var no=0;no<subDivs.length;no++){
			subDivs[no].parentNode.removeChild(subDivs[no]);
		}
	}

	if(!currentHour)currentHour=0;
	var startHour = currentHour/1;
	if(startHour>14)startHour=14;

	var subDiv = document.createElement('DIV');
	subDiv.innerHTML = '&nbsp;&nbsp;-&nbsp;&nbsp;';
	subDiv.onclick = changeSelectBoxHour;
	subDiv.onmouseover = highlightMonthYear;
	subDiv.onmouseout = function(){ selectBoxMovementInProgress = false;};
	subDiv.onselectstart = cancelCalendarEvent;
	div.appendChild(subDiv);

	for(var no=startHour;no<startHour+10;no++){
		var prefix = '';
		if(no/1<10)prefix='0';
		var subDiv = document.createElement('DIV');
		subDiv.innerHTML = prefix + no;
		subDiv.onmouseover = highlightMonthYear;
		subDiv.onmouseout = highlightMonthYear;
		subDiv.onclick = selectHour;
		subDiv.id = 'hourDiv' + no;
		subDiv.onselectstart = cancelCalendarEvent;
		div.appendChild(subDiv);
		if(currentYear && currentYear==no){
			subDiv.style.color = selectBoxHighlightColor;
			activeSelectBoxYear = subDiv;
		}
	}
	var subDiv = document.createElement('DIV');
	subDiv.innerHTML = '&nbsp;&nbsp;+&nbsp;&nbsp;';
	subDiv.onclick = changeSelectBoxHour;
	subDiv.onmouseover = highlightMonthYear;
	subDiv.onmouseout = function(){ selectBoxMovementInProgress = false;};
	subDiv.onselectstart = cancelCalendarEvent;
	div.appendChild(subDiv);

	return div;
}

/* This function creates the minute div at the bottom bar */

function createMinuteDiv()
{
	if(!el('minuteDropDown')){
		var div = document.createElement('DIV');
		div.className='monthYearPicker';
	}else{
		var div = el('minuteDropDown');
		var subDivs = div.getElementsByTagName('DIV');
		for(var no=0;no<subDivs.length;no++){
			subDivs[no].parentNode.removeChild(subDivs[no]);
		}
	}
	var startMinute = 0;
	var prefix = '';
	for(var no=startMinute;no<60;no+=intervalSelectBox_minutes){
		if(no<10)prefix='0'; else prefix = '';
		var subDiv = document.createElement('DIV');
		subDiv.innerHTML = prefix + no;
		subDiv.onmouseover = highlightMonthYear;
		subDiv.onmouseout = highlightMonthYear;
		subDiv.onclick = selectMinute;
		subDiv.id = 'minuteDiv_' + prefix + no;
		subDiv.onselectstart = cancelCalendarEvent;
		div.appendChild(subDiv);
		if(currentYear && currentYear==no){
			subDiv.style.color = selectBoxHighlightColor;
			activeSelectBoxYear = subDiv;
		}
	}
	return div;
}

function highlightSelect()
{
	if(this.className=='selectBoxTime'){
		this.className = 'selectBoxTimeOver';
		this.getElementsByTagName('IMG')[0].src = pathToImages + 'down_time_over.gif';
	}else if(this.className=='selectBoxTimeOver'){
		this.className = 'selectBoxTime';
		this.getElementsByTagName('IMG')[0].src = pathToImages + 'down_time.gif';
	}

	if(this.className=='selectBox'){
		this.className = 'selectBoxOver';
		this.getElementsByTagName('IMG')[0].src = pathToImages + 'down_over.gif';
	}else if(this.className=='selectBoxOver'){
		this.className = 'selectBox';
		this.getElementsByTagName('IMG')[0].src = pathToImages + 'down.gif';
	}

}

function highlightArrow()
{
	if(this.src.indexOf('over')>=0){
		if(this.src.indexOf('left')>=0)this.src = pathToImages + 'left.gif';
		if(this.src.indexOf('right')>=0)this.src = pathToImages + 'right.gif';
	}else{
		if(this.src.indexOf('left')>=0)this.src = pathToImages + 'left_over.gif';
		if(this.src.indexOf('right')>=0)this.src = pathToImages + 'right_over.gif';
	}
}

function highlightDayNumber()
{
	if (0<=this.className.indexOf('disable')) return;
	
	var prefix='';
	if (0<=this.className.indexOf('active')) prefix='active_';
	
	if(0<=this.className.indexOf('over')){
		this.className = 'calendar_'+prefix+'day';
	}else{
		this.className = 'calendar_'+prefix+'day_over';
	}
}

function highlightClose()
{
	if(this.src.indexOf('over')>=0){
		this.src = pathToImages + 'close.gif';
	}else{
		this.src = pathToImages + 'close_over.gif';
	}
}

function closeCalendar()
{
	el('yearDropDown').style.display='none';
	el('monthDropDown').style.display='none';
	el('hourDropDown').style.display='none';
	el('minuteDropDown').style.display='none';

	calendarDiv.style.display='none';
	if(iframeObj){
		iframeObj.style.display='none';
		EIS_Hide_Frame();
	}
	if(activeSelectBoxMonth)activeSelectBoxMonth.className='';
	if(activeSelectBoxYear)activeSelectBoxYear.className='';
}

function writeTopBar()
{
	var topBar = document.createElement('DIV');
	topBar.className = 'topBar';
	topBar.id = 'topBar';
	calendarDiv.appendChild(topBar);

	// Left arrow
	var leftDiv = document.createElement('DIV');
	leftDiv.style.marginRight = '1px';
	var img = document.createElement('IMG');
	img.src = pathToImages + 'left.gif';
	img.width='16';
	img.height='16';
	img.onmouseover = highlightArrow;
	img.onclick = switchMonth;
	img.onmouseout = highlightArrow;
	leftDiv.appendChild(img);
	topBar.appendChild(leftDiv);
	if(Opera)leftDiv.style.width = '16px';

	// Right arrow
	var rightDiv = document.createElement('DIV');
	rightDiv.style.marginRight = '1px';
	var img = document.createElement('IMG');
	img.src = pathToImages + 'right.gif';
	img.width='16';
	img.height='16';
	img.onclick = switchMonth;
	img.onmouseover = highlightArrow;
	img.onmouseout = highlightArrow;
	rightDiv.appendChild(img);
	if(Opera)rightDiv.style.width = '16px';
	topBar.appendChild(rightDiv);

	// Month selector
	var monthDiv = document.createElement('DIV');
	monthDiv.id = 'monthSelect';
	monthDiv.onmouseover = highlightSelect;
	monthDiv.onmouseout = highlightSelect;
	monthDiv.onclick = showMonthDropDown;
	var span = document.createElement('SPAN');
	span.innerHTML = monthArray[currentMonth];
	span.id = 'calendar_month_txt';
	monthDiv.appendChild(span);

	var img = document.createElement('IMG');
	img.src = pathToImages + 'down.gif';
	img.width='14';
	img.height='11';
	img.style.position = 'absolute';
	img.style.right = '0px';
	monthDiv.appendChild(img);
	monthDiv.className = 'selectBox';
	if(Opera){
		img.style.cssText = 'float:right;position:relative';
		img.style.position = 'relative';
		img.style.styleFloat = 'right';
	}
	topBar.appendChild(monthDiv);

	var monthPicker = createMonthDiv();
	monthPicker.style.left = '37px';
	monthPicker.style.top = monthDiv.offsetTop + monthDiv.offsetHeight + 1 + 'px';
	monthPicker.style.width ='60px';
	monthPicker.id = 'monthDropDown';

	calendarDiv.appendChild(monthPicker);

	// Year selector
	var yearDiv = document.createElement('DIV');
	yearDiv.onmouseover = highlightSelect;
	yearDiv.onmouseout = highlightSelect;
	yearDiv.onclick = showYearDropDown;
	var span = document.createElement('SPAN');
	span.innerHTML = currentYear;
	span.id = 'calendar_year_txt';
	yearDiv.appendChild(span);
	topBar.appendChild(yearDiv);

	var img = document.createElement('IMG');
	img.src = pathToImages + 'down.gif';
	img.width='14';
	img.height='11';
	yearDiv.appendChild(img);
	yearDiv.className = 'selectBox';

	if(Opera){
		yearDiv.style.width = '50px';
		img.style.cssText = 'float:right';
		img.style.position = 'relative';
		img.style.styleFloat = 'right';
	}

	var yearPicker = createYearDiv();
	yearPicker.style.left = '113px';
	yearPicker.style.top = monthDiv.offsetTop + monthDiv.offsetHeight + 1 + 'px';
	yearPicker.style.width = '35px';
	yearPicker.id = 'yearDropDown';
	calendarDiv.appendChild(yearPicker);

	var img = document.createElement('IMG');
	img.src = pathToImages + 'close.gif';
	img.width='16';
	img.height='16';
	img.style.styleFloat = 'right';
	img.onmouseover = highlightClose;
	img.onmouseout = highlightClose;
	img.onclick = closeCalendar;
	topBar.appendChild(img);
	if(!document.all){
		img.style.position = 'absolute';
		img.style.right = '2px';
	}
}

function writeCalendarContent()
{
	var calendarContentDivExists = true;
	if(!calendarContentDiv){
		calendarContentDiv = document.createElement('DIV');
		calendarDiv.appendChild(calendarContentDiv);
		calendarContentDivExists = false;
	}
	currentMonth = currentMonth/1;
	var d = new Date();

	d.setFullYear(currentYear);
	d.setDate(1);
	d.setMonth(currentMonth);

	var dayStartOfMonth = d.getDay();
	// MOD:ja
	if (dayStartOfMonth==startWeek) {
		dayStartOfMonth=0;
	} else if (dayStartOfMonth-startWeek<0) {
		dayStartOfMonth=7-startWeek;
	}

	el('calendar_year_txt').innerHTML = currentYear;
	el('calendar_month_txt').innerHTML = monthArray[currentMonth];
	el('calendar_hour_txt').innerHTML = currentHour;
	el('calendar_minute_txt').innerHTML = currentMinute;

	var existingTable = calendarContentDiv.getElementsByTagName('TABLE');
	if(existingTable.length>0){
		calendarContentDiv.removeChild(existingTable[0]);
	}

	var calTable = document.createElement('TABLE');
	calTable.width = '100%';
	calTable.cellSpacing = '0';
	calendarContentDiv.appendChild(calTable);

	var calTBody = document.createElement('TBODY');
	calTable.appendChild(calTBody);
	var row = calTBody.insertRow(-1);
	row.className = 'calendar_week_row';

	// MOD:ja
	for (var no=startWeek;no<(dayArray.length+startWeek);no++) {
		var cell = row.insertCell(-1);
		cell.className = 'calendar_week_cell_'+no;
		if (no < dayArray.length) {
			cell.innerHTML = dayArray[no];
		} else {
			cell.innerHTML = dayArray[no-7];
		}
	}

	var row = calTBody.insertRow(-1);

	// MOD:ja
	for (var no=0;no<dayStartOfMonth;no++) {
		var cell = row.insertCell(-1);
		cell.className='none_day';
		cell.innerHTML = '&nbsp;';
	}

	var daysInMonth = daysInMonthArray[currentMonth];
	if(daysInMonth==28){
		if(isLeapYear(currentYear))daysInMonth=29;
	}

	var colCounter = dayStartOfMonth;

	for(var no=1;no<=daysInMonth;no++){
		d.setDate(no);
		if(colCounter>0 && colCounter%7==0){
			var row = calTBody.insertRow(-1);
			colCounter = 0;
		}
		var cell = row.insertCell(-1);
		cell.innerHTML = no;
		cell.onmouseover = highlightDayNumber;
		cell.onmouseout = highlightDayNumber;
		
		var compDate = new Date(currentYear, currentMonth, no);
		if((limitMinDate != false && limitMaxDate != false && limitMinDate <= compDate && compDate <= limitMaxDate)
				|| (limitMinDate != false && limitMaxDate == false && limitMinDate <= compDate)
				|| (limitMinDate == false && limitMaxDate != false && compDate <= limitMaxDate)
				|| (limitMinDate == false && limitMaxDate == false)){
			if(currentYear==inputYear && currentMonth == inputMonth && no==inputDay){
				cell.className = 'calendar_active_day';
			} else {
				cell.className = 'calendar_day';
			}
			cell.onclick = pickDate;
		}else{
			cell.className = 'calendar_disable_day';
		}
		
		colCounter++;
	}

	if(!document.all){
		if(calendarContentDiv.offsetHeight)
			el('topBar').style.top = calendarContentDiv.offsetHeight + el('timeBar').offsetHeight + el('topBar').offsetHeight -1 + 'px';
		else{
			el('topBar').style.top = '';
			el('topBar').style.bottom = '0px';
		}

	}

	if(iframeObj){
		if(!calendarContentDivExists) {
			setTimeout('resizeIframe()',350);
		} else {
			setTimeout('resizeIframe()',10);
		}
	}
}

function resizeIframe()
{
	iframeObj.style.width = calendarDiv.offsetWidth + 'px';
	iframeObj.style.height = calendarDiv.offsetHeight + 'px';
	iframeObj2.style.width = calendarDiv.offsetWidth + 'px';
	iframeObj2.style.height = calendarDiv.offsetHeight + 'px';
}

function pickTodaysDate()
{
	var d = new Date();
	
	if((limitMinDate != false && limitMaxDate != false && limitMinDate <= d && d <= limitMaxDate)
		|| (limitMinDate != false && limitMaxDate == false && limitMinDate.getFullYear() <= d.getFullYear() && limitMinDate.getMonth() <= d.getMonth() && limitMinDate.getDate() <= d.getDate())
		|| (limitMinDate == false && limitMaxDate != false && d.getFullYear() <= limitMaxDate.getFullYear() && d.getMonth() <= limitMaxDate.getMonth() && d.getDate() <= limitMaxDate.getDate())
		|| (limitMinDate == false && limitMaxDate == false)){
	}else{
		return;
	}
	
	currentMonth = d.getMonth();
	currentYear = d.getFullYear();
	pickDate(false,d.getDate());
}

function pickDate(e,inputDay)
{
	var month = currentMonth/1+1;
	if(month<10)month = '0' + month;
	var day;
	if(!inputDay && this)day = this.innerHTML; else day = inputDay;

	if(day/1<10)day = '0' + day;
	if(returnFormat){
		returnFormat = returnFormat.replace('dd',day);
		returnFormat = returnFormat.replace('mm',month);
		returnFormat = returnFormat.replace('yyyy',currentYear);
		returnFormat = returnFormat.replace('hh',currentHour);
		returnFormat = returnFormat.replace('ii',currentMinute);
		returnFormat = returnFormat.replace('d',day/1);
		returnFormat = returnFormat.replace('m',month/1);

		returnDateTo.value = returnFormat;
		try{
			returnDateTo.onchange();
		}catch(e){

		}
	}else{
		for(var no=0;no<returnDateToYear.options.length;no++){
			if(returnDateToYear.options[no].value==currentYear){
				returnDateToYear.selectedIndex=no;
				break;
			}
		}
		for(var no=0;no<returnDateToMonth.options.length;no++){
			if(returnDateToMonth.options[no].value==parseInt(month,10)){
				returnDateToMonth.selectedIndex=no;
				break;
			}
		}
		for(var no=0;no<returnDateToDay.options.length;no++){
			if(returnDateToDay.options[no].value==parseInt(day,10)){
				returnDateToDay.selectedIndex=no;
				break;
			}
		}
		if(calendarDisplayTime){
			for(var no=0;no<returnDateToHour.options.length;no++){
				if(returnDateToHour.options[no].value==parseInt(currentHour,10)){
					returnDateToHour.selectedIndex=no;
					break;
				}
			}
			for(var no=0;no<returnDateToMinute.options.length;no++){
				if(returnDateToMinute.options[no].value==parseInt(currentMinute,10)){
					returnDateToMinute.selectedIndex=no;
					break;
				}
			}
		}
	}
	closeCalendar();
}

function writeTimeBar()
{
	var timeBar = document.createElement('DIV');
	timeBar.id = 'timeBar';
	timeBar.className = 'timeBar';

	var subDiv = document.createElement('DIV');
	subDiv.innerHTML = 'Time:';
	//timeBar.appendChild(subDiv);

	// Year selector
	var hourDiv = document.createElement('DIV');
	hourDiv.onmouseover = highlightSelect;
	hourDiv.onmouseout = highlightSelect;
	hourDiv.onclick = showHourDropDown;
	hourDiv.style.width = '30px';
	var span = document.createElement('SPAN');
	span.innerHTML = currentHour;
	span.id = 'calendar_hour_txt';
	hourDiv.appendChild(span);
	timeBar.appendChild(hourDiv);

	var img = document.createElement('IMG');
	img.src = pathToImages + 'down_time.gif';
	hourDiv.appendChild(img);
	hourDiv.className = 'selectBoxTime';

	if(Opera){
		hourDiv.style.width = '30px';
		img.style.cssText = 'float:right';
		img.style.position = 'relative';
		img.style.styleFloat = 'right';
	}

	var hourPicker = createHourDiv();
	hourPicker.style.left = '130px';
	//hourPicker.style.top = monthDiv.offsetTop + monthDiv.offsetHeight + 1 + 'px';
	hourPicker.style.width = '35px';
	hourPicker.id = 'hourDropDown';
	calendarDiv.appendChild(hourPicker);

	// Add Minute picker

	// Year selector
	var minuteDiv = document.createElement('DIV');
	minuteDiv.onmouseover = highlightSelect;
	minuteDiv.onmouseout = highlightSelect;
	minuteDiv.onclick = showMinuteDropDown;
	minuteDiv.style.width = '30px';
	var span = document.createElement('SPAN');
	span.innerHTML = currentMinute;

	span.id = 'calendar_minute_txt';
	minuteDiv.appendChild(span);
	timeBar.appendChild(minuteDiv);

	var img = document.createElement('IMG');
	img.src = pathToImages + 'down_time.gif';
	minuteDiv.appendChild(img);
	minuteDiv.className = 'selectBoxTime';

	if(Opera){
		minuteDiv.style.width = '30px';
		img.style.cssText = 'float:right';
		img.style.position = 'relative';
		img.style.styleFloat = 'right';
	}

	var minutePicker = createMinuteDiv();
	minutePicker.style.left = '167px';
	//minutePicker.style.top = monthDiv.offsetTop + monthDiv.offsetHeight + 1 + 'px';
	minutePicker.style.width = '35px';
	minutePicker.id = 'minuteDropDown';
	calendarDiv.appendChild(minutePicker);

	return timeBar;
}

function writeBottomBar()
{
	var d = new Date();
	var bottomBar = document.createElement('DIV');

	bottomBar.id = 'bottomBar';
	bottomBar.style.cursor = 'pointer';
	bottomBar.className = 'todaysDate';
	// var todayStringFormat = '[todayString] [dayString] [day] [monthString] [year]';	;;

	var subDiv = document.createElement('DIV');
	subDiv.onclick = pickTodaysDate;
	subDiv.id = 'todaysDateString';
	subDiv.style.width = (calendarDiv.offsetWidth - 95) + 'px';
	var day = d.getDay();
	// MOD:ja
	//if(day==0)day = 7;
	//day--;

	var bottomString = todayStringFormat;
	bottomString = bottomString.replace('[monthString]',monthArrayShort[d.getMonth()]);
	bottomString = bottomString.replace('[day]',d.getDate());
	bottomString = bottomString.replace('[year]',d.getFullYear());
	bottomString = bottomString.replace('[dayString]',dayArray[day].toLowerCase());
	bottomString = bottomString.replace('[UCFdayString]',dayArray[day]);
	bottomString = bottomString.replace('[todayString]',todayString);

	subDiv.innerHTML = todayString + ': ' + d.getDate() + '. ' + monthArrayShort[d.getMonth()] + ', ' + d.getFullYear() ;
	subDiv.innerHTML = bottomString ;
	bottomBar.appendChild(subDiv);

	var timeDiv = writeTimeBar();
	bottomBar.appendChild(timeDiv);

	calendarDiv.appendChild(bottomBar);
}

function getTopPos(inputObj)
{
	var returnValue = inputObj.offsetTop + inputObj.offsetHeight;
	while((inputObj = inputObj.offsetParent) != null)returnValue += inputObj.offsetTop;
	return returnValue + calendar_offsetTop;
}

function getLeftPos(inputObj)
{
	var returnValue = inputObj.offsetLeft;
	while((inputObj = inputObj.offsetParent) != null)returnValue += inputObj.offsetLeft;
	return returnValue + calendar_offsetLeft;
}

function positionCalendar(inputObj)
{
	var margin = (calendarPostionAlign == 'right') ? (209 - inputObj.offsetWidth) : 0;
	calendarDiv.style.left = (getLeftPos(inputObj) - margin) + 'px';
	calendarDiv.style.top = getTopPos(inputObj) + 'px';
	if(iframeObj){
		iframeObj.style.left = calendarDiv.style.left;
		iframeObj.style.top = calendarDiv.style.top;
		iframeObj2.style.left = calendarDiv.style.left;
		iframeObj2.style.top = calendarDiv.style.top;
	}
}

function initCalendar()
{
	if(MSIE){
		iframeObj = document.createElement('IFRAME');
		iframeObj.style.filter = 'alpha(opacity=0)';
		iframeObj.style.position = 'absolute';
		iframeObj.border='0px';
		iframeObj.style.border = '0px';
		iframeObj.style.zIndex = 999;
		iframeObj2 = document.createElement('IFRAME');
		iframeObj2.style.filter = 'alpha(opacity=0)';
		iframeObj2.style.position = 'absolute';
		iframeObj2.border='0px';
		iframeObj2.style.border = '0px';
		iframeObj2.style.height = '1px';
		iframeObj2.style.width = '1px';
		iframeObj2.style.zIndex = 999;
		// Added fixed for HTTPS
		iframeObj2.src = '/blank.html';
		iframeObj.src = '/blank.html';
		document.body.appendChild(iframeObj2);
		document.body.appendChild(iframeObj);
	}

	calendarDiv = document.createElement('DIV');
	calendarDiv.id = 'calendarDiv';
	calendarDiv.style.zIndex = 1000;
	slideCalendarSelectBox();

	document.body.appendChild(calendarDiv);
	writeBottomBar();
	writeTopBar();

	if(!currentYear){
		var d = new Date();
		currentMonth = d.getMonth();
		currentYear = d.getFullYear();
	}
	writeCalendarContent();
}

function setTimeProperties()
{
	if(!calendarDisplayTime){
		el('timeBar').style.display='none';
		el('timeBar').style.visibility='hidden';
		el('todaysDateString').style.width = '100%';
	}else{ 
		el('timeBar').style.display='block';
		el('timeBar').style.visibility='visible';
		el('hourDropDown').style.top = el('calendar_minute_txt').parentNode.offsetHeight + calendarContentDiv.offsetHeight + el('topBar').offsetHeight + 'px';
		el('minuteDropDown').style.top = el('calendar_minute_txt').parentNode.offsetHeight + calendarContentDiv.offsetHeight + el('topBar').offsetHeight + 'px';
		el('minuteDropDown').style.right = '50px';
		el('hourDropDown').style.right = '50px';
		el('todaysDateString').style.width = '115px';
	}
}

function calendarSortItems(a,b)
{
	return a/1 - b/1;
}

function displayCalendar(inputField,format,buttonObj,displayTime,align,minDate,maxDate)
{
	calendarDisplayTime = (displayTime) ? true : false;
	
	calendarPostionAlign = (typeof align == 'string' && align == 'right') ? 'right' : 'left';
	
	if(typeof minDate == 'string' && minDate.match(/^\d{4}\-\d{1,2}\-\d{1,2}$/)){
		var ds = minDate.split('-');
		var d = new Date(ds[0], parseInt(ds[1],10)-1, parseInt(ds[2],10));
		limitMinDate = d;
	}else{limitMinDate=false;}
	
	if(typeof maxDate == 'string' && maxDate.match(/^\d{4}\-\d{1,2}\-\d{1,2}$/)){
		var ds = maxDate.split('-');
		var d = new Date(ds[0], parseInt(ds[1],10)-1, parseInt(ds[2],10));
		limitMaxDate = d;
	}else{limitMaxDate=false;}
	
	if(inputField.value.length>0){
		if(!format.match(/^[0-9]*?$/gi)){
			var items = inputField.value.split(/[^0-9]/gi);
			var positionArray = new Array();
			positionArray['m'] = format.indexOf('mm');
			if(positionArray['m']==-1)positionArray['m'] = format.indexOf('m');
			positionArray['d'] = format.indexOf('dd');
			if(positionArray['d']==-1)positionArray['d'] = format.indexOf('d');
			positionArray['y'] = format.indexOf('yyyy');
			positionArray['h'] = format.indexOf('hh');
			positionArray['i'] = format.indexOf('ii');

			var positionArrayNumeric = Array();
			positionArrayNumeric[0] = positionArray['m'];
			positionArrayNumeric[1] = positionArray['d'];
			positionArrayNumeric[2] = positionArray['y'];
			positionArrayNumeric[3] = positionArray['h'];
			positionArrayNumeric[4] = positionArray['i'];

			positionArrayNumeric = positionArrayNumeric.sort(calendarSortItems);
			var itemIndex = -1;
			currentHour = '00';
			currentMinute = '00';
			for(var no=0;no<positionArrayNumeric.length;no++){
				if(positionArrayNumeric[no]==-1)continue;
				itemIndex++;
				if(positionArrayNumeric[no]==positionArray['m']){
					currentMonth = items[itemIndex]-1;
					continue;
				}
				if(positionArrayNumeric[no]==positionArray['y']){
					currentYear = items[itemIndex];
					continue;
				}
				if(positionArrayNumeric[no]==positionArray['d']){
					tmpDay = items[itemIndex];
					continue;
				}
				if(positionArrayNumeric[no]==positionArray['h']){
					currentHour = items[itemIndex];
					continue;
				}
				if(positionArrayNumeric[no]==positionArray['i']){
					currentMinute = items[itemIndex];
					continue;
				}
			}

			currentMonth = currentMonth / 1;
			tmpDay = tmpDay / 1;
		}else{
			var monthPos = format.indexOf('mm');
			currentMonth = inputField.value.substr(monthPos,2)/1 -1;
			var yearPos = format.indexOf('yyyy');
			currentYear = inputField.value.substr(yearPos,4);
			var dayPos = format.indexOf('dd');
			tmpDay = inputField.value.substr(dayPos,2);

			var hourPos = format.indexOf('hh');
			if(hourPos>=0){
				tmpHour = inputField.value.substr(hourPos,2);
				currentHour = tmpHour;
			}else{
				currentHour = '00';
			}
			var minutePos = format.indexOf('ii');
			if(minutePos>=0){
				tmpMinute = inputField.value.substr(minutePos,2);
				currentMinute = tmpMinute;
			}else{
				currentMinute = '00';
			}
		}
	}else{
		var d = new Date();
		currentMonth = d.getMonth();
		currentYear = d.getFullYear();
		currentHour = '08';
		currentMinute = '00';
		tmpDay = d.getDate();
	}

	inputYear = currentYear;
	inputMonth = currentMonth;
	inputDay = tmpDay/1;

	if(!calendarDiv){
		initCalendar();
	}else{
		if(calendarDiv.style.display=='block'){
			closeCalendar();
			return false;
		}
		writeCalendarContent();
	}

	returnFormat = format;
	returnDateTo = inputField;
	positionCalendar(buttonObj);
	calendarDiv.style.visibility = 'visible';
	calendarDiv.style.display = 'block';
	if(iframeObj){
		iframeObj.style.display = '';
		iframeObj.style.height = '140px';
		iframeObj.style.width = '195px';
		iframeObj2.style.display = '';
		iframeObj2.style.height = '140px';
		iframeObj2.style.width = '195px';
	}

	setTimeProperties();
	updateYearDiv();
	updateMonthDiv();
	updateMinuteDiv();
	updateHourDiv();
}

function displayCalendarSelectBox(yearInput,monthInput,dayInput,hourInput,minuteInput,buttonObj,align,minDate,maxDate)
{
	if(!hourInput) calendarDisplayTime = false; else calendarDisplayTime = true;
	
	calendarPostionAlign = (typeof align == 'string' && align == 'right') ? 'right' : 'left';
	
	if(typeof minDate == 'string' && minDate != null && minDate.match(/^\d{4}\-\d{1,2}\-\d{1,2}$/)){
		var ds = minDate.split('-');
		var d = new Date(ds[0], parseInt(ds[1],10)-1, parseInt(ds[2],10));
		limitMinDate = d;
	}else{limitMinDate=false;}
	
	if(typeof maxDate == 'string' && maxDate.match(/^\d{4}\-\d{1,2}\-\d{1,2}$/)){
		var ds = maxDate.split('-');
		var d = new Date(ds[0], parseInt(ds[1],10)-1, parseInt(ds[2],10));
		limitMaxDate = d;
	}else{limitMaxDate=false;}
	
	var d = new Date();
	var compMonth = parseInt(monthInput.options[monthInput.selectedIndex].value,10);
	if (!isNaN(compMonth) && compMonth != '' && 1 <= compMonth && compMonth <= 12) {
		currentMonth = compMonth-1;
	} else {
		currentMonth = d.getMonth();
	}
	inputMonth = currentMonth;
	var compYear = yearInput.options[yearInput.selectedIndex].value;
	if (!isNaN(compYear) && compYear != '') {
		currentYear = compYear;
	} else {
		currentYear = d.getFullYear();
	}
	inputYear = currentYear;
	var compDay = parseInt(dayInput.options[dayInput.selectedIndex].value,10);
	if (!isNaN(compDay) && compDay != '' && 1 <= compDay && compDay <= 31) {
		currentDay = compDay;
	} else {
		currentDay = d.getDate();
	}
	inputDay = currentDay;
	if(hourInput){
		currentHour = hourInput.options[hourInput.selectedIndex].value;
		inputHour = currentHour/1;
	}
	if(minuteInput){
		currentMinute = minuteInput.options[minuteInput.selectedIndex].value;
		inputMinute = currentMinute/1;
	}
	if(!calendarDiv){
		initCalendar();
	}else{
		writeCalendarContent();
	}

	returnDateToYear   = yearInput;
	returnDateToMonth  = monthInput;
	returnDateToDay    = dayInput;
	returnDateToHour   = hourInput;
	returnDateToMinute = minuteInput;

	returnFormat = false;
	returnDateTo = false;
	positionCalendar(buttonObj);
	calendarDiv.style.visibility = 'visible';
	calendarDiv.style.display = 'block';
	if(iframeObj){
		iframeObj.style.display = '';
		iframeObj.style.height = calendarDiv.offsetHeight + 'px';
		iframeObj.style.width = calendarDiv.offsetWidth + 'px';
		iframeObj2.style.display = '';
		iframeObj2.style.height = calendarDiv.offsetHeight + 'px';
		iframeObj2.style.width = calendarDiv.offsetWidth + 'px';
	}
	setTimeProperties();
	updateYearDiv();
	updateMonthDiv();
	updateHourDiv();
	updateMinuteDiv();
}

function el(e)
{
	return document.getElementById(e);
}
