var inputDateObj;
var out_flag=false;
var targetele="";
var strDate;
var now;

function createCalendar() {
	closeCalendar();
	var calendar=document.body.appendChild(document.createElement("div"));
	
	var title=calendar.appendChild(document.createElement("div"));
	var close=title.appendChild(document.createElement("div"));
	var titleText=title.appendChild(document.createElement("div"));
	var head=calendar.appendChild(document.createElement("div"));
	var lastYear=head.appendChild(document.createElement("div"));
	var lastMonth=head.appendChild(document.createElement("div"));
	var thisYearMonth=head.appendChild(document.createElement("div"));
	var nextMonth=head.appendChild(document.createElement("div"));
	var nextYear=head.appendChild(document.createElement("div"));
	var week=calendar.appendChild(document.createElement("div"));
	var body=calendar.appendChild(document.createElement("div"));
	
	calendar.onmouseout=function(){out_flag=true};	
	calendar.onmouseover=function(){out_flag=false};
	document.body.onclick=function(){
		if(out_flag){
			closeCalendar();
		}
	};
	lastMonth.onclick=function(){changeMonth(-1);};
	nextMonth.onclick=function(){changeMonth(1);};
	lastYear.onclick=function(){changeYear(-1);};
	nextYear.onclick=function(){changeYear(1);};
	close.onclick=function(){closeCalendar();};

	titleText.onclick=function(){closeCalendar();};
	calendar.setAttribute("id","calendar");
	calendar.className="calendar";
	title.className="calendarTitle";
	close.className="calendarClose";
	titleText.className="calendarTitleText";
	head.className="calendarHead";
	lastMonth.className="calendarLastMonth";
	nextMonth.className="calendarNextMonth";
	lastYear.className="calendarLastYear";
	nextYear.className="calendarNextYear";
	thisYearMonth.className="calendarYearMonth";
	titleText.innerHTML=closeCal;
//	var aryWeek=new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
	var aryWeek=weekNames;
	for(i=0;i<7;i++){
	var weekday=week.appendChild(document.createElement("div"));
	weekday.className="calendarWeekday";
	if(i==0||i==6)
	{weekday.className="calendarWeekend";}
	weekday.innerHTML=aryWeek[i];
	}

//for th website spc
	strDate=inputDateObj.value;
	
	var flag = /^(19[7-9]\d|20[0-5]\d)\-(0?\d|1[0-2])\-([0-2]?\d|3[01])$/;
	if(flag.test(strDate)){
		
		now=new Date(parseInt(strDate.split("-")[0]),parseInt(strDate.split("-")[1],10)-1,parseInt(strDate.split("-")[2],10)+0);
	}
	else{
		now=new Date();
	}
	
	showCalendar(now.getFullYear(),now.getMonth());
}

