
var duplicate_check = false;
var acres_fill = false;
var station_link_fill = false;


var dontgo = false;
var skipstep = false;
var subbox = false;
var thenumnum;
var currow;
var tile_Fill = false;


function newReportLink(pagename) 
{
	window.open(pagename,"reportWindow","width=1000,height=550,toolbar=0,scrollbars=yes,resizable=yes"); 
}  

// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

function isInteger(s)
{
	var i;
	for (i = 0; i < s.length; i++)
	{
		// Check that current character is number.
		var c = s.charAt(i);
		if (((c < "0") || (c > "9"))) return false;
	}
	// All characters are numbers.
	return true;
}

function stripCharsInBag(s, bag)
{
	var i;
	var returnString = "";
	// Search through string's characters one by one.
	// If character is not in bag, append to returnString.
	for (i = 0; i < s.length; i++)
	{
		// Check that current character isn't whitespace.
		var c = s.charAt(i);
		if (bag.indexOf(c) == -1) returnString += c;
	}
	return returnString;
}
function checkInternationalPhone(strPhone)
{
	s=stripCharsInBag(strPhone,validWorldPhoneChars);
	return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

var dontOpenMe = false;
function noOpen()
{
	dontOpenMe = true;
}
function jsconfirm()
{
	var decide = confirm("Are you sure you want to delete this customer?");
	if (decide)
	{
		alert("Customer would be deleted...");
	} else {
		alert("Action cancelled.");
	}
}
function winClose()
{
	if (confirm("Are you sure you want to navigate away from this page?"))
	{
		window.close();
	}

	return false;
}
function helpsystem(url)
{
	window.open('/app/help/index.php?document='+url,'helpSystem','width=600,height=400')	
}
function helpsystempreview(acountvariable)
{
	document.getElementById('helpdata').value = document.getElementById('helpSystem_contents'+acountvariable).value;
	window.open('/app/help/preview.php','newHelp','width=600,height=400');
	document.getElementById('previewhelp').submit();
}

function submitForm(formId) {
	var formObj = document.getElementById(formId);
	formObj.submit();
}

function refreshForm(formId) 
{	
	if (promptSave() == true)
	{
		var formObj = document.getElementById(formId);
		formObj.submit();
	}
}


function testIsValidObject(objToTest) 
{
	if (objToTest == null || objToTest == undefined) 
	{
		return false;
	}
	return true;
}

function tileFill(num)
{
	if (tile_Fill == true)
	{
		tileArray= Array();
		tileArray = tileList;
		
		if (document.getElementById(tableName+'_FieldID'+num).value != "" && document.getElementById(tableName+'_SubFieldID'+num).value != "")
		{
			if (tileArray[document.getElementById(tableName+'_FieldID'+num).value+document.getElementById(tableName+'_SubFieldID'+num).value] == 1)
			{
				document.getElementById('ManureApplications_TileInspected'+num).disabled = false;	
			} else {
				document.getElementById('ManureApplications_TileInspected'+num).disabled = true;	
			}
		}
	}
}

function acresFill(num)
{
	if (acres_fill == true)
	{
		acresArray = Array();
		acresArray = acresList;
		if (document.getElementById(tableName+'_AcresApplied'+num).value != acresArray[document.getElementById(tableName+'_FieldID'+num).value+document.getElementById(tableName+'_SubFieldID'+num).value])
		{
			if (document.getElementById(tableName+'_FieldID'+num).value != "" && document.getElementById(tableName+'_FieldID'+num).value)
			{
				//var confirmbox = confirm("Would you like to autofill the acres information for this entry?\n\nOK - Yes\nCancel - No");
				var confirmbox = true;
				if (confirmbox)
				{
					document.getElementById(tableName+'_AcresApplied'+num).value = acresArray[document.getElementById(tableName+'_FieldID'+num).value+document.getElementById(tableName+'_SubFieldID'+num).value];
				}
			}
		}
	}
}

// BLM - added stationLinkFill to populate weather station links on weather app
function stationLinkFill(num)
{
	if (station_link_fill == true)
	{
		linkArray = Array();
		linkArray = linkList;

		if (document.getElementById('Customers_WeatherStation'+num).innerHTML != linkArray[document.getElementById(tableName+'_CustomerNbr'+num).value])
		{
			if (document.getElementById(tableName+'_CustomerNbr'+num).value != "" && document.getElementById(tableName+'_CustomerNbr'+num).value)
			{
				//var confirmbox = confirm("Would you like to autofill the acres information for this entry?\n\nOK - Yes\nCancel - No");
				var confirmbox = true;
				if (confirmbox)
				{
					document.getElementById('Customers_WeatherStation'+num).innerHTML = linkArray[document.getElementById(tableName+'_CustomerNbr'+num).value];
					document.getElementById('Customers_WeatherStation'+num).href = url2+linkArray[document.getElementById(tableName+'_CustomerNbr'+num).value];
				}
			}
		}
	}
}

function checkChange(num)
{	

	if (num > -1 && testIsValidObject(document.getElementById('rowUpdated'+num)) == true)
	{
		document.getElementById('rowUpdated'+num).value = "yes";
	}

	//document.getElementById('headerimg').src = "/images/header_save.jpg";
	document.getElementById('notsavedbig').className = "visible";
	if(document.getElementById('updateFormRow'+num).className != "new")
	{
		document.getElementById('updateFormRow'+num).style.fontWeight = "bold";
	
		//if you're wondering how this works, welcome to the party.
		iteml = document.getElementById('updateFormRow'+num).childNodes.length;
		for(i=0;i<iteml;i++)
		{
			if (document.getElementById('updateFormRow'+num).childNodes.item(i).childNodes.item(0))
			{
				document.getElementById('updateFormRow'+num).childNodes.item(i).childNodes.item(0).style.fontWeight = "bold";
			}
		}
	}
	document.getElementById('changed').value = "yes";
}

function checkAll()
{
	/* INITIALIZE VARIABLES */
	var count = parseInt(document.getElementById('count').value);

	/* DUPLICATE CHECKING */
	if (duplicate_check == true)
	{
		var keysArray = Array();
		var dupeCheckDataNew = Array();
		var dupeCheckDataKeyNew = Array();
		skipstep = false;

		/* GET KEYS AND INITIALIZE COUNTS */
		for(r=0;r<count;r++)
		{
			keysArray[r] = document.getElementById(dupeCheckKey+r).value;
		}

		/* REMOVE ARRAY ENTRIES THAT CONSIST OF FIELDS WE ARE DISPLAYING TO THE USER */
		v = 0;
		for(t=0;t<dupeCheckData.length;t++)
		{
			var flagme = false;
			for(e=0;e<keysArray.length;e++)
			{
				if (dupeCheckDataKey[t] == keysArray[e])
				{
					flagme = true;
				}
			}
			if (flagme == false)
			{
				dupeCheckDataNew[v] = dupeCheckData[t];
				dupeCheckDataKeyNew[v] = dupeCheckDataKey[t];
				v++;
			}
		}

		/* ADD ENTRIES DISPLAYING ON THE PAGE TO ARRAY */
		for(r=0;r<count;r++)
		{
			if (document.getElementById(primary_field+r).value != "")
			{
				dupeCheckDataKeyNew[v] = document.getElementById(dupeCheckKey+r).value;
				dupeCheckDataNew[v] = Array();
				for(g=0;g<dupeCheckFieldArray.length;g++)
				{
					dupeCheckDataNew[v][g] = document.getElementById(dupeCheckFieldArray[g]+r).value;
				}
				v++;
			}
		}

		/* LOOP THROUGH ARRAY OF DATA AND COUNT MATCHES */
		for(r=0;r<count;r++)
		{
			for(t=0;t<dupeCheckDataNew.length;t++)
			{
				var checkCount = 0;
				for(s=0;s<dupeCheckFieldArray.length;s++)
				{
					if(document.getElementById(dupeCheckFieldArray[s]+r).value == dupeCheckDataNew[t][s])
					{
						if(document.getElementById(dupeCheckKey+r).value != dupeCheckDataKeyNew[t])
						{
							checkCount++;
							if (checkCount == dupeCheckFieldArray.length)
							{
								var thestring = '';
								for(f=0;f<dupeCheckFieldArray.length;f++)
								{
									thestring+= document.getElementById(dupeCheckFieldArray[f]+r).value;
									if (f < dupeCheckFieldArray.length-1)
									{
										thestring+= "/";	
									}
								}

								alert("Unable to save data. Duplicate entry found.\n\n"+thestring);
								dontgo = true;
								skipstep = true;
								return false;
							}
						}
					}
				}
			}
		}

		/*
		for(r=0;r<count;r++)
		{
			var dupe = true;
			for(z=0;z<checkCount[r];z++)
			{
				if(checkCount[r][z] == false)
				{
					dupe = false;	
				}
			}
			
			if (dupe == true)
			{
				var thestring = '';
				for(s=0;s<dupeCheckFieldArray.length;s++)
				{
					thestring+= document.getElementById(dupeCheckFieldArray[s]+r).value;
					if (s < dupeCheckFieldArray.length-1)
					{
						thestring+= "/";	
					}
				}
				
				alert("Unable to save data. Duplicate entry found.\n\n"+thestring);
				dontgo = true;
				return false;
				
			}
		}
		*/
	}
	if (check_all == true && skipstep == false)
	{
		var count = parseInt(document.getElementById('count').value);
		dontgo = false;

		for (i=0;i<count;i++)
		{
			for(j=0;j<fields.length;j++)
			{
				fieldname = fields[j]+'['+i+']'
				fullfieldname = fieldname;
				fieldname = fields[j];
				thenumnum = i;
				/*
				fieldname = fieldname.replace("0","");
				fieldname = fieldname.replace("1","");
				fieldname = fieldname.replace("2","");
				fieldname = fieldname.replace("3","");
				fieldname = fieldname.replace("4","");
				fieldname = fieldname.replace("5","");
				fieldname = fieldname.replace("6","");
				fieldname = fieldname.replace("7","");
				fieldname = fieldname.replace("8","");
				fieldname = fieldname.replace("9","");
				fieldname = fieldname.replace("[","");
				fieldname = fieldname.replace("]","");
				*/
				fullfieldname = fullfieldname.replace("[","");
				fullfieldname = fullfieldname.replace("]","");

				if (typeof checkField == "function" && document.getElementById(primary_field+i).value != "")
				{
					checkField(fieldname);
					currow = i;
				}
			}
		}

		if (dontgo == false)
		{
			submitForm('updateForm');
		}
		
	} else if (skipstep == true && check_all == true) {

	} else {
		submitForm('updateForm');	
	}
}
function checkFields(fieldname,thenum)
{
	fullfieldname = fieldname;
	thenumnum = thenum;

	fieldname = fieldname.replace("0","");
	fieldname = fieldname.replace("1","");
	fieldname = fieldname.replace("2","");
	fieldname = fieldname.replace("3","");
	fieldname = fieldname.replace("4","");
	fieldname = fieldname.replace("5","");
	fieldname = fieldname.replace("6","");
	fieldname = fieldname.replace("7","");
	fieldname = fieldname.replace("8","");
	fieldname = fieldname.replace("9","");
	fieldname = fieldname.replace("[","");
	fieldname = fieldname.replace("]","");
	fullfieldname = fullfieldname.replace("[","");
	fullfieldname = fullfieldname.replace("]","");

	if (typeof checkField == "function")
	{
		checkField(fieldname);
		currow = thenumnum;
	}
}

/* FIELD CHECK TYPES */
function checkFieldData(fieldname,required,name,type)
{
	document.getElementById(fieldname).className = "normalfield";
	if (required == true && dontgo==false)
	{
		if (document.getElementById(fieldname).value == "")
		{
			alert (name + " is required.");
			dontgo = true;
			document.getElementById(fieldname).focus();
			return false;
		}
	}
	if (type && dontgo==false)
	{
		switch(type)
		{
			/* SUB FIELD CHECK */
			case "subfieldupe":
			for(c=0;c<document.getElementById('count').value;c++)
			{
				var one = document.getElementById('FarmFields_FieldID'+c).value + '' + document.getElementById('FarmFields_SubFieldID'+c).value;
				var two = document.getElementById('FarmFields_FieldID'+thenumnum).value + '' + document.getElementById('FarmFields_SubFieldID'+thenumnum).value;
				
				if ((one == two) && (c != thenumnum) && (document.getElementById('FarmFields_SubFieldID'+thenumnum).value.length > 0))
				{
					alert ("Duplicate Sub-Field entries.");
					dontgo = true;
					document.getElementById(fieldname).className = "errorfield";
					return false;
				}
			}
				break;
			/* FIELD CHECK */
			case "fieldupe":
			for(c=0;c<document.getElementById('count').value;c++)
			{
				var one = document.getElementById('FarmFields_FieldID'+c).value;
				var two = document.getElementById('FarmFields_FieldID'+thenumnum).value;
				
				if ((one == two) && (c != thenumnum) && (two))
				{
					alert ("Duplicate Field entries.");
					dontgo = true;
					document.getElementById(fieldname).className = "errorfield";
					return false;
				}
			}
				break;
			/* DATE CHECK */
			case "probability":
				var one = document.getElementById(fieldname).value;
				if (one > 100)
				{
					alert ("Probability is not valid.");
					dontgo = true;
					document.getElementById(fieldname).className = "errorfield";
					document.getElementById(fieldname).focus();
					return false;
				} 
				break;
			/* DATE CHECK */
			case "date":
				var RegExPattern = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
				var one = document.getElementById(fieldname).value;
				if (!one.match(RegExPattern))
				{
					alert ("Date is not valid.");
					dontgo = true;
					document.getElementById(fieldname).className = "errorfield";
					document.getElementById(fieldname).focus();
					return false;
				} 
				break;
			/* GAL OR TONS */
			case "galortons":
				var field_gal = fieldname;
				var field_ton = fieldname.replace('Gallons','Tons');
				
				if (document.getElementById(field_gal).value == "" && document.getElementById(field_ton).value == "")
				{
					alert("Please enter a gallon or ton value");
					dontgo = true;
					return false;
					document.getElementById(field_gal).focus();
				}
				break;
			/* PHONE CHECK */
			case "phone":
			var Phone=document.getElementById(fieldname).value;
			if (checkInternationalPhone(Phone)==false)
			{
				alert("Please Enter a Valid Phone Number")
				dontgo = true;
				document.getElementById(fieldname).className = "errorfield";
				document.getElementById(fieldname).focus();
				return false;
			}
				break;
			/* FILE TYPE CHECK */
			case "filetype":
			var filename=document.getElementById(fieldname).value;
			if (filename.substr(filename.length-3) != "csv")
			{
				alert("Please Enter a Valid CSV File")
				dontgo = true;
				document.getElementById(fieldname).className = "errorfield";
				document.getElementById(fieldname).focus();
				return false;
			}
				break;
		}	
	}
}

function updateFormCheck()
{
	
}

function highlightUpdateFormRow(theclass,thenum)
{
	if (document.getElementById('DeleteRow'+thenum).checked)
	{
		document.getElementById('updateFormRow'+thenum).className = 'delete';	
	} else {
		document.getElementById('updateFormRow'+thenum).className = 'normal';	
	}
}

function highlightUpdateFormRowExpand(theclass,thenum)
{
	if (document.getElementById('DeleteRow'+thenum).checked)
	{
		document.getElementById('CollapsiblePanel'+thenum).className = 'delete';	
	} else {
		document.getElementById('CollapsiblePanel'+thenum).className = 'normal';	
	}
}

function cancelUpdateForm(loc)
{
	if (document.getElementById('changed').value == "yes")
	{
		confirmgo = confirm("You requested to cancel your changes.\n\n  Click OK to discard changes and re-display screen. \n\n  Click Cancel to return to changes.");
		if (confirmgo)
		{	
			window.location = loc;
		} else {
			return false;
		}
	} else {
			window.location = loc;	
	}
}

function promptSave()
{
	if (document.getElementById('changed').value == "yes")
	{
		theprompt = confirm("You did not save your changes.\n\n  Click OK to discard changes and continue.\n\n  Click Cancel to return to changes.");
		if (theprompt)
		{
			return true;
		} else {
			return false;	
		}
	} else {
		return true;	
	}
}


function addFieldTestTable(updateFieldList,updateTestList)
{
	var data = Array();
	data = window.data;
	
	var newRowCount = parseInt(document.getElementById('new_rows').value);
	var startCount = document.getElementById('count').value;
	
	if (newRowCount > 0 && newRowCount < 51)
	{
		if (addnew == true)
		{
			for(x=0;x<newRowCount;x++)
			{
				newrownum = parseInt(document.getElementById('count').value); //jrt
				document.getElementById('updateFormContainer').innerHTML += '<table class="excel" id="updateFormNewBox' + newrownum + '" cellpadding="0" cellspacing="0"><tbody id="testx"></tbody></table>';
				var tbl = document.getElementById('updateFormNewBox' + newrownum);
				//var lastRow = tbl.rows.length;
				//var iteration = lastRow;
				var row = tbl.insertRow(0); //jrt to 0
				row.className = 'new';
				row.id = 'updateFormRow'+newrownum;
				
				var cells = Array();
				for(i=0;i<data.length;i++)
				{
					cells[i] = row.insertCell(i);
					cells[i].width = cellWidths[i];
					newdata = data[i].replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					cells[i].innerHTML = newdata;
					if (i == 0)
					{
						cells[i].innerHTML += '<input type="hidden" value="new" name="newRow['+newrownum+']" id="newRow'+newrownum+'">';  
					}
				}

				  
				var cellsB = Array();
				//tbl.insertRow(newrownum+1); //jrt
				document.getElementById('updateFormContainer').innerHTML += '<table style="width:708px;" name="updateFormTableNormal" id="updateFormTableNormal' + (newrownum) + '" class="updateFormTableNormal msg_body" cellpadding="0" cellspacing="0"><tbody></tbody></table>';
				var tbl = document.getElementById('updateFormTableNormal' + (newrownum))
				tbl.className = "updateFormTableNormal msg_body"; //jrt
				if(document.getElementById("collapseButton").style.display != "inline") //jrt
				{
					$(".msg_body").hide();
				}
				var nrow = tbl.insertRow(0);
				nrow.className = "updateFormRow"+newrownum;
				count = 0;
				counter = 0;
				nStart = subdata.length;
				var k = 0;
				for(j=0;j<(subdata.length*2);j++)
				{

						cellsB[k] = nrow.insertCell(k);
						if(j%2 == 0)
						{
							newdata = subdatatitles[count];
							cellsB[k].className="headerCell";
							counter++;
						}
						else
						{
							newdata = subdata[count].replace("newvalue", newrownum);
							cellsB[k].className = "updateFormCell";
							count++;
							counter = 0;
						}
						cellsB[k].innerHTML = newdata
						k++;
						if(j%2 != 0)
						{
							cellsB[k] = nrow.insertCell(k);
							cellsB[k].innerHTML = "&#160;"
							k++;
						}

				}

				  document.getElementById('count').value = newrownum+1;


			}

		}
	} else {
		alert("New row value must be between 0 and 50.");	
	}
	
	if (updateFieldList == true)
	{
		for(x=parseInt(startCount);x<parseInt(startCount)+parseInt(newRowCount);x++)
		{
			changeSubFieldList(x);
		}
	}
	
	if (updateTestList == true)
	{
		for(x=parseInt(startCount);x<parseInt(startCount)+parseInt(newRowCount);x++)
		{
			changeManureTestDateList(x);
		}
	}
}

function addTable(updateFieldList,updateTestList)
{
	var data = Array();
	data = window.data;

	var newRowCount = parseInt(document.getElementById('new_rows').value);
	var startCount = document.getElementById('count').value;
	
	if (newRowCount > 0 && newRowCount < 51)
	{
		if (addnew == true)
		{
			for(x=0;x<newRowCount;x++)
			{
				newrownum = parseInt(document.getElementById('count').value); //jrt
				document.getElementById('updateFormContainer').innerHTML += '<table class="excel" id="updateFormNewBox' + newrownum + '" cellpadding="0" cellspacing="0"><tbody id="testx"></tbody></table>';
				var tbl = document.getElementById('updateFormNewBox' + newrownum);
				//var lastRow = tbl.rows.length;
				//var iteration = lastRow;
				var row = tbl.insertRow(0); //jrt to 0
				row.className = 'new';
				row.id = 'updateFormRow'+newrownum;
				
				var cells = Array();
				for(i=0;i<data.length;i++)
				{
					cells[i] = row.insertCell(i);
					cells[i].width = cellWidths[i];
					newdata = data[i].replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					newdata = newdata.replace("newvalue", newrownum);
					cells[i].innerHTML = newdata;
					
					
					/*
					thevalue = document.getElementById('updateFormRow'+newrownum).innerHTML;
					
					newdata = thevalue.replace("newvalue", newrownum);
					for(xc=0;xc<200;xc++)
					{
						newdata = newdata.replace("newvalue", newrownum);
					}
					document.getElementById('updateFormRow'+newrownum).innerHTML = newdata;
					*/

					if (i == 0)
					{
						cells[i].innerHTML += '<input type="hidden" value="new" name="newRow['+newrownum+']" id="newRow'+newrownum+'">';  
					}
				}
				
				/*

				var cellsB = Array();
				//tbl.insertRow(newrownum+1); //jrt
				document.getElementById('updateFormContainer').innerHTML += '<table name="updateFormTableNormal" id="updateFormTableNormal' + (newrownum) + '" class="updateFormTableNormal msg_body" style="width:auto;" cellpadding="0" cellspacing="0"><tbody></tbody></table>';
				var tbl = document.getElementById('updateFormTableNormal' + (newrownum))
				tbl.className = "msg_body"; //jrt
				if(document.getElementById("collapseButton").style.display != "inline") //jrt
				{
					$(".msg_body").hide();
				}
				var nrow = tbl.insertRow(0);
				nrow.className = "updateFormRow"+newrownum;
				count = 0;
				counter = 0;
				var k = 0;
				for(j=0;j<(subdata.length*2);j++)
				{
					cellsB[k] = nrow.insertCell(k);
					if(j%2 == 0)
					{
						newdata = subdatatitles[count];
						cellsB[k].className="headerCell";
						counter++;
					}
					else
					{
						//josh
						var unique = "sdcell"+k+"k"+count;
						newdata = subdata[count].replace("newvalue", newrownum);
						for(xc=0;xc<100;xc++)
						{
							newdata = newdata.replace("newvalue", newrownum);
						}
						cellsB[k].className = "updateFormCell";
						//cellsB[k].id = unique;
						count++;
						counter = 0;
					}
					cellsB[k].innerHTML = newdata;
					//document.getElementById(unique).innerHTML = newdata;
					k++;
					if(j%2 != 0)
					{
						cellsB[k] = nrow.insertCell(k);
						cellsB[k].innerHTML = "&#160;"
						k++;
					}

				}
				*/
				
				//subdata
				document.getElementById('updateFormContainer').innerHTML += '<div class="msg_body"><table class="updateFormTableNormal" id="updateFormNewBoxSub' + newrownum + '" cellpadding="0" cellspacing="0"><tbody id="testx"></tbody></table>';
				var tbl = document.getElementById('updateFormNewBoxSub' + newrownum);
				
				if(document.getElementById("collapseButton").style.display != "inline") //jrt
				{
					$(".msg_body").hide();
				}
				
				var row = tbl.insertRow(0); //jrt to 0
				row.id = 'updateFormRowSub'+newrownum;
				var cells = Array();
				j=0;
				for(i=0;i<subdata.length;i++)
				{
					cells[j] = row.insertCell(j);
					cells[j].innerHTML = '<strong>'+subdatatitles[i]+'</strong>';
					
					j++;
					
					newdata = subdata[i];
					for(f=0;f<500;f++)
					{
						newdata = newdata.replace("newvalue", newrownum);	
					}
					cells[j] = row.insertCell(j);
					cells[j].innerHTML = newdata;
					
					j++;
				}
				document.getElementById('updateFormContainer').innerHTML += "</div>";
				//end subdata
				
				document.getElementById('count').value = newrownum+1;
			}

		}
	} else {
		alert("New row value must be between 0 and 50.");	
	}
	
	if (updateFieldList == true)
	{
		for(x=parseInt(startCount);x<parseInt(startCount)+parseInt(newRowCount);x++)
		{
			changeSubFieldList(x);
		}
	}
	
	if (updateTestList == true)
	{
		for(x=parseInt(startCount);x<parseInt(startCount)+parseInt(newRowCount);x++)
		{
			changeManureTestDateList(x);
		}
	}

}


function addRow(updateFieldList,updateTestList)
{
	var data = Array();
	data = window.data;
	
	var newRowCount = parseInt(document.getElementById('new_rows').value);
	var startCount = document.getElementById('count').value;
	
	if (newRowCount > 0 && newRowCount < 51)
	{
		if (addnew == true)
		{
			for(x=0;x<newRowCount;x++)
			{
				  newrownum = parseInt(document.getElementById('count').value);
				  
				  var tbl = document.getElementById('updateFormTable');
				  var lastRow = tbl.rows.length;
				  var iteration = lastRow;
				  var row = tbl.insertRow(lastRow);
				  row.className = 'new';
				  row.id = 'updateFormRow'+newrownum;
				  
				  var cells = Array();
				  for(i=0;i<data.length;i++)
				  {
					  cells[i] = row.insertCell(i);
					  newdata = data[i].replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  newdata = newdata.replace("newvalue", newrownum);
					  cells[i].innerHTML = newdata;

					  if (i == 0)
					  {
						cells[i].innerHTML += '<input type="hidden" value="new" name="newRow['+newrownum+']" id="newRow'+newrownum+'">';  
					  }
				  }
				  
				  document.getElementById('count').value = newrownum+1;
			}
		}
	} else {
		alert("New row value must be between 0 and 50.");	
	}
	
	if (updateFieldList == true)
	{
		for(x=parseInt(startCount);x<parseInt(startCount)+parseInt(newRowCount);x++)
		{
			changeSubFieldList(x);
		}
	}
	
	if (updateTestList == true)
	{
		for(x=parseInt(startCount);x<parseInt(startCount)+parseInt(newRowCount);x++)
		{
			changeManureTestDateList(x);
		}
	}
}

function changeSubFieldList(num,activeonly)
{
	var fieldvalue = document.getElementById(tableName+'_FieldID'+num).value;

	if (fieldvalue != "")
	{
		var fieldArray = Array();
		if (activeonly == true)
		{
			fieldArray = activeFieldList[fieldvalue];
		} else {
			fieldArray = fieldList[fieldvalue];
		}
		
		document.getElementById(tableName+'_SubFieldID'+num).options.length=0;
		for(i=0;i<fieldArray.length;i++)
		{
			document.getElementById(tableName+'_SubFieldID'+num).options[i] = new Option(fieldArray[i],fieldArray[i],false,false);
		}
	} else {
			document.getElementById(tableName+'_SubFieldID'+num).options.length=0;
			i=0;
			document.getElementById(tableName+'_SubFieldID'+num).options[i] = new Option(" ","",true,true);
	}
}

function loadSubLists()
{		
	var count = document.getElementById('count').value;
		
	for (z=0;z<count;z++)
	{
		num = z;
		var fieldvalue = document.getElementById(tableName+'_FieldID'+num).value;
		
		if (fieldvalue != "")
		{
			var fieldArray = Array();
			fieldArray = fieldList[fieldvalue];
			
			document.getElementById(tableName+'_SubFieldID'+num).options.length=0;
			for(i=0;i<fieldArray.length;i++)
			{
				if (fieldArray[i] == document.getElementById(tableName+'_InitialSubFieldID'+num).value)
				{
					document.getElementById(tableName+'_SubFieldID'+num).options[i] = new Option(fieldArray[i],fieldArray[i],true,true);
				} else {
					document.getElementById(tableName+'_SubFieldID'+num).options[i] = new Option(fieldArray[i],fieldArray[i],false,false);
				}
			}
		} else {
			document.getElementById(tableName+'_SubFieldID'+num).options.length=0;
			i=0;
			document.getElementById(tableName+'_SubFieldID'+num).options[i] = new Option(" ","",true,true);
		}
	}
}


function changeManureTestDateList(num)
{
	var manvalue = document.getElementById(tableName+'_ManureSourceID'+num).value;
	var testvalue = document.getElementById(tableName+'_ManureType'+num).value;

	if (manvalue != "" && testvalue != "")
	{
		var fieldArray = Array();
		fieldArray = manureList[manvalue][testvalue];
		
		document.getElementById(tableName+'_TestDate'+num).options.length=0;
		document.getElementById(tableName+'_TestDate'+num).options[0] = new Option("-- Book Value --","0000-00-00",true,true);
		r = 1;
		for(i=0;i<fieldArray.length;i++)
		{
					thestring2 = fieldArray[i];
					theyear = thestring2.substring(0,4);
					themonth = thestring2.substring(5,7);
					theday = thestring2.substring(8,10);
					newdateval = themonth+'/'+theday+'/'+theyear;
					
			document.getElementById(tableName+'_TestDate'+num).options[r] = new Option(newdateval,fieldArray[i],false,false);
				r++;
		}
	} else {
			document.getElementById(tableName+'_TestDate'+num).options.length=0;
			i=0;
			document.getElementById(tableName+'_TestDate'+num).options[i] = new Option(" ","",true,true);
		}
}

function loadTestLists()
{
	var count = document.getElementById('count').value;
	
	for (z=0;z<count;z++)
	{
		num = z;
		var manvalue = document.getElementById(tableName+'_ManureSourceID'+num).value;
		var testvalue = document.getElementById(tableName+'_ManureType'+num).value;
		
		if (manvalue != "" && testvalue != "")
		{
			var fieldArray = Array();
			fieldArray = manureList[manvalue][testvalue];
			
			document.getElementById(tableName+'_TestDate'+num).options.length=0;
			document.getElementById(tableName+'_TestDate'+num).options[0] = new Option("-- Book Value --","0000-00-00",true,true);
			r = 1;
			if (typeof fieldArray != "undefined")
			{
				for(i=0;i<fieldArray.length;i++)
				{
					thestring2 = fieldArray[i];
					theyear = thestring2.substring(0,4);
					themonth = thestring2.substring(5,7);
					theday = thestring2.substring(8,10);
					newdateval = themonth+'/'+theday+'/'+theyear;
						
					if (fieldArray[i] == document.getElementById(tableName+'_InitialTestDate'+num).value)
					{
						document.getElementById(tableName+'_TestDate'+num).options[r] = new Option(newdateval,fieldArray[i],true,true);
					} else {
						document.getElementById(tableName+'_TestDate'+num).options[r] = new Option(newdateval,fieldArray[i],false,false);
					}
					r++;
				}
			}
		} else {
			document.getElementById(tableName+'_TestDate'+num).options.length=0;
			i=0;
			document.getElementById(tableName+'_TestDate'+num).options[i] = new Option(" ","",true,true);
		}
	}
}

function fillDate(fieldname)
{
	fullfieldname = fieldname;
	fullfieldname = fullfieldname.replace("[","");
	fullfieldname = fullfieldname.replace("]","");
	
	thestring = document.getElementById('Date'+fullfieldname).value;
	
	dontfix = false;
	
	if(thestring.substr(1,1) == "/" && thestring.substr(3,1) == "/")
	{
		theyear = thestring.substring(4,8);
		themonth = '0'+thestring.substring(0,1);
		theday = '0'+thestring.substring(2,3);
		
		document.getElementById(fullfieldname).value = theyear+'-'+themonth+'-'+theday;
		document.getElementById('Date'+fullfieldname).value = themonth+'/'+theday+'/'+theyear;
		
		dontfix = true;
	}
	
	if(thestring.substr(2,1) == "/" && thestring.substr(4,1) == "/")
	{
		theyear = thestring.substring(5,9);
		themonth = thestring.substring(0,2);
		theday = '0'+thestring.substring(3,4);
		
		document.getElementById(fullfieldname).value = theyear+'-'+themonth+'-'+theday;
		document.getElementById('Date'+fullfieldname).value = themonth+'/'+theday+'/'+theyear;
		
		dontfix = true;
	}
	
	if(thestring.substr(1,1) == "/" && thestring.substr(4,1) == "/")
	{
		theyear = thestring.substring(5,9);
		themonth = '0'+thestring.substring(0,1);
		theday = thestring.substring(2,4);
		
		document.getElementById(fullfieldname).value = theyear+'-'+themonth+'-'+theday;
		document.getElementById('Date'+fullfieldname).value = themonth+'/'+theday+'/'+theyear;
		
		dontfix = true;
	}
	
	if (dontfix == false)
	{
		theyear = thestring.substring(6,10);
		themonth = thestring.substring(0,2);
		theday = thestring.substring(3,5);
		
		document.getElementById(fullfieldname).value = theyear+'-'+themonth+'-'+theday;
	}
	
}


















//Javascript name: My Date Time Picker
//Date created: 16-Nov-2003 23:19
//Scripter: TengYong Ng
//Website: http://www.rainforestnet.com
//Copyright (c) 2003 TengYong Ng
//FileName: DateTimePicker.js
//Version: 0.8
//Contact: contact@rainforestnet.com
// Note: Permission given to use this script in ANY kind of applications if
//       header lines are left unchanged.

//Global variables
var winCal;
var dtToday=new Date();
var Cal;
var docCal;
var MonthName=["January", "February", "March", "April", "May", "June","July", 
	"August", "September", "October", "November", "December"];
var WeekDayName=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];	
var exDateTime;//Existing Date and Time

