//
// Bugninja AJAX Framework v0.1 BETA
// Copyright 2006-2008
// 
// This file may not be used without the permission of Seltice Systems LLC
//
/*

function postForm1() {

	 
		loadDoc('test.php','startnum='+escape(document.form1.startnum.value),'POST','STR',MAX_WAITING_TIME, function(str) { 

			// str = responseText

			var str="How are you doing today?"

			var stra = str.split('\n');

			// each part of the string array is split by the \n

			for(i=0;i<stra.length;i++) {
				alert(stra[i])
			}
			
		});
		
	 }
*/

var MAX_WAITING_TIME = 60000;

function loadDoc(docname,querystring,methodtype,rType,timer,responseFunc) {

	var MAXIMUM_WAITING_TIME=10000;
	var timeoutId=0;
	var requestTimer=0;

	var xmlhttp;

	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");			
			} catch (E) {
				xmlhttp = false;
			}
		}
	@else
		xmlhttp = false;
	@end @*/
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {

		try {
		  xmlhttp = new XMLHttpRequest();
		  
		} catch (e) {
		  xmlhttp = false;
		  alert('No XML');
		  
		}

	}

	
	if (timer>0)
	{
		MAXIMUM_WAITING_TIME=timer;
	}

	if ( callInProgress(xmlhttp) ) {
		alert('Please wait, script is still running');
	} else {

     	if (xmlhttp) {

			if (methodtype=="GET")
			{
				xmlhttp.open("GET",docname+'?'+querystring,true);
			}

			if (methodtype=="POST")
			{
				xmlhttp.open("POST",docname,true);
				xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');			
				xmlhttp.send(querystring);
			}

						
			requestTimer = setTimeout(function() {
				xmlhttp.abort();
				alert('Script timed out, please try again.');
				}, MAXIMUM_WAITING_TIME);

			
			xmlhttp.onreadystatechange = function() {
				if (xmlhttp.readyState!=4) { 
					// document.form1.textArea1.value=document.form1.textArea1.value+xmlhttp.readyState;
					return; 
				}
				clearTimeout(requestTimer);	
				// document.form1.textArea1.value=document.form1.textArea1.value+xmlhttp.readyState;			
				var fCall=responseFunc;
				if (typeof responseFunc!="function") 
					fCall = new Function(responseFunc);
				
				if (rType=='STR')
				{
					fCall(xmlhttp.responseText);
				} else if (rType=='XML')
				{
					fCall(xmlhttp.responseXML);
				}
			}

			if (methodtype=="GET")
			{
				xmlhttp.send(null);
			}

			

			
		} else {
			alert('No XML Available');
		}
	
	}

}


function callInProgress(xmlhttp) {
    switch ( xmlhttp.readyState ) {
		case 1, 2, 3:			
            return true;
        break;
        default:			
            return false;
        break;
    }	
}



var lastday = '0';
var wdsDay, wdsMonth, wdsYear;
var mID='wdsMonth';
var dID='wdsDay';
var yID='wdsYear';

function showJCal(j_id) {

	if (document.getElementById(('jcal_'+j_id)).style.display=='none')
	{
		document.getElementById(('jcal_'+j_id)).style.display='block'
	} else {
		document.getElementById(('jcal_'+j_id)).style.display='none'
	}

	wdsDay = dID;
	wdsMonth = mID;
	wdsYear = yID;

}

function setDate(day,month,year,j_id) {

	
	day2b = day;
	month2b = month;
	lastday1b = lastday;
	
	var e = document.getElementById(('dateIs_'+j_id));

	if (e)
	{
		e.value=month2b + '-' + day2b + '-' + year;
	} else {
		alert('no e for dateIs_'+j_id);
	}


	if (lastday!='0' && lastday!='00')
	{
		// document.getElementById(('cal_'+lastday1b)).style.backgroundColor='#FFFFFF';
	}

	
	
	// document.getElementById(('cal_'+day2b)).style.backgroundColor='#6699FF';
	lastday = day;


}

