
/*================================================

RIGSTAR Content Software
(c) 2007 Steven Kendall (steve@rigstar.com)
Programmed By Eric Ciocca (eric@ericciocca.com)

This file may not be used, copied, or modified without
permission from the code's owner.

Filename: DIVcalendar.js

Description: Javascript functions to pop up DIV calendar

================================================*/



var g_bCalShowForm;

var g_CalResult;
var g_CalDIV;



function ShowCalendar(CalResult, calDIV, anchor, val)
{
  g_CalResult = CalResult;
  g_CalDIV = calDIV;

  g_CalDIV.style.visibility = 'visible';

  var iM = 0;
  var iY = 0;
  if ((val!=false)&&(val!=undefined)&&(val!=""))
  {
	//set iM, iY
	var d = new Date(val*1000);
	iM = d.getUTCMonth()+1;
	iY = d.getUTCFullYear();
  }

  var cal = dispCal(iY,iM);
  if (!cal) return false;
  g_CalDIV.innerHTML = cal;

  MoveToAnchor(g_CalDIV, anchor);
}



function monthlength(month,year) 
{
	var dd = new Date(year, month, 0);
	return dd.getDate();
}

function DatePresent(yy,mm,dd,ho,mi)
{

  var humDate = new Date(Date.UTC(yy,mm-1,dd,ho,mi,0));  
  g_CalResult(humDate.getTime()/1000.0);
  EndCalendar(true);
}


function EndCalendar(bResult)
{
  g_CalDIV.style.visibility = 'hidden';
}


function dispCal(yy,mm) 
{ 
	var dow = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']; 
	var moy = ['January','February','March','April','May','June','July','August','September','October','November','December'];  
	if (mm < 0 || mm > 12) 
	{
		alert('month must be between 1 and 12'); 
		return false;
	} 
	if (yy != 0 && (yy < 1901 || yy > 2100)) 
	{
		alert('year must be after 1900 and before 2101'); 
		return false;
	} 
	var calendar = new Date();  
	var today = calendar.getDate(); 
	calendar.setDate(1); 
	if (yy > 1900) 
		calendar.setFullYear(yy); 
	if (mm > 0) 
		calendar.setMonth(mm - 1); 
	var yy = year = calendar.getFullYear(); 
	var month = calendar.getMonth(); 
	calendar.setDate(today); 
	var weekday = calendar.getDay(); 
	var daysInMonth = monthlength(month+1,year); 
	
	var td_start = "<td width='30px'>";

 	var mmb = month;  
	mm = month + 1; 
	var yya = yyb = yy; 
	if (mmb <1) {mmb += 12; yyb--;} 
	var mma = month + 2; 
	if (mma > 12) {mma -= 12; yya++;} 
	var yb = yy -1; 
	var ya = yy +1; 


	//the style section
	var cal = "";
	cal += '<div id="calendar-bg" >';
	cal += "<div id='calendar-exit'><input type='button' value='x' onclick='EndCalendar(false);' ></div>";
	cal += '\
<center><table border="0" cellspacing="0" cellpadding="2" width="150">\
<tr><td>\
<input type="button" value="<<" onclick="if (cala = dispCal('+yb+','+mm+')) {g_CalDIV.innerHTML = cala;return false;}">\
</td><td>\
<input type="button" value="<" onclick="if (cala = dispCal('+yyb+','+mmb+')) {g_CalDIV.innerHTML = cala; return false;}">\
</td><td style="text-align:center">\
<input type="button" value="#" onclick="if (cala = dispCal(0,0)) {g_CalDIV.innerHTML = cala; return false;}">\
</td><td align="right">\
<input type="button" value=">" onclick="if (cala = dispCal('+yya+','+mma+')) {g_CalDIV.innerHTML = cala; return false;}">\
</td><td align="right">\
<input type="button" value=">>" onclick="if (cala = dispCal('+ya+','+mm+')) {g_CalDIV.innerHTML = cala; return false;}">\
</td></tr></table>';

	cal += '<table class="dates"><tr><th colspan="7"><b>' + moy[month]  + ' ' + year + '</b></th></tr><tr>';
	for(dex=0; dex < 7; dex++) 
	{
		if(weekday == dex) 
			cal += td_start + '<b>' + dow[dex] + '</b></td>'; 
		else 
			cal += td_start + dow[dex] + '</td>';
	} 
	cal += '</tr><tr>'; 
	var day2 = today; 
	for (dex = today; dex > 6; dex -=7) 
		day2 = dex; weekday -= day2 - 1; 

	while (weekday < 0) 
		weekday += 7; 

	//spacers
	for(dex=0; dex < weekday; dex++) 
		cal += td_start + ' </td>'; 

	for(dex=1; dex <= daysInMonth; dex++) 
	{
		if(weekday == 7) 
		{
			cal += '</tr><tr>'; 
			weekday = 0;
		} 

		var ln = "<a href='#' onclick='DatePresent("+year+","+(month+1)+","+dex+",0,0); return false;'>" + dex + "</a>";

		var tdclass = "normal";
		if(today==dex) 
		  tdclass = "hilite";

		cal += "<td class='"+tdclass+"'>" + ln + "</td>";
		//			cal += hilite_start + ln + '</b></td>'; 		//else 
		//	cal += td_start + ln + '</td>'; 

		weekday += 1;
	} 

	for (dex=weekday; dex < 7; dex++) 
		cal += "<td> </td>"; 
	
	cal += '</tr></table>';
	cal += '</center></div>'; 

	return cal;
}