//Configurable parameters
var cnTop="350";//top coordinate of calendar window.
var cnLeft="300";//left coordinate of calendar window
var WindowTitle ="DateTime Picker";//Date Time Picker title.
var WeekChar=3;//number of character for week day. if 2 then Mo,Tu,We. if 3 then Mon,Tue,Wed.
var CellWidth=20;//Width of day cell.
var DateSeparator="/";//Date Separator, you can change it to "/" if you want.
var TimeMode=24;//default TimeMode value. 12 or 24

var ShowLongMonth=true;//Show long month name in Calendar header. example: "January".
var ShowMonthYear=true;//Show Month and Year in Calendar header.
var MonthYearColor="#3B6D9C";//Font Color of Month and Year in Calendar header.
var WeekHeadColor="#3B6D9C";//Background Color in Week header.
var SundayColor="#dddddd";//Background color of Sunday.
var SaturdayColor="#dddddd";//Background color of Saturday.
var WeekDayColor="white";//Background color of weekdays.
var FontColor="#666666";//color of font in Calendar day cell.
var TodayColor="#dddddd";//Background color of today.
var SelDateColor="#dddddd";//Backgrond color of selected date in textbox.
var YrSelColor="#3B6D9C";//color of font of Year selector.
var ThemeBg="";//Background image of Calendar window.
//end Configurable parameters
//end Global variable