function showCal(month,day,year,j_id) {
	
	var m = month;
	var y = year;

	var nm = m*1;
	var ny = y*1;
	var nd = day*1;

	var cdate = new Date();

	var cy = ny;
	var cm = nm;
	var cd = nd;	

	var months=['January','February','March','April','May','June','July','August','September','October','November','December'];
	var numdays=[31,0,31,30,31,30,31,31,30,31,30,31];
	var daynames = ['S','M','T','W','T','F','S'];
	var onDay = new Date(y,m-1,1);
	var plusDay = onDay.getDay()+1;
	var todaysdate=new Date();
	var todayis = day;

	lastday = day;

	// can't remember where I found this trick years ago, but still use it today.
	if ( ((onDay.getFullYear()%100!=0) && (onDay.getFullYear()%4==0)) || (onDay.getFullYear()%400==0) )
	{
		numdays[1] = 29;
	} else {
		numdays[1] = 28;
	}

	var calstr = '';

	calstr  = '<table border=0 cellpadding=3 cellspacing=2 width=200>';
	calstr += '<tr><td bgcolor=#CCCCCC colspan=7>';
	calstr += '<table border=0 cellpadding=0 cellspacing=0 width=100%><tr>';
	calstr += '<td align=center><a href="#" onClick="showCal(';
	
	if (nm==1)
	{
		calstr += '\'12\', \'1\', \''+(ny-1)+'\'';
	} else {
		calstr += '\''+(nm-1)+'\', \'1\', \''+ny+'\'';
	}

	calstr += ',\''+j_id+'\'); return false;" style="color:black; text-decoration: none;">&lt;&lt;</a></td>';
	calstr += '<td align=center><select name="changemonthto_'+j_id+'" style="font-size: 11px;" onChange="showCal(this.value,\'1\',\''+ny+'\',\''+j_id+'\');">';
	
	for (n=0;n<12;n++)
	{
		calstr += '<option value="'+(n+1)+'" ';
		if (n==(m-1))
		{
			calstr += ' selected ';
		}
		calstr += '>'+months[n]+'</option>';
	}

	calstr += '</select> <input onKeyUp="if ((this.value.length==4) && ((this.value*1)>0)) { showCal(\''+nm+'\',\'1\',this.value,\''+j_id+'\'); }" type=text name="calyearis_'+j_id+'" maxlength=4 style="width: 40px; height: 20px; font-size: 11px;" value="' + y +'"></td>';
	calstr += '<td align=center><a href="#" onClick="showCal(';
	
	if (nm==12)
	{
		calstr += '\'1\', \'1\', \''+(ny+1)+'\'';
	} else {
		calstr += '\''+(nm+1)+'\', \'1\', \''+ny+'\'';
	}

	calstr += ',\''+j_id+'\'); return false;" style="color:black; text-decoration: none;">&gt;&gt;</a></td>';
	calstr += '</td></tr></table>';
	calstr += '</td></tr><tr>';
	for(d=0;d<7;d++) {
		calstr += '<td bgcolor=#000000 style="color:white; font-size: 11px; font-weight: bold;" align=center>'+daynames[d]+'</td>';
	}
	calstr += '</tr>';

	calstr += '<tr>';

	var showDay = '';
	var showDay2 = '';

	onstartday=0;

	for (i=1; i<43; i++)
	{

		if ( ((i-plusDay)>=0) && ((i-plusDay)<numdays[m-1]) )
		{
			showDay = '<a href="#" onClick="setDate(\''+(i-plusDay+1)+'\',\''+nm+'\',\''+ny+'\', \''+j_id+'\');  showJCal(\''+j_id+'\'); return false;" style="color: blue;">' + (i-plusDay+1) + '</a>';
			showDay2 = (i-plusDay+1);
			
		} else {
			showDay = '&nbsp;';
			showDay2 = '0';
			if (onstartday==1)
			{
				break;
			}
		}
		onstartday=0;

		if ((showDay2*1)<10)
			{
				showDay2b = '0'+showDay2;
			} else {
				showDay2b = showDay2;
			}

		if (showDay2==cd && y==cy && m==cm)
		{		
			calstr += '<td align=center bgcolor=#77AAFF id="cal_'+showDay2b+'_'+j_id+'"><span style="font-size: 11px; color: black;">'+showDay+'</span></td>';
		} else {
			calstr += '<td align=center bgcolor=#FFFFFF id="cal_'+showDay2b+'_'+j_id+'"><span style="font-size: 11px; color: black;">'+showDay+'</span></td>';
		}

		if ( ((i%7)==0) && (i<42))
		{
			calstr += '</tr><tr>';
			onstartday=1;
		}

		
	}

	calstr += '</tr>';
	calstr += '</table>';
	
	document.getElementById(('cal_'+j_id)).innerHTML=calstr;
		

}
