var monthminus=-1;
var yearminus=-1;
var yearplus=1;
var monthplus=1;
var date= new Date();
var month=(date.getMonth());
var day=(date.getDate());
var dayNm=(date.getDay());
var year=(date.getYear());
var calDiv1='calendar1';
var frameName1='';
var calendarNameG='';

if(navigator.appName!='Microsoft Internet Explorer')
	{year=year+1900;}
	var monthArray=new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
	var dayArray=new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	var dayName=new Array('Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa');


function incMonth(month1, year1)
{var monthNew=parseInt(month1);
if(monthNew<11)
{month=monthNew+1;
var yearNew=parseInt(year1);
year=yearNew;
}
else
{var yearNew=parseInt(year1);
year=yearNew+1;
month=0;}
}

function decMonth(month1, year1)
{var monthNew=parseInt(month1);
if(monthNew>0)
{month=monthNew-1;
var yearNew=parseInt(year1);
year=yearNew;
}
else
{var yearNew=parseInt(year1);
year=yearNew-1;
month=11}}

function incYear(year1)
{
var yearNew=parseInt(year1);

year=yearNew+1;}

function decYear(year1)
{
year=(parseInt(year1))-1;
}

var obj;
var selectID=0;
var cal_new=0;
var dateNew1=new Date();
var dateNew_month=(dateNew1.getMonth());
var dateNew_day=(dateNew1.getDate());
var dateNew_dayNm=(dateNew1.getDay());

var dateNew_year=(dateNew1.getYear());
var dateRes;

if(navigator.appName!='Microsoft Internet Explorer')
	{
		dateNew_year=parseInt(dateNew_year)+1900;
	}

function changeDate(resPeriod, resBase)
{
	if(resBase=='m')
	{dateNew1.setMonth(parseInt(dateNew_month+parseInt(resPeriod)))}
	else if(resBase=='y')
	{dateNew1.setYear((parseInt(dateNew_year)+parseInt(resPeriod)))}
	else
	{dateNew1.setDate((parseInt(dateNew_day)+parseInt(resPeriod)))}
	dateRes = {"dp":dateNew1.getDate(), "mp":(parseInt(dateNew1.getMonth())+1), "yp":dateNew1.getYear()};
	if(navigator.appName!='Microsoft Internet Explorer')
	{
		dateRes["yp"]=dateRes["yp"]+1900;
	}
}

var calIDN=1;
function createDivs(calNo)
{
	for(calIDN=1;calIDN<=calNo;calIDN++)
	{
		var div1=document.createElement('div');
		div1.id="calendar"+calIDN;
		var frame1=document.createElement('iframe');
		frame1.id="iframeLayer"+calIDN;
		frame1.src='';
		frame1.style.width='200px';
		document.body.appendChild(div1);
		document.body.appendChild(frame1);
	}
}

var formatG='';
var sepG='';
var direcG='';

function showDate1(obj, calendarName, calNo, iframeName, limit, formatDt, sepDt, direction)
{
	formatG=formatDt || 'ymd';
	sepG=sepDt || '-';
	direcG=direction || 'b';

	var range=limit || 0;
	if(((document.getElementById(calendarName).style.display)=='block') && (calendarName==calendarNameG))
	{hideDate();}
	else
	{	hideDate();
		if((cal_new<calNo) && (calendarNameG!=calendarName))
		{
		calendarNameG=calendarName;
		frameName1=iframeName;
		cal_new=cal_new+1;
		showDate(obj, range);
		}
		else
		{

		calendarNameG=calendarName;
		findPosCal(obj, frameName1);
		frameName1=iframeName;
		}
	}
}