var thename;
var thecount;

function NewCalDate(pCtrl,pFormat,thefieldname,thefieldcount,pShowTime,pTimeMode)
{
	thename = thefieldname;
	thecount = thefieldcount;
	
	Cal=new Calendar(dtToday);
	if ((pShowTime!=null) && (pShowTime))
	{
		Cal.ShowTime=true;
		if ((pTimeMode!=null) &&((pTimeMode=='12')||(pTimeMode=='24')))
		{
			TimeMode=pTimeMode;
		}		
	}	
	if (pCtrl!=null)
		Cal.Ctrl=pCtrl;
	if (pFormat!=null)
		Cal.Format=pFormat.toUpperCase();
	
	exDateTime=document.getElementById(pCtrl).value;
	if (exDateTime!="")//Parse Date String
	{
		var Sp1;//Index of Date Separator 1
		var Sp2;//Index of Date Separator 2 
		var tSp1;//Index of Time Separator 1
		var tSp1;//Index of Time Separator 2
		var strMonth;
		var strDate;
		var strYear;
		var intMonth;
		var YearPattern;
		var strHour;
		var strMinute;
		var strSecond;
		//parse month
		Sp1=exDateTime.indexOf(DateSeparator,0)
		Sp2=exDateTime.indexOf(DateSeparator,(parseInt(Sp1)+1));
		
		if ((Cal.Format.toUpperCase()=="DDMMYYYY") || (Cal.Format.toUpperCase()=="DDMMMYYYY"))
		{
			strMonth=exDateTime.substring(Sp1+1,Sp2);
			strDate=exDateTime.substring(0,Sp1);
		}
		else if ((Cal.Format.toUpperCase()=="MMDDYYYY") || (Cal.Format.toUpperCase()=="MMMDDYYYY"))
		{
			strMonth=exDateTime.substring(0,Sp1);
			strDate=exDateTime.substring(Sp1+1,Sp2);
		}
		if (isNaN())
			intMonth=Cal.GetMonthIndex(strMonth);
		else
			intMonth=parseInt(strMonth,10)-1;	
		if ((parseInt(intMonth,10)>=0) && (parseInt(intMonth,10)<12))
			Cal.Month=intMonth;
		//end parse month
		//parse Date
		if ((parseInt(strDate,10)<=Cal.GetMonDays()) && (parseInt(strDate,10)>=1))
			Cal.Date=strDate;
		//end parse Date
		//parse year
		strYear=exDateTime.substring(Sp2+1,Sp2+5);
		YearPattern=/^\d{4}$/;
		if (YearPattern.test(strYear))
			Cal.Year=parseInt(strYear,10);
		//end parse year
		//parse time
		if (Cal.ShowTime==true)
		{
			tSp1=exDateTime.indexOf(":",0)
			tSp2=exDateTime.indexOf(":",(parseInt(tSp1)+1));
			strHour=exDateTime.substring(tSp1,(tSp1)-2);
			Cal.SetHour(strHour);
			strMinute=exDateTime.substring(tSp1+1,tSp2);
			Cal.SetMinute(strMinute);
			strSecond=exDateTime.substring(tSp2+1,tSp2+3);
			Cal.SetSecond(strSecond);
		}	
	}
	winCal=window.open("","DateTimePicker","toolbar=0,status=0,menubar=0,fullscreen=no,width=220,height=245,resizable=1,top="+cnTop+",left="+cnLeft);
	docCal=winCal.document;
	RenderCal();
}