function showCalendar(y,m) {
	var calendar=document.getElementById("calendar");
	var head=calendar.childNodes[1].childNodes[2];
//	var monthArray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	var monthArray=monthNames;
	 
	head.innerHTML=monthArray[m]+", "+y;
	calendar.setAttribute("year",y);
	calendar.setAttribute("month",m);
	calendar=calendar.childNodes[3];
	calendar.innerHTML="";
	var firstDayOfMonth=new Date(y,m,1);
	var firstWeekDay=firstDayOfMonth.getDay();;
	var cMonth=firstDayOfMonth.getMonth();
	var WeekNo=0;
	var MonthDay=1;
	var Today=new Date();
	while(MonthDay>=0)
	{
		var cDate=new Date(y,m,MonthDay);
		if(cMonth==cDate.getMonth())
		{
			var cWeekDiv=calendar.appendChild(document.createElement("div"));
			cWeekDiv.style.clear="both";
			for(i=0;i<7;i++)
			{
				var cWeekdayDiv=cWeekDiv.appendChild(document.createElement("div"));
				cWeekdayDiv.className="calendarDay";
				if(i==0||i==6){cWeekdayDiv.className="calendarWeekendDay";}
				if(WeekNo==0)
				{
					if(i>=firstWeekDay)MonthDay++;
				}
				else
				{
					MonthDay++;
				}
				if(MonthDay>0)
				{
					cDate=new Date(y,m,MonthDay-1);
					if(cMonth==cDate.getMonth())
					{
						cWeekdayDiv.innerHTML=cDate.getDate();
						if(targetele=="stockdate"){
							if((cDate.getTime()<=Today.getTime())){
								cWeekdayDiv.setAttribute("Date",cDate);
								cWeekdayDiv.onclick=function(){showDate(this)};
								cWeekdayDiv.onmouseover=function(){overClendar(this);};
								cWeekdayDiv.onmouseout=function(){outClendar(this);};													}
							else{
								cWeekdayDiv.className="disableUse";
							}
						}
						else if(targetele=="DynamicDate"){
							if( (cDate.getTime()>=(Today.getTime()-86400000*3)) && (cDate.getTime()<(Today.getTime()+86400000*2) )  ){
								cWeekdayDiv.setAttribute("Date",cDate);
								cWeekdayDiv.onclick=function(){showDate(this)};
								cWeekdayDiv.onmouseover=function(){overClendar(this);};
								cWeekdayDiv.onmouseout=function(){outClendar(this);};										}
							else{
								cWeekdayDiv.className="disableUse";
							}
						}
						else{
							if((cDate.getTime()>=Today.getTime())||(cDate.getFullYear()==Today.getFullYear()&&cDate.getMonth()==Today.getMonth()&&cDate.getDate()==Today.getDate())){
								cWeekdayDiv.setAttribute("Date",cDate);
								cWeekdayDiv.onclick=function(){showDate(this)};
								cWeekdayDiv.onmouseover=function(){overClendar(this);};
								cWeekdayDiv.onmouseout=function(){outClendar(this);};													}
							else{
								cWeekdayDiv.className="disableUse";
							}
						
						}

						
						if(cDate.getFullYear()==now.getFullYear()&&cDate.getMonth()==now.getMonth()&&cDate.getDate()==now.getDate())
						{
							cWeekdayDiv.className="calendarToday";
						}
					}
				}
			}
			WeekNo++;
		}
		else{break;}
	}
	
}

function changeMonth(d) {
	var calendar=document.getElementById("calendar");
	var year=calendar.getAttribute("year");
	var month=calendar.getAttribute("month");
	month=Number(month)+Number(d);
	if(month<0)
	{
		month=11;year=Number(year)-1;
	}
	if(month>11)
	{
		month=0;year=Number(year)+1;
	}
	showCalendar(year,month);
}

function changeYear(d) {
	var calendar=document.getElementById("calendar");
	var year=calendar.getAttribute("year");
	var month=calendar.getAttribute("month");
	year=Number(year)+d;
	showCalendar(year,Number(month));
}

function overClendar(obj) {
	obj.setAttribute("oldClass",obj.className);
	obj.className="calendarOver";
}

function outClendar(obj) {
	obj.className=obj.getAttribute("oldClass");
}

function showDate(obj) {
	var d=new Date(obj.getAttribute("Date"));
	var txt=d.getFullYear()+"-";
	if(d.getMonth()<9)
	{
		txt+="0"+(d.getMonth()+1)+"-";
	}
	else
	{
		txt+=d.getMonth()+1+"-";
	}
	if(d.getDate()<10)
	{
		txt+="0"+d.getDate();
	}
	else
	{
		txt+=d.getDate();
	}
	var calendar=document.getElementById("calendar");
	closeCalendar();
	inputDateObj.value=txt;
	inputDateObj=null;
}

function displayCalendar(ev,objName) {
	targetele=objName;
	inputDateObj=document.getElementById(objName);
	createCalendar();
	ev = ev || window.event;   
	var target = ev.target || ev.srcElement; 
	var calendar=document.getElementById("calendar");
	var x=ev.clientX||ev.pageX;
	var y=ev.clientY||ev.pageY;
	y+=document.documentElement.scrollTop;
	x+=document.documentElement.scrollLeft;
	calendar.style.left=(x-2)+"px";
	calendar.style.top=(y-2)+"px";
	ev.cancelBubble=true;
}

function closeCalendar() {
	var calendar=document.getElementById("calendar");
	if(calendar)
	{
		document.body.removeChild(calendar);
	}
	out_flag=false;
}