function showDate(obj, range)
{

	{
	var rangeDate2 = new Date();
    var rangeDate1 = new Date();
	if(direcG=='b')
    rangeDate1.setDate(rangeDate2.getDate()-range);
	else
	rangeDate1.setDate(rangeDate2.getDate()+range);
	rangeDate2.setDate(rangeDate2.getDate());
	
	obj=obj;
	var isleap1=Date.isleap(year);
	if(isleap1)
	dayArray[1]=29;
	else
	dayArray[1]=28;
	monthDay='';
	var firstDate = new Date(monthArray[month]+" 01, "+year+" 00:00:00");
	var firstDay=firstDate.getDay();
	findPosCal(obj, calendarNameG);
	findPosCal(obj, frameName1);
	var basicDiv1=document.createElement('div');
	var basicDiv=document.createElement('table');
	basicDiv.className="calClass";
		basicDiv.style.border="1px solid #AB0609";
		basicDiv.style.background="#ffffff";
	var basicTR_new=document.createElement('tr');
		var basicTd1=document.createElement('td');
        basicTd1.innerHTML="<a href='javascript:decYear(\""+year+"\"),showDate(\""+obj+"\","+range+");'>&lt;&lt;</a>";
        var basicTd2=document.createElement('td');
        basicTd2.innerHTML="<a href='javascript:decMonth(\""+month+"\", \""+year+"\"),showDate(\""+obj+"\","+range+");'>&lt;</a>";
        var basicTd3=document.createElement('td');
        basicTd3.setAttribute('colspan', 3);
        basicTd3.innerHTML="<strong>"+monthArray[month]+" "+year+"</strong>";
        var basicTd4=document.createElement('td');
        basicTd4.innerHTML="<a href='javascript:incMonth(\""+month+"\", \""+year+"\"),showDate(\""+obj+"\","+range+");'>&gt;</a>";
        var basicTd5=document.createElement('td');
        basicTd5.innerHTML="<a href='javascript:incYear(\""+year+"\"),showDate(\""+obj+"\","+range+");'>&gt;&gt;</a>";


		basicTR_new.appendChild(basicTd1);
		basicTR_new.appendChild(basicTd2);
		basicTR_new.appendChild(basicTd3);
		basicTR_new.appendChild(basicTd4);
		basicTR_new.appendChild(basicTd5);

	basicDiv.appendChild(basicTR_new);
	/*find day 1st*/
	var firstDayNo=dayNm%7;
	var basicTR=document.createElement('tr');
	for(var i=1; i<=dayName.length; i++)
	{	
		var basicTD=document.createElement('td');
		basicTD.className="weekDay";
		basicTD.innerHTML=dayName[i-1];
		basicTR.appendChild(basicTD);		
	}
	basicDiv.appendChild(basicTR);
	var k=1;
	var	loop=0;

	while(k<=dayArray[month])
	{
	for(var i=1; i<=(((dayArray[month]+firstDayNo)/7)+1); i++)
		{basicTR=document.createElement('tr');
			for (var l=0; l<7; l++)
			{
				if(firstDay>0)
				{
					var basicTD1=document.createElement('td');
					basicTD1.align='right';
					basicTD1.innerHTML='&nbsp';
					basicTR.appendChild(basicTD1);
					firstDay=firstDay-1;
				}
			else
				{	if(k<=dayArray[month])
					{var basicTD=document.createElement('td');
					basicTD.align='right';
					
					var dateShow = new Date(); dateShow.setFullYear(parseInt(year),parseInt(month),k);
//					alert(dateShow +" - "+rangeDate2);
					dateShow.setHours(0,0,0,0);
					rangeDate1.setHours(0,0,0,0);
					rangeDate2.setHours(0,0,0,0);
					var cond1=true;
					if(direcG=='b')
					{cond1=((dateShow>rangeDate1) && (dateShow<=rangeDate2))}
					else
					{cond1=((dateShow<rangeDate1) && (dateShow>=rangeDate2))}
                    if(!range || cond1)
                    {basicTD.innerHTML="<a id='"+calendarNameG+"date"+k+"' href='javascript:setDate1("+k+", \""+obj+"\", \""+calendarNameG+"date"+k+"\", \""+year+"\", \""+month+"\", hideDate())' >"+k+"</a>";}
                    else basicTD.innerHTML = "<a id='"+calendarNameG+"date"+k+"' href='javascript:setDate1("+k+", \""+obj+"\", \""+calendarNameG+"date"+k+"\", \""+year+"\", \""+month+"\", hideDate())' >"+k+"</a>";
                    basicTR.appendChild(basicTD);
                    k=k+1;
			
					}
					else
					break;
				}
			}
			basicDiv.appendChild(basicTR);
		}
	}
	var close_new=document.createElement('tr');
	var closeTd1=document.createElement('td');
	closeTd1.setAttribute('colspan', 7);
	closeTd1.style.padding='4px';
	closeTd1.innerHTML="<a href='javascript:hideDate()' style='display:inline;'>Close</a>";
	close_new.appendChild(closeTd1);
	basicDiv.appendChild(close_new);

	basicDiv1.appendChild(basicDiv);
	
	document.getElementById(calendarNameG).innerHTML=basicDiv1.innerHTML;
	document.getElementById(frameName1).style.height=document.getElementById(calendarNameG).offsetHeight+"px";
	}
}

function selectCal(selectOBJ)
{
for(var i=1; i<dayArray[month];i++)
{document.getElementById(calendarNameG+'date'+i).className='';}
var obj1=document.getElementById(selectOBJ);
obj1.className='selDate';
}

function splitDate(dateId)
{
	var fieldVal=document.getElementById(dateId).value;
	if(fieldVal!='')
	{var splitVar=fieldVal.split('-');
	month=splitVar[1]-1;
	year=splitVar[0];
	date=splitVar[2];
	document.getElementById(calendarNameG+"date"+splitVar[2]).className='selDate';
	selectID=1;}
}

function hideDate()
{
	var ij=1;
	while(document.getElementById('calendar'+ij))	
	{document.getElementById('calendar'+ij).style.display='none';
	document.getElementById('iframeLayer'+ij).style.display='none';
	ij=ij+1;
	}
}

function showDivDate()
{
	document.getElementById(calendarNameG).style.display='block';
	document.getElementById(frameName1).style.display='block';
}

var newMonthSet=0;
var newYearSet=0;
var newDateSet=0;
function setDate1(newDate, objNew, selectOBJ, curYear, curMonth)
{
	newMonthSet=parseInt(curMonth)+1;
	newYearSet=curYear;
	var obj1=document.getElementById(objNew);
	if(newMonthSet<10)
	newMonthSet="0"+String(newMonthSet);
	newDateSet=newDate;
	if(newDate<10)
	newDateSet="0"+String(newDate);
	obj1.value=dateFormat();
	selectCal(selectOBJ);
}
function dateFormat()
{
	if(formatG=='ymd')
	return newYearSet+sepG+newMonthSet+sepG+newDateSet;
	else if(formatG=='dmy')
	return newDateSet+sepG+newMonthSet+sepG+newYearSet;
	else if(formatG=='dmyy')
	return newDateSet+sepG+newMonthSet+sepG+newYearSet.substr(2,4);
	else if(formatG=='mdy')
	return newMonthSet+sepG+newDateSet+sepG+newYearSet;
}
Date.isleap = function(year){															//check the year is a leap year or not.
 return ((year % 400) == 0) ? 1 :((year % 100) == 0) ? 0 :((year % 4)   == 0) ? 1 :0;
}

function findPosCal(iframePos, divID) {
	obj=document.getElementById(iframePos);
	var curleft = curtop = 0;
//	alert(obj);
	if (obj.offsetParent) {
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
document.getElementById(divID).style.top=curtop+20+"px";
document.getElementById(divID).style.left=curleft+"px";
showDivDate();
}