function RenderCal()
{
	var vCalHeader;
	var vCalData;
	var vCalTime;
	var i;
	var j;
	var SelectStr;
	var vDayCount=0;
	var vFirstDay;

	docCal.open();
	docCal.writeln("<html><head><title>"+WindowTitle+"</title>");
	docCal.writeln("<script>var winMain=window.opener;</script>");
	docCal.writeln("</head><body background='"+ThemeBg+"' link="+FontColor+" vlink="+FontColor+"><form name='Calendar'>");

	vCalHeader="<table border=1 cellpadding=1 cellspacing=1 width='100%' align=\"center\" valign=\"top\">\n";
	//Month Selector
	vCalHeader+="<tr>\n<td colspan='7'><table border=0 width='100%' cellpadding=0 cellspacing=0><tr><td align='left'>\n";
	vCalHeader+="<select name=\"MonthSelector\" onChange=\"javascript:winMain.Cal.SwitchMth(this.selectedIndex);winMain.RenderCal();\">\n";
	for (i=0;i<12;i++)
	{
		if (i==Cal.Month)
			SelectStr="Selected";
		else
			SelectStr="";	
		vCalHeader+="<option "+SelectStr+" value >"+MonthName[i]+"\n";
	}
	vCalHeader+="</select></td>";
	//Year selector
	vCalHeader+="\n<td align='right'><a href=\"javascript:winMain.Cal.DecYear();winMain.RenderCal()\"><b><font color=\""+YrSelColor+"\"><</font></b></a><font face=\"Verdana\" color=\""+YrSelColor+"\" size=2><b> "+Cal.Year+" </b></font><a href=\"javascript:winMain.Cal.IncYear();winMain.RenderCal()\"><b><font color=\""+YrSelColor+"\">></font></b></a></td></tr></table></td>\n";	
	vCalHeader+="</tr>";
	//Calendar header shows Month and Year
	if (ShowMonthYear)
		vCalHeader+="<tr><td colspan='7'><font face='Verdana' size='2' align='center' color='"+MonthYearColor+"'><b>"+Cal.GetMonthName(ShowLongMonth)+" "+Cal.Year+"</b></font></td></tr>\n";
	//Week day header
	vCalHeader+="<tr bgcolor="+WeekHeadColor+">";
	for (i=0;i<7;i++)
	{
		vCalHeader+="<td align='center'><font face='Verdana' size='2'>"+WeekDayName[i].substr(0,WeekChar)+"</font></td>";
	}
	vCalHeader+="</tr>";	
	docCal.write(vCalHeader);
	
	//Calendar detail
	CalDate=new Date(Cal.Year,Cal.Month);
	CalDate.setDate(1);
	vFirstDay=CalDate.getDay();
	vCalData="<tr>";
	for (i=0;i<vFirstDay;i++)
	{
		vCalData=vCalData+GenCell();
		vDayCount=vDayCount+1;
	}
	for (j=1;j<=Cal.GetMonDays();j++)
	{
		var strCell;
		vDayCount=vDayCount+1;
		if ((j==dtToday.getDate())&&(Cal.Month==dtToday.getMonth())&&(Cal.Year==dtToday.getFullYear()))
			strCell=GenCell(j,true,TodayColor);//Highlight today's date
		else
		{
			if (j==Cal.Date)
			{
				strCell=GenCell(j,true,SelDateColor);
			}
			else
			{	 
				if (vDayCount%7==0)
					strCell=GenCell(j,false,SaturdayColor);
				else if ((vDayCount+6)%7==0)
					strCell=GenCell(j,false,SundayColor);
				else
					strCell=GenCell(j,null,WeekDayColor);
			}		
		}						
		vCalData=vCalData+strCell;

		if((vDayCount%7==0)&&(j<Cal.GetMonDays()))
		{
			vCalData=vCalData+"</tr>\n<tr>";
		}
	}
	docCal.writeln(vCalData);	
	//Time picker
	if (Cal.ShowTime)
	{
		var showHour;
		showHour=Cal.getShowHour();		
		vCalTime="<tr>\n<td colspan='7' align='center'>";
		vCalTime+="<input type='text' name='hour' maxlength=2 size=1 style=\"WIDTH: 22px\" value="+showHour+" onchange=\"javascript:winMain.Cal.SetHour(this.value)\">";
		vCalTime+=" : ";
		vCalTime+="<input type='text' name='minute' maxlength=2 size=1 style=\"WIDTH: 22px\" value="+Cal.Minutes+" onchange=\"javascript:winMain.Cal.SetMinute(this.value)\">";
		vCalTime+=" : ";
		vCalTime+="<input type='text' name='second' maxlength=2 size=1 style=\"WIDTH: 22px\" value="+Cal.Seconds+" onchange=\"javascript:winMain.Cal.SetSecond(this.value)\">";
		if (TimeMode==12)
		{
			var SelectAm =(parseInt(Cal.Hours,10)<12)? "Selected":"";
			var SelectPm =(parseInt(Cal.Hours,10)>=12)? "Selected":"";

			vCalTime+="<select name=\"ampm\" onchange=\"javascript:winMain.Cal.SetAmPm(this.options[this.selectedIndex].value);\">";
			vCalTime+="<option "+SelectAm+" value=\"AM\">AM</option>";
			vCalTime+="<option "+SelectPm+" value=\"PM\">PM<option>";
			vCalTime+="</select>";
		}	
		vCalTime+="\n</td>\n</tr>";
		docCal.write(vCalTime);
	}	
	//end time picker
	docCal.writeln("\n</table>");
	docCal.writeln("</form></body></html>");
	docCal.close();
}

function cleanUp()
{	
	checkFields(thename,thecount);
	fillDate(thename,thecount);
	checkChange(thecount);
}

function GenCell(pValue,pHighLight,pColor)//Generate table cell with value
{
	var PValue;
	var PCellStr;
	var vColor;
	var vHLstr1;//HighLight string
	var vHlstr2;
	var vTimeStr;
	
	if (pValue==null)
		PValue="";
	else
		PValue=pValue;
	
	if (pColor!=null)
		vColor="bgcolor=\""+pColor+"\"";
	else
		vColor="";	
	if ((pHighLight!=null)&&(pHighLight))
		{vHLstr1="color='red'><b>";vHLstr2="</b>";}
	else
		{vHLstr1=">";vHLstr2="";}	
	
	if (Cal.ShowTime)
	{
		vTimeStr="winMain.document.getElementById('"+Cal.Ctrl+"').value+=' '+"+"winMain.Cal.getShowHour()"+"+':'+"+"winMain.Cal.Minutes"+"+':'+"+"winMain.Cal.Seconds";
		if (TimeMode==12)
			vTimeStr+="+' '+winMain.Cal.AMorPM";
	}	
	else
		vTimeStr="";		
	PCellStr="<td "+vColor+" width="+CellWidth+" align='center'><font face='verdana' size='2'"+vHLstr1+"<a href=\"javascript:winMain.document.getElementById('"+Cal.Ctrl+"').value='"+Cal.FormatDate(PValue)+"';"+vTimeStr+";window.close(); winMain.cleanUp();\">"+PValue+"</a>"+vHLstr2+"</font></td>";
	return PCellStr;
}

function Calendar(pDate,pCtrl)
{
	//Properties
	this.Date=pDate.getDate();//selected date
	this.Month=pDate.getMonth();//selected month number
	this.Year=pDate.getFullYear();//selected year in 4 digits
	this.Hours=pDate.getHours();	
	
	if (pDate.getMinutes()<10)
		this.Minutes="0"+pDate.getMinutes();
	else
		this.Minutes=pDate.getMinutes();
	
	if (pDate.getSeconds()<10)
		this.Seconds="0"+pDate.getSeconds();
	else		
		this.Seconds=pDate.getSeconds();
		
	this.MyWindow=winCal;
	this.Ctrl=pCtrl;
	this.Format="ddMMyyyy";
	this.Separator=DateSeparator;
	this.ShowTime=false;
	if (pDate.getHours()<12)
		this.AMorPM="AM";
	else
		this.AMorPM="PM";	
}

function GetMonthIndex(shortMonthName)
{
	for (i=0;i<12;i++)
	{
		if (MonthName[i].substring(0,3).toUpperCase()==shortMonthName.toUpperCase())
		{	return i;}
	}
}
Calendar.prototype.GetMonthIndex=GetMonthIndex;

function IncYear()
{	Cal.Year++;}
Calendar.prototype.IncYear=IncYear;

function DecYear()
{	Cal.Year--;}
Calendar.prototype.DecYear=DecYear;
	
function SwitchMth(intMth)
{	Cal.Month=intMth;}
Calendar.prototype.SwitchMth=SwitchMth;

function SetHour(intHour)
{	
	var MaxHour;
	var MinHour;
	if (TimeMode==24)
	{	MaxHour=23;MinHour=0}
	else if (TimeMode==12)
	{	MaxHour=12;MinHour=1}
	else
		alert("TimeMode can only be 12 or 24");		
	var HourExp=new RegExp("^\\d\\d$");
	if (HourExp.test(intHour) && (parseInt(intHour,10)<=MaxHour) && (parseInt(intHour,10)>=MinHour))
	{	
		if ((TimeMode==12) && (Cal.AMorPM=="PM"))
		{
			if (parseInt(intHour,10)==12)
				Cal.Hours=12;
			else	
				Cal.Hours=parseInt(intHour,10)+12;
		}	
		else if ((TimeMode==12) && (Cal.AMorPM=="AM"))
		{
			if (intHour==12)
				intHour-=12;
			Cal.Hours=parseInt(intHour,10);
		}
		else if (TimeMode==24)
			Cal.Hours=parseInt(intHour,10);	
	}
}
Calendar.prototype.SetHour=SetHour;

function SetMinute(intMin)
{
	var MinExp=new RegExp("^\\d\\d$");
	if (MinExp.test(intMin) && (intMin<60))
		Cal.Minutes=intMin;
}
Calendar.prototype.SetMinute=SetMinute;

function SetSecond(intSec)
{	
	var SecExp=new RegExp("^\\d\\d$");
	if (SecExp.test(intSec) && (intSec<60))
		Cal.Seconds=intSec;
}
Calendar.prototype.SetSecond=SetSecond;

function SetAmPm(pvalue)
{
	this.AMorPM=pvalue;
	if (pvalue=="PM")
	{
		this.Hours=(parseInt(this.Hours,10))+12;
		if (this.Hours==24)
			this.Hours=12;
	}	
	else if (pvalue=="AM")
		this.Hours-=12;	
}
Calendar.prototype.SetAmPm=SetAmPm;

function getShowHour()
{
	var finalHour;
    if (TimeMode==12)
    {
    	if (parseInt(this.Hours,10)==0)
		{
			this.AMorPM="AM";
			finalHour=parseInt(this.Hours,10)+12;	
		}
		else if (parseInt(this.Hours,10)==12)
		{
			this.AMorPM="PM";
			finalHour=12;
		}		
		else if (this.Hours>12)
		{
			this.AMorPM="PM";
			if ((this.Hours-12)<10)
				finalHour="0"+((parseInt(this.Hours,10))-12);
			else
				finalHour=parseInt(this.Hours,10)-12;	
		}
		else
		{
			this.AMorPM="AM";
			if (this.Hours<10)
				finalHour="0"+parseInt(this.Hours,10);
			else
				finalHour=this.Hours;	
		}
	}
	else if (TimeMode==24)
	{
		if (this.Hours<10)
			finalHour="0"+parseInt(this.Hours,10);
		else	
			finalHour=this.Hours;
	}	
	return finalHour;	
}				
Calendar.prototype.getShowHour=getShowHour;		

function GetMonthName(IsLong)
{
	var Month=MonthName[this.Month];
	if (IsLong)
		return Month;
	else
		return Month.substr(0,3);
}
Calendar.prototype.GetMonthName=GetMonthName;

function GetMonDays()//Get number of days in a month
{
	var DaysInMonth=[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	if (this.IsLeapYear())
	{
		DaysInMonth[1]=29;
	}	
	return DaysInMonth[this.Month];	
}
Calendar.prototype.GetMonDays=GetMonDays;

function IsLeapYear()
{
	if ((this.Year%4)==0)
	{
		if ((this.Year%100==0) && (this.Year%400)!=0)
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	else
	{
		return false;
	}
}
Calendar.prototype.IsLeapYear=IsLeapYear;

function FormatDate(pDate)
{
	if (this.Format.toUpperCase()=="DDMMYYYY")
		return (pDate+DateSeparator+(this.Month+1)+DateSeparator+this.Year);
	else if (this.Format.toUpperCase()=="DDMMMYYYY")
		return (pDate+DateSeparator+this.GetMonthName(false)+DateSeparator+this.Year);
	else if (this.Format.toUpperCase()=="MMDDYYYY")
		return ((this.Month+1)+DateSeparator+pDate+DateSeparator+this.Year);
	else if (this.Format.toUpperCase()=="MMMDDYYYY")
		return (this.GetMonthName(false)+DateSeparator+pDate+DateSeparator+this.Year);			
}
Calendar.prototype.FormatDate=FormatDate;	
