/******************************************************************************/
/*                                                                            */
/*  Snags Application                                                         */
/*  JavaScript File                                                           */
/*                                                                            */
/******************************************************************************/	

/*
    Form validation functions
    Date Created: 27/01/2004
    Date Modified: 01/04/2004 1655
    Author: Jackie McGhee (jackie.mcghee@sysnet.co.uk)
	Modified: Ross Cowie (rc@sysnet.co.uk) 16/11/2007
*/
	
	// Dropdown IE hack
<!--//--><![CDATA[//><!--

sfHover = function() {
	//alert("hover function getting called");
	var sfEls = document.getElementById("nav").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

//--><!]]>
// 

		function display_calendar(id,type){
		  
		                                                            
		if (type=='0')
		show_calendar("document.auditProjectUserPaginationForm.elements['list["+id+"].strActionWhenDate'].value");                                                                                                               
		else if (type=='1')   
		show_calendar("document.auditProjectUserPaginationForm.elements['list["+id+"].strDateActioned'].value");                                                                                                                            
		                                                            
		}    
		
 function gotoproject(dropdown){
   
     var projectId = dropdown.options[dropdown.selectedIndex].value;
     window.location.href = "postChooseProject.do?id="+projectId;
     
     }


     function editProjectRegion(dropdown){
   
      var regionId = dropdown.options[dropdown.selectedIndex].value;
      var projectId = document.getElementById("projectId").value;
       var forwardType= document.getElementById("fwdType").value;
       if(forwardType == 'edit'){
       window.location.href = "editProjectRegion.do?projectId="+projectId+"&regionId="+regionId;
      }
      else if(forwardType == 'add'){
     // alert("region id is: "+regionId+"using the action");
       window.location.href = "/preAddProject.do?regionId="+regionId;
	  }
	  else{
	  	alert("there is a problem, please go back and try again");
	  }      
     }

/******************************************START Snag Views Checkbox/Image toggle************************************************************/
/*-----------------------------------------Updated By Ross Cowie 16/11/2007-----------------------------------------------------------------*/
/********************************************************************************************************************************************/
function hiderDivA()
	{
		var i=0
		while (document.getElementById("divA"+i)!=null){
			document.getElementById("divA"+i).style.display='none'
			i++
		}
	}

	function hiderDivB()
	{
		var i=0
		while (document.getElementById("divB"+i)!=null){
			document.getElementById("divB"+i).style.display='none'
			i++
		}
	}

	function hiderDivC()
	{
		var i=0
		while (document.getElementById("divC"+i)!=null){
			document.getElementById("divC"+i).style.display='none'
			i++
		}
	}
	
	function hiderDivD()
	{
		var i=0
		while (document.getElementById("divD"+i)!=null){
			document.getElementById("divD"+i).style.display='none'
			i++
		}
	}
 
	function unHiderDivA()
	{
		var j=0
		while (document.getElementById("divA"+j)!=null){
			document.getElementById("divA"+j).style.display='block'
			j++
		}
	}

	function unHiderDivB()
	{
		var j=0
		while (document.getElementById("divB"+j)!=null){
			document.getElementById("divB"+j).style.display='block'
			j++
		}
	}

	function unHiderDivC()
	{
		var j=0
		while (document.getElementById("divC"+j)!=null){
			document.getElementById("divC"+j).style.display='block'
			j++
		}
	}
	
	function unHiderDivD()
	{
		var j=0
		while (document.getElementById("divD"+j)!=null){
			document.getElementById("divD"+j).style.display='block'
			j++
		}
	}
	
	
	function setDivsLarge(element)
	{
		var state = (element.checked);
		if (state == true) {
			hiderDivB();
			hiderDivC();
			hiderDivD();
			unHiderDivA();
			//Uncheck 50% checkbox
			if(document.getElementById("checkboxSmall")!=null && document.getElementById("checkboxSmall").checked == true){
				document.getElementById("checkboxSmall").checked = false
			}
			//Uncheck 75% checkbox
			if(document.getElementById("checkboxMedium")!=null && document.getElementById("checkboxMedium").checked == true){
				document.getElementById("checkboxMedium").checked = false
			}
						 setCookie('detailsize','large',365);
		} else {
			unHiderDivB(); //unhide text
			hiderDivC(); //hide small image
			hiderDivA(); //hide large image
			hiderDivD(); // hide medium image
			setCookie('detailsize','text',365); //set cookie to text
				
		}
		
		
	}
	
	function setDivsMedium(element)
	{
		var state = (element.checked);
		if (state == true) {
		
			hiderDivB();
			hiderDivC();
			hiderDivA();
			unHiderDivD();
			//Uncheck 100% checkbox
			if(document.getElementById("checkboxLarge")!=null && document.getElementById("checkboxLarge").checked == true){
				document.getElementById("checkboxLarge").checked = false
			}
			//Uncheck 50% checkbox
			if(document.getElementById("checkboxSmall")!=null && document.getElementById("checkboxSmall").checked == true){
				document.getElementById("checkboxSmall").checked = false
			}
						 setCookie('detailsize','medium',365);
		} else {
			unHiderDivB(); //unhide text
			hiderDivC(); //hide small image
			hiderDivA(); //hide large image
			hiderDivD(); // hide medium image
			setCookie('detailsize','text',365); //set cookie to text
		}
		
	
		
	}
	
	function setDivsSmall(element)
	{
		var state = (element.checked);
		if (state == true) {

			hiderDivB();
			hiderDivA();
			hiderDivD();
			unHiderDivC();
			//Uncheck 100% checkbox
			if(document.getElementById("checkboxLarge")!=null && document.getElementById("checkboxLarge").checked == true){
				document.getElementById("checkboxLarge").checked = false
			}
			//Uncheck 75% checkbox
			if(document.getElementById("checkboxMedium")!=null && document.getElementById("checkboxMedium").checked == true){
				document.getElementById("checkboxMedium").checked = false
			}
			 setCookie('detailsize','small',365);
		} else {
			unHiderDivB(); //unhide text
			hiderDivC(); //hide small image
			hiderDivA(); //hide large image
			hiderDivD(); // hide medium image
			setCookie('detailsize','text',365); //set cookie to text
			
		}
	}


/******************************************END Snag Views Checkbox/Image toggle************************************************************/

/******************************************START check cookie for image/checkbox on snags views *******************************************/
/*-----------------------------------------Added By Ross Cowie 16/11/2007-----------------------------------------------------------------*/
/******************************************************************************************************************************************/
function checkDetailsCookie()
{ 
detailsize=getCookie('detailsize');

if (detailsize!=null && detailsize!="")
  {
	if(detailsize.toUpperCase()=='LARGE'){
		cbox = document.getElementById('checkboxLarge');
		cbox.checked=true;
		if(cbox!=null){
			setDivsLarge(cbox);
		}
	}
	else if(detailsize.toUpperCase()=='SMALL'){
		cbox = document.getElementById('checkboxSmall');
		cbox.checked=true;
		if(cbox!=null){
			setDivsSmall(cbox);
		}
	}
	else if(detailsize.toUpperCase()=='MEDIUM'){
		cbox = document.getElementById('checkboxMedium');
		cbox.checked=true;
		if(cbox!=null){
			setDivsMedium(cbox);
		}
	}
	else if(detailsize.toUpperCase()=='TEXT'){
		document.getElementById('checkboxLarge').checked = false;
		document.getElementById('checkboxSmall').checked = false;
		document.getElementById('checkboxMedium').checked = false;
		hiderDivD();
		hiderDivA();
		hiderDivC();
		unHiderDivB();
	}
}

}

/******************************************END check cookie for image/checkbox on snags views *******************************************/


/******************************************START Generic Cookie Functions****************************************************************/
/*-----------------------------------------Added By Ross Cowie 16/11/2007---------------------------------------------------------------*/
/****************************************************************************************************************************************/
function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=")
  if (c_start!=-1)
    { 
    c_start=c_start + c_name.length+1 
    c_end=document.cookie.indexOf(";",c_start)
    if (c_end==-1) c_end=document.cookie.length
    	return unescape(document.cookie.substring(c_start,c_end))
    } 
  }
return ""
}
                    
function setCookie(c_name,value,expiredays)
{
	
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
  			
}
/******************************************END Generic Cookie Functions******************************************************************/
/*-----------------------------------------Added By Ross Cowie 29/11/2007-------------------------------------------------------------------------------------------------------------------*/
/***********************************START CheckChecked*********************************************************************************/
function checkChecked(myCheck){
	
	// checks the number of selected checkboxes on the issue page
	//alert("start of checkChecked");
	var inputArray = document.getElementsByTagName("input");
	var total = 0;
	for (var i = 0; i < inputArray.length; i++) {
		var theName = inputArray[i].getAttribute("name");
		var theType = inputArray[i].getAttribute("type");
				
		if (theType != "checkbox") continue;
		if ((theType == "checkbox") && (inputArray[i].id != "dontCount") && (inputArray[i].id != "checkboxLarge") && (inputArray[i].id != "checkboxMedium")&&(inputArray[i].id != "checkboxSmall")){
			//alert("Is valid type-test2");
			if (inputArray[i].checked==true)
			{
				//alert("is checked");
				total = total + 1;
			} 
			else
			{
				//alert("is not checked");
			}
			//alert("total:" + total);
		}
	}
	if(total==0){
		alert("Pleae select one or more snags");
	return false;
	}
	else{
		return true;
	}
	
	
	
	
	
	
	
	
	
}
/******************************************END CheckChecked*****************************************************************************/

function cryMonkey() {
    alert("Found Me");
}

/******************************************START ShowPic (Change Image)******************************************************************/
/*-----------------------------------------Added By Ross Cowie 30/10/2007-------------------------------------------------------------------------------------------------------------------*/
/****************************************************************************************************************************************/
function showPic(whichpic) {
 if (document.getElementById) {
  document.getElementById('placeholder').src = whichpic.href;
  return false;
 } else {
  return true;
 }
}
/******************************************END ShowPic (Change Image)******************************************************************/



function viewPhotos(status){
 //alert("help me, im stuck in your computer!!!!"+status);
 window.location = "http://testsnags.sysnet.co.uk:8080/getPhotosByStatus.do?sid=790&status="+status;
    
}

function isEmpty(elementValue) {
	for (var i = 0; i < elementValue.length; i++) {
		c = elementValue.charAt(i);
		if ((c != " ") && (c != "/n") && (c != "/t")) {
			return false;
		}
	}
	return true
}

// Function to check the validity of an <input type="text"> field or <textarea>
function validateTextBox(element) {
	if ((element.value == null) || (element.value == "") || (isEmpty(element.value))) {
		return false;
	} else {
		return true;
	}
}

// Function to check if any checkbox or radio button group is unused
function validateElementGroup(groupName) {
	var elementCounter = 0;
	var elementGroup = document.getElementsByName(groupName);
	var groupLength = elementGroup.length;

	for (var i = 0; i < groupLength; i++) {
		if (!elementGroup[i].checked) {
			elementCounter++;
		}
	}
	if (elementCounter == groupLength) {
		return false;
	} else {
		return true;
	}
}

// Function to validate Select lists
function validateSelectLists(listBox) {
	if ((listBox.options[listBox.selectedIndex].value == "") || (listBox.options[listBox.selectedIndex].value == null)) {
		return false;
		alert(listbox.id + " failed");
	} else {
		return true;
		alert(listbox.id + "passed");
	}
}
	
// Honking big validation function
function validateFormElements(formObj) {
    //alert("Validation Start");
	var numBoxes = 0;
	var numPasswords = 0;				
	var numChecks = 0;
	var checkArray = new Array();
	var checkArrayCounter = 0;
	var numRadio = 0;
	var radioArray = new Array();
	var radioArrayCounter = 0;
	var numButton = 0;
	var numSubmit = 0;
	var numAreas = 0;
	var numSelects = 0;
	var elementsArray = new Array();
	var elementsArrayCounter = 0;

	var invalidElementsArray = new Array;
	var invalidElementsArrayCounter = 0;
	
	var optionalArray = new Object();
	
	if (!document.getElementById("optional")) {
		optionalArray.value = "";
	} else {
		optionalArray = document.getElementById("optional");
	}

	var msg = "";

	var inputs = formObj.getElementsByTagName("input");
	var textBoxes = formObj.getElementsByTagName("textarea");
	var selectLists = formObj.getElementsByTagName("select");

	for (var i = 0; i < inputs.length; i++) {
		var inputAttribute = inputs[i].getAttribute("type");
		if (!inputs[i].optional) {
			switch (inputAttribute) {
				case "text" :
					numBoxes++;
					if ((!validateTextBox(inputs[i])) && (optionalArray.value.indexOf(inputs[i].id) == -1)) {
						invalidElementsArray[invalidElementsArrayCounter] = inputs[i].id;
						invalidElementsArrayCounter++;
					}
					break;
				case "password" :
					numPasswords++;
					if ((!validateTextBox(inputs[i])) && (optionalArray.value.indexOf(inputs[i].id) == -1)) {
						invalidElementsArray[invalidElementsArrayCounter] = inputs[i].id;
						invalidElementsArrayCounter++;
					}
					break;
				case "checkbox" :
					numChecks++;
					var checkboxGroupName = inputs[i].getAttribute("name");
					if (checkboxGroupName != checkArray[checkArrayCounter - 1]) {
						checkArray[checkArrayCounter] = checkboxGroupName;
						checkArrayCounter++;
					}
					if (!validateElementGroup(checkboxGroupName)) {
						var checkbox = document.getElementById(inputs[i].id);
						var groupName = checkbox.getAttribute("name");
						if (optionalArray.value.indexOf(groupName) == -1) {
							if (invalidElementsArray[invalidElementsArrayCounter - 1] != checkbox.id) {
								invalidElementsArray[invalidElementsArrayCounter] = checkbox.id;
								invalidElementsArrayCounter++;
							}
						}
					}
					break;
				case "radio" :
					numRadio++;
					var radioGroupName = inputs[i].getAttribute("name");
					if (radioGroupName != radioArray[radioArrayCounter - 1]) {
						radioArray[radioArrayCounter] = radioGroupName;
						radioArrayCounter++;
					}
					if (!validateElementGroup(radioGroupName)) {
						var radioButton = document.getElementById(inputs[i].id);
						var groupName = radioButton.getAttribute("name");
						if (optionalArray.value.indexOf(groupName) == -1) {
							if (invalidElementsArray[invalidElementsArrayCounter - 1] != radioButton.id) {
								invalidElementsArray[invalidElementsArrayCounter] = radioButton.id;
								invalidElementsArrayCounter++;
							}
						}
					}
					break;
				case "button" :
					numButton++;
					break;
				case "submit" :
					numSubmit++;
					break;
			}
		}
	}

	for (var k = 0; k < textBoxes.length; k++) {
		numAreas++;
		if ((!validateTextBox(textBoxes[k])) && (optionalArray.value.indexOf(textBoxes[k].id) == -1)) {
			invalidElementsArray[invalidElementsArrayCounter] = textBoxes[k].id;
			invalidElementsArrayCounter++;
		}
	}

	for (var j = 0; j < selectLists.length; j++) {
		numSelects++;
		if ((!validateSelectLists(selectLists[j])) && (optionalArray.value.indexOf(selectLists[j].id) == -1)) {
			invalidElementsArray[invalidElementsArrayCounter] = selectLists[j].id;
			invalidElementsArrayCounter++;
		}
	}

	if (invalidElementsArray.length == 0) {
		return true;
	} else {
		msg = "There has been a problem with your form: some information was missing.\n\nPlease make changes to the boxes highlighted in red.";
		for (var p = 0; p < invalidElementsArray.length; p++) {
			var elle = document.getElementById(invalidElementsArray[p]);
			if (elle.getAttribute("type") == "checkbox") {
                elle.className = "goRedBox";
            } else {
                elle.style.borderColor = "#ff0000";
                elle.style.color = "#ff0000";
            }
		}
		alert(msg);
		return false;
	}
}

function basicEmailCheck()
{
	var eMsg = "Invalid email addresses found, please check all email addresses";
	if (document.getElementById) {
		var inputsArray = document.getElementsByTagName("input");
		var addressCount = 0;
		var addressesArray = new Array();
		for (var i = 0; i < inputsArray.length; i++) {
			if (inputsArray[i].id.indexOf("cc") != -1) {
				addressesArray[addressCount] = inputsArray[i];
				addressCount++;
			}
		}
		
		for (var k = 0; k < addressesArray.length; k++) {
			 if (addressesArray[k].value.indexOf("@") != -1) {
			 	alert(eMsg);
			 	return false;
			 	break;
			 }
			 return true;
		}
	}
}

function verify(formID) {
	var f = document.getElementById(formID);
	
	if (f) {
		return validateFormElements(f);
	} else {
		return true;
	}
}

/*** END FORM VALIDATION ***/

function toggleCB(cBox)
{
	var inputArray = document.getElementsByTagName("input");
	var state = (cBox.checked);
	
	for (var i = 0; i < inputArray.length; i++) {
		var theType = inputArray[i].getAttribute("type");
		if (theType == "checkbox") {
			inputArray[i].checked = state;
		}
	}
}

var editArray = new Array();
var arrayCounter = 0;

function toggleArrayEntry(incoming)
{
	var itsThere = false;
	var spliceIndex = 0;
	for (var k = 0; k < editArray.length; k++) {
		if (editArray[k] == incoming.id) {
			itsThere = true;
			spliceIndex = k;
		}
	}
	
	if (itsThere == true) {
		editArray.splice(spliceIndex, 1);
		arrayCounter--;
	} else {
		editArray[arrayCounter] = incoming.id
		arrayCounter++;
	}
	
	implodeToField();
}

function toggleArrayEntry2(incoming)
{
	var itsThere = false;
	var spliceIndex = 0;
	for (var k = 0; k < editArray.length; k++) {
		if (editArray[k] == incoming.id) {
			itsThere = true;
			spliceIndex = k;
		}
	}
	
	if (itsThere == true) {
		editArray.splice(spliceIndex, 1);
		arrayCounter--;
	} else {
		editArray[arrayCounter] = incoming.id
		arrayCounter++;
	}
	
	implodeToField2();
}

function toggleAllCheckboxes(cBox)
{
	var inputArray = document.getElementsByTagName("input");
	var state = (cBox.checked);
	
	for (var i = 0; i < inputArray.length; i++) {
		var theName = inputArray[i].getAttribute("name");
		var theType = inputArray[i].getAttribute("type");
		if (theType != "checkbox") continue;
		//alert(inputArray[i].id);
		if ((theType == "checkbox") && (inputArray[i].id != "dontCount") && (inputArray[i].id != "checkboxLarge") && (inputArray[i].id != "checkboxMedium")&&(inputArray[i].id != "checkboxSmall")){
			//alert("In the if part3");
			if (state == true) {
				inputArray[i].checked = state;
				editArray[i] = inputArray[i].id;
				arrayCounter = i;
			} else {
				inputArray[i].checked = state;
				editArray.splice(0);
				arrayCounter = 0;
			}
		}
		else{
		//alert("In the else part3");
		}
		//alert("whats happenin");
	}
	editArray.splice(0, 5);
	implodeToField();
}

function implodeToField()
{
	var targetField = document.getElementById("arrayHolder");
	targetField.value = editArray.join("|");
	var targetField2 = document.getElementById("arrayHolder2");
	targetField2.value = editArray.join("|");
	var targetField4 = document.getElementById("arrayHolder4");
	targetField4.value = editArray.join("|");
	var targetField5 = document.getElementById("arrayHolder5");
	targetField5.value = editArray.join("|");
	var targetField6 = document.getElementById("arrayHolder6");
	targetField6.value = editArray.join("|");
}

function implodeToField2()
{
	var targetField6 = document.getElementById("arrayHolder6");
	targetField6.value = editArray.join("|");
}

function sendToPop(incomingId, secondFormId)
{
	var stringHolder = document.getElementById("arrayHolder");
	var secondForm = document.getElementById(secondFormId);
	var theType = document.getElementById("hType");
	var theRequiredField = document.getElementById("reqField");
	
	if ((stringHolder.value == "") || (stringHolder.value == null)) {
		alert("You must select one or more Snags");
		return false;
	}
	
	stringHolder.value += "|" + incomingId;
	
	theType.value = "9";
	theRequiredField.value = incomingId;
	
	//spawn("/blank.html");
	
	secondForm.submit();
}

function sendToPop2(incomingId, thirdFormId)
{
	alert("incomingId=" + incomingId);
	// OLD was used within search_issue.jsp to submit old multi-delete form
	// replaced by seachIssueActionSelected on 21/08/2009
	var stringHolder = document.getElementById("arrayHolder2");
	var thirdForm = document.getElementById(thirdFormId);
	var theType = document.getElementById("hType2");
	var theRequiredField = document.getElementById("reqField2");
	if ((stringHolder.value == "") || (stringHolder.value == null)) {
		alert("You must select one or more Snags for deletion");
		return false;
	}
	stringHolder.value += "|" + incomingId;
	theType.value = "12";
	theRequiredField.value = incomingId;
	//spawn("/blank.html");
	thirdForm.submit();
	
}

function sendToPop3(incomingId, fourthFormId, thisValue)
{
	
	var fourthForm = document.getElementById(fourthFormId);
	var theType = document.getElementById("hType3");
	theType.value = "1";
	var theStatus = document.getElementById("status3");
	var theDisplayNo = document.getElementById("displayNo3");
	theDisplayNo.value = thisValue;
	fourthForm.submit();
	
	
}

function searchSnagsActionSelected()
{
	// used for submitting different forms within search_snags.jsp
	// check that snags have been selected
	var inputArray = document.getElementsByTagName("input");
	var total = 0;
	for (var i = 0; i < inputArray.length; i++)
	{
		var theName = inputArray[i].getAttribute("name");
		var theType = inputArray[i].getAttribute("type");
		if (theType != "checkbox") continue;
		if ((theType == "checkbox") && (inputArray[i].id != "dontCount") && (inputArray[i].id != "checkboxLarge") && (inputArray[i].id != "checkboxMedium")&&(inputArray[i].id != "checkboxSmall"))
		{
			if (inputArray[i].checked==true)
			{
				total = total + 1;
			} 
		}
	}
	if(total==0)
	{
		alert("Please select one or more snags");
		return false;
	}
	
	
	var dropdownIndex = document.getElementById('selectedAction').selectedIndex;
	var dropdownValue = document.getElementById('selectedAction')[dropdownIndex].value;
	var submitNameTypeFromJS = document.getElementById("submitNameTypeFromJS");
	if(dropdownValue==4)
	{
		// mis-issued
		submitNameTypeFromJS.value = "Mis-issue Selected";
		// submit the form
		var issueForm = document.getElementById("issueForm");
		issueForm.submit();
	}
	else if(dropdownValue==5)
	{	
		// reject
		submitNameTypeFromJS.value = "Reject Selected";
		// submit the form
		var issueForm = document.getElementById("issueForm");
		issueForm.submit();
	}
	else if(dropdownValue==6)
	{	
		// close
		submitNameTypeFromJS.value = "Close Selected";
		// submit the form
		var issueForm = document.getElementById("issueForm");
		issueForm.submit();
	}
	else if(dropdownValue==7)
	{	
		// close
		submitNameTypeFromJS.value = "Undelete";
		// submit the form
		var issueForm = document.getElementById("issueForm");
		issueForm.submit();
	}
	else if(dropdownValue==3)
	{	
		// fix - for subbie
		submitNameTypeFromJS.value = "Mark as Fixed";
		// submit the form
		var issueForm = document.getElementById("issueForm");
		issueForm.submit();
	}
	else if(dropdownValue==9)
	{
	
		var stringHolder = document.getElementById("arrayHolder6");
		var secondForm = document.getElementById("slySend6");
		var theType = document.getElementById("hType6");
		
		if ((stringHolder.value == "") || (stringHolder.value == null)) {
			alert("You must select one or more Snags to upload a file");
			return false;
		}
		theType.value = "13";
		secondForm.submit();
	}
	
	
}

function searchIssueActionSelected()
{
	// used for submitting different forms within search_issue.jsp
	var dropdownIndex = document.getElementById('selectedAction').selectedIndex;
	var dropdownValue = document.getElementById('selectedAction')[dropdownIndex].value;
	// 2 for issue as normal
	if(dropdownValue==2)
	{
		// check that snags have been selected
		var inputArray = document.getElementsByTagName("input");
		var total = 0;
		for (var i = 0; i < inputArray.length; i++)
		{
			var theName = inputArray[i].getAttribute("name");
			var theType = inputArray[i].getAttribute("type");
			if (theType != "checkbox") continue;
			if ((theType == "checkbox") && (inputArray[i].id != "dontCount") && (inputArray[i].id != "checkboxLarge") && (inputArray[i].id != "checkboxMedium")&&(inputArray[i].id != "checkboxSmall"))
			{
				if (inputArray[i].checked==true)
				{
					total = total + 1;
				} 
				
			}
		}
		if(total==0)
		{
			alert("Please select one or more snags");
			return false;
		}
			
		
		// submit the main form
		var issueForm = document.getElementById("issueForm");
		issueForm.submit();
			
	}
	else if(dropdownValue==8)
	{
		// multi-edit		
		// typeAddEditForJS - old and new types of edit (uses lookups or not)
		var AddEditType = document.getElementById("typeAddEditForJS").value;
		if(AddEditType=="new")
		{
			var stringHolder = document.getElementById("arrayHolder4");
			var secondForm = document.getElementById("slySend4");
			var theType = document.getElementById("hType4");
			if ((stringHolder.value == "") || (stringHolder.value == null))
			{
				alert("You must select one or more Snags");
				return false;
			}
			theType.value = "13";
			secondForm.submit();
		}
		else
		{
			var stringHolder = document.getElementById("arrayHolder5");
			var secondForm = document.getElementById("slySend5");
			var theType = document.getElementById("hType5");
			if ((stringHolder.value == "") || (stringHolder.value == null)) {
				alert("You must select one or more Snags to edit");
				return false;
			}
			theType.value = "13";
			secondForm.submit();
		}
		
	}
	else if(dropdownValue==9)
	{
		// multi-delete
		var stringHolder = document.getElementById("arrayHolder2");
		var thirdForm = document.getElementById("slySend2");
		var theType = document.getElementById("hType2");
		var theRequiredField = document.getElementById("reqField2");
		if ((stringHolder.value == "") || (stringHolder.value == null)) {
			alert("You must select one or more Snags for deletion");
			return false;
		}
		stringHolder.value += "|" + "del";
		theType.value = "12";
		theRequiredField.value = "del";
		thirdForm.submit();
	}
	else if(dropdownValue==10)
	{
		// multi photo upload
		var stringHolder = document.getElementById("arrayHolder6");
		var secondForm = document.getElementById("slySend6");
		var theType = document.getElementById("hType6");
		
		if ((stringHolder.value == "") || (stringHolder.value == null)) {
			alert("You must select one or more Snags to upload a file");
			return false;
		}
		theType.value = "13";
		secondForm.submit();
	}	
} 



function sendToPop4(incomingId, secondFormId)
{
	// OLD was used within search_issue.jsp to submit old multi-edit form - new type of edit with lookups
	// replaced by seachIssueActionSelected on 21/08/2009
	var stringHolder = document.getElementById("arrayHolder4");
	var secondForm = document.getElementById(secondFormId);
	var theType = document.getElementById("hType4");
	
	if ((stringHolder.value == "") || (stringHolder.value == null)) {
		alert("You must select one or more Snags");
		return false;
	}
	theType.value = "13";
	//theRequiredField.value = incomingId;
	
	//spawn("/blank.html");
	//alert("String Holder: "+stringHolder.value);
	secondForm.submit();
}

function sendToPop5(incomingId, secondFormId)
{
	// OLD was used within search_issue.jsp to submit old multi-edit form - old type of edit without lookups
	// replaced by seachIssueActionSelected on 21/08/2009
	var stringHolder = document.getElementById("arrayHolder5");
	var secondForm = document.getElementById(secondFormId);
	var theType = document.getElementById("hType5");
	
	if ((stringHolder.value == "") || (stringHolder.value == null)) {
		alert("You must select one or more Snags to edit");
		return false;
	}
	theType.value = "13";
	//theRequiredField.value = incomingId;
	
	//spawn("/blank.html");
	//alert("String Holder: "+stringHolder.value);
	secondForm.submit();
}

function sendToPop6(incomingId, secondFormId)
{
    // OLD was used within search_issue.jsp to submit old multi-photo upload
	// replaced by seachIssueActionSelected on 21/08/2009
	var stringHolder = document.getElementById("arrayHolder6");
	var secondForm = document.getElementById(secondFormId);
	var theType = document.getElementById("hType6");
	
	if ((stringHolder.value == "") || (stringHolder.value == null)) {
		alert("You must select one or more Snags to upload a file");
		return false;
	}
	theType.value = "13";
	//theRequiredField.value = incomingId;
	
	//spawn("/blank.html");
	//alert("String Holder: "+stringHolder.value);
	secondForm.submit();
}

function clearAnyCheckboxes()
{
	if (document.getElementById) {
		var allInputs = new Array();
		allInputs = document.getElementsByTagName("input");
		
		var rCount = 0;
		
		var boxArray = new Array();
		
		for (var i = 0; i < allInputs.length; i++) {
			boxArray[rCount] = allInputs[i];
			rCount++;
		}
		
		for (var k = 0; k < boxArray.length; k++) {
			boxArray[k].checked = false;
		}
	}
}


function myfunction()
{
	if (editArray.length < 1) {
		alert("You must select one or more Snags");
		return false;
	}
	
	if (confirm("Are you sure you want to issue these files ?")) {
		spawn("test.html");
		return true;
	} else {
		return false;
	}
}

function pTaskSelector()
{
    if (document.getElementById) {
        targetField = document.getElementById("goto");
        subSelector = document.getElementById("subject");
        targetField.value = subSelector.options[subSelector.options.selectedIndex].value;
        return true;
    }
}

function toggleAddNew(toggleId, targetId)
{
    if (document.getElementById) {
        theToggle = document.getElementById(toggleId);
        theTarget = document.getElementById(targetId);
        
        theToggle.style.display = (theToggle.style.display == "none") ? "block" : "none";
        theTarget.style.display = (theTarget.style.display == "block") ? "none" : "block";
    }
}

function toggleAllCB(cBox)
{
    var inputArray = document.getElementsByTagName("input");
    var state = (cBox.checked);
    
    for (var i = 0; i < inputArray.length; i++) {
        var theType = inputArray[i].getAttribute("type");
        if (theType == "checkbox") {
            inputArray[i].checked = state;
        }
    }
}

function removeSelectedPackages()
{
    var theForm = document.getElementById("actionForm");
    var theField = document.getElementById("typeField");
    if (confirm("Really remove the selected packages?")) {
        theField.value = 4;
        theForm.submit();
    }
}

function removeContractor(contractorCode, packageCode)
{
    if (confirm("Are you sure you want to remove this Contractor?")) {
        document.location.href = "/packages?type=5&packageCode=" + packageCode + "&subconcode=" + contractorCode;
    }
}

function confirmAndIssue(incomingId)
{
    if (verify(incomingId) == true) {
       // spawn("/blank.html");
        return true;
    } else {
        return false;
    }
}

function checkLocationsThenVerify(formId)
{
	if (checkLocations() == false) {
		return false;
	} else {
		return verify(formId);
	}
}

function checkLocations()
{
    var lMsg = "You have changed one or more lexicon title and this will cause printing issues to arise.\n\nAre you sure you want to continue?";
    var eMsg = "Lexicon titles have been reset.";
    
    if (document.getElementById) {
    	theForm = document.getElementById("editProject");
    
        loc1 = document.getElementById("loc1").value;
        loc2 = document.getElementById("loc2").value;
        loc3 = document.getElementById("loc3").value;
        loc4 = document.getElementById("loc4").value;
        
        sLoc1 = document.getElementById("storedLoc1").value;
        sLoc2 = document.getElementById("storedLoc2").value;
        sLoc3 = document.getElementById("storedLoc3").value;
        sLoc4 = document.getElementById("storedLoc4").value;
        
        if ((loc1 == sLoc1) && (loc2 == sLoc2) && (loc3 == sLoc3) && (loc4 == sLoc4)) {
            return true;
        } else {
            if (confirm(lMsg)) {
                return true;
            } else {
                alert(eMsg);
                theForm.reset();
                return false;
            }
        }
    }
}

function sendThenClose(form) 
{
	var theForm = form;
	
	theForm.submit();
	//window.opener.document.location.reload(true);
	
}

function checkSendAndClose(theForm)
{
	if (verify(theForm.id) == true) {
		theForm.target = window.opener;
		theForm.submit();
		window.opener.document.location.reload(true);
		self.close();
	}
}

function confirmThenSend(formId)
{
    var cMsg = "Are you sure you want to remove this user?";
    if (document.getElementById) {
        var theForm = document.getElementById(formId);
        if (confirm(cMsg)) {
            return true;
        } else {
            return false;
        }
    }
}

function encode(str) {
	var result = "";
	
	for (i = 0; i < str.length; i++) {
		if (str.charAt(i) == " ") result += "+";
		else result += str.charAt(i);
	}
	
	return escape(result);
}

function columnSort(type, status, sob, snagNumber, projectNumber, dateIdentifiedFrom, dateIdentifiedTo, dueDateFrom, dueDateTo, zone, floor, flat, room, package, subject, sign, issuedTo)
{
    var servletURI = "/Search";
    type = "type=" + type;
    status = "status=" + status;
    sob = "sob=" + sob;
    snagNumber = "SNAGNUMBER=" + snagNumber;
    projectNumber = "PROJECTNUMBER=" + projectNumber;
    dateIdentifiedFrom = "DATEIDENTIFIEDFROM=" + dateIdentifiedFrom;
    dateIdentifiedTo = "DATEIDENTIFIEDTO=" + dateIdentifiedTo;
    dateDueFrom = "DUEDATEFROM=" + dueDateFrom;
    dateDueTo = "DUEDATETO=" + dueDateTo;
    zone = "ZONE=" + zone;
    floor = "FLOOR=" + floor;
    flat = "FLAT=" + flat;
    room = "ROOM=" + room;
    package = "PACKAGE=" + package;
    subject = "SUBJECT=" + subject;
    sign = "SIGN=" + sign;
    issuedTo = "ISSUEDTO=" + issuedTo;
    
    var uriString1 = servletURI + "?" + type + "&" + status + "&" + sob + "&";
    var uriString2 = snagNumber + "&" + projectNumber + "&" + dateIdentifiedFrom + "&" + dateIdentifiedTo + "&" + dateDueFrom + "&";
    var uriString3 = dateDueTo + "&" + zone + "&" + floor + "&" + flat + "&";
    var uriString4 = room + "&" + package + "&" + subject + "&" + sign + "&" + issuedTo;
    
    document.location.href = uriString1 + uriString2 + uriString3 + uriString4;
}

function searchPager(type, status, startNumber, sob, snagNumber, projectNumber, dateIdentifiedFrom, dateIdentifiedTo, dueDateFrom, dueDateTo, zone, floor, flat, room, package, subject, sign, issuedTo)
{
    var servletURI = "/Search";
    type = "type=" + type;
    status = "status=" + status;
    startNumber = "startNumber=" + startNumber;
    sob = "sob=" + sob;
    snagNumber = "SNAGNUMBER=" + snagNumber;
    projectNumber = "PROJECTNUMBER=" + projectNumber;
    dateIdentifiedFrom = "DATEIDENTIFIEDFROM=" + dateIdentifiedFrom;
    dateIdentifiedTo = "DATEIDENTIFIEDTO=" + dateIdentifiedTo;
    dateDueFrom = "DUEDATEFROM=" + dueDateFrom;
    dateDueTo = "DUEDATETO=" + dueDateTo;
    zone = "ZONE=" + zone;
    floor = "FLOOR=" + floor;
    flat = "FLAT=" + flat;
    room = "ROOM=" + room;
    package = "PACKAGE=" + package;
    subject = "SUBJECT=" + subject;
    sign = "SIGN=" + sign;
    issuedTo = "ISSUEDTO=" + encode(issuedTo);
    
    var uriString1 = servletURI + "?" + type + "&" + status + "&" + startNumber + "&" + sob + "&";
    var uriString2 = snagNumber + "&" + projectNumber + "&" + dateIdentifiedFrom + "&" + dateIdentifiedTo + "&" + dateDueFrom + "&";
    var uriString3 = dateDueTo + "&" + zone + "&" + floor + "&" + flat + "&";
    var uriString4 = room + "&" + package + "&" + subject + "&" + sign + "&" + issuedTo;
    
    document.location.href = uriString1 + uriString2 + uriString3 + uriString4;
}



function searchPagerDisplayNo(type, status, startNumber, sob, snagNumber, projectNumber, dateIdentifiedFrom, dateIdentifiedTo, dueDateFrom, dueDateTo, zone, floor, flat, room, package, subject, sign, issuedTo, displayNo)
{
    var servletURI = "/Search";
    type = "type=" + type;
    status = "status=" + status;
    startNumber = "startNumber=" + "1";
    sob = "sob=" + sob;
    snagNumber = "SNAGNUMBER=" + snagNumber;
    projectNumber = "PROJECTNUMBER=" + projectNumber;
    dateIdentifiedFrom = "DATEIDENTIFIEDFROM=" + dateIdentifiedFrom;
    dateIdentifiedTo = "DATEIDENTIFIEDTO=" + dateIdentifiedTo;
    dateDueFrom = "DUEDATEFROM=" + dueDateFrom;
    dateDueTo = "DUEDATETO=" + dueDateTo;
    zone = "ZONE=" + zone;
    floor = "FLOOR=" + floor;
    flat = "FLAT=" + flat;
    room = "ROOM=" + room;
    package = "PACKAGE=" + package;
    subject = "SUBJECT=" + subject;
    sign = "SIGN=" + sign;
    issuedTo = "ISSUEDTO=" + encode(issuedTo);
	displayNo = "displayNo=" + displayNo;
    
    var uriString1 = servletURI + "?" + type + "&" + status + "&" + startNumber + "&" + sob + "&";
    var uriString2 = snagNumber + "&" + projectNumber + "&" + dateIdentifiedFrom + "&" + dateIdentifiedTo + "&" + dateDueFrom + "&";
    var uriString3 = dateDueTo + "&" + zone + "&" + floor + "&" + flat + "&";
    var uriString4 = room + "&" + package + "&" + subject + "&" + sign + "&" + issuedTo + "&" + displayNo;
    
    document.location.href = uriString1 + uriString2 + uriString3 + uriString4;
}

function searchPagerDisplayNoInkSearch(type, status, startNumber, sob, snagNumber, projectNumber, dateIdentifiedFrom, dateIdentifiedTo, dueDateFrom, dueDateTo, zone, floor, flat, room, package, subject, sign, issuedTo, displayNo, inkSearchText)
{
    var servletURI = "/Search";
    type = "type=" + type;
    status = "status=" + status;
    startNumber = "startNumber=" + "1";
    sob = "sob=" + sob;
    snagNumber = "SNAGNUMBER=" + snagNumber;
    projectNumber = "PROJECTNUMBER=" + projectNumber;
    dateIdentifiedFrom = "DATEIDENTIFIEDFROM=" + dateIdentifiedFrom;
    dateIdentifiedTo = "DATEIDENTIFIEDTO=" + dateIdentifiedTo;
    dateDueFrom = "DUEDATEFROM=" + dueDateFrom;
    dateDueTo = "DUEDATETO=" + dueDateTo;
    zone = "ZONE=" + zone;
    floor = "FLOOR=" + floor;
    flat = "FLAT=" + flat;
    room = "ROOM=" + room;
    package = "PACKAGE=" + package;
    subject = "SUBJECT=" + subject;
    sign = "SIGN=" + sign;
    issuedTo = "ISSUEDTO=" + encode(issuedTo);
	displayNo = "displayNo=" + displayNo;
	inkSearchText = "inkSearchText=" + inkSearchText;
    
    var uriString1 = servletURI + "?" + type + "&" + status + "&" + startNumber + "&" + sob + "&";
    var uriString2 = snagNumber + "&" + projectNumber + "&" + dateIdentifiedFrom + "&" + dateIdentifiedTo + "&" + dateDueFrom + "&";
    var uriString3 = dateDueTo + "&" + zone + "&" + floor + "&" + flat + "&";
    var uriString4 = room + "&" + package + "&" + subject + "&" + sign + "&" + issuedTo + "&" + displayNo + "&" + inkSearchText;
    
    document.location.href = uriString1 + uriString2 + uriString3 + uriString4;
}

function putThisInThere(incomingId, targetId)
{
	if (document.getElementById) {
		var theSelectah = document.getElementById(incomingId);
		var theTarget = document.getElementById(targetId);
		var theValue = theSelectah.options[theSelectah.options.selectedIndex].value;
		
		theTarget.value = theValue;
	}
}


function rossTest(fish){
			
				if(fish==1){
					var theSelectah = document.forms[1].loc1Selector;
					var theTarget = document.forms[1].loc1;
					var theValue = theSelectah.options[theSelectah.options.selectedIndex].value;	
					theTarget.value = theValue;
				}
			else if(fish==2){
					var theSelectah = document.forms[1].loc2Selector;
					var theTarget = document.forms[1].loc2;
					var theValue = theSelectah.options[theSelectah.options.selectedIndex].value;	
					theTarget.value = theValue;
				}
				else if(fish==3){
					var theSelectah = document.forms[1].loc3Selector;
					var theTarget = document.forms[1].loc3;
					var theValue = theSelectah.options[theSelectah.options.selectedIndex].value;	
					theTarget.value = theValue;
				}
				else if(fish==4){
					var theSelectah = document.forms[1].loc4Selector;
					var theTarget = document.forms[1].loc4;
					var theValue = theSelectah.options[theSelectah.options.selectedIndex].value;	
					theTarget.value = theValue;
				}
				else if(fish==5){
					var theSelectah = document.forms[1].lookup1Selector;
					var theTarget = document.forms[1].loc1Lookup;
					var theValue = theSelectah.options[theSelectah.options.selectedIndex].value;	
					theTarget.value = theValue;
				}
				else if(fish==6){
					var theSelectah = document.forms[1].lookup2Selector;
					var theTarget = document.forms[1].loc2Lookup;
					var theValue = theSelectah.options[theSelectah.options.selectedIndex].value;	
					theTarget.value = theValue;
				}
				else if(fish==7){
					var theSelectah = document.forms[1].lookup3Selector;
					var theTarget = document.forms[1].loc3Lookup;
					var theValue = theSelectah.options[theSelectah.options.selectedIndex].value;	
					theTarget.value = theValue;
				}
				else if(fish==8){
					var theSelectah = document.forms[1].lookup4Selector;
					var theTarget = document.forms[1].loc4Lookup;
					var theValue = theSelectah.options[theSelectah.options.selectedIndex].value;	
					theTarget.value = theValue;
				}
				
			}





/*
    Calendar Functions
    Date Created: Unknown
    Date Modified: Unknown
    Author: Unknown
*/

var weekend = [0,6];
var weekendColor = "#e0e0e0";
var fontface = "Verdana";
var fontsize = 2;

var gNow = new Date();
var ggWinCal;

isNav = (navigator.appName.indexOf("Netscape") != -1) ? true : false;
isIE = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;

Calendar.Months = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];

// Non-Leap year Month days..
Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// Leap year Month days..
Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

function Calendar(p_item, p_WinCal, p_month, p_year, p_format) 
{
    if ((p_month == null) && (p_year == null)) return;

    if (p_WinCal == null) {
        this.gWinCal = ggWinCal;
    } else {
        this.gWinCal = p_WinCal;
    }

    if (p_month == null) {
        this.gMonthName = null;
        this.gMonth = null;
        this.gYearly = true;
    } else {
        this.gMonthName = Calendar.get_month(p_month);
        this.gMonth = new Number(p_month);
        this.gYearly = false;
    }
          
    this.gYear = p_year;
    this.gFormat = p_format;             
                                 
    this.gReturnItem = replaceAll(p_item,"[apos]","'");                   
}                                  
     
Calendar.get_month = Calendar_get_month;
Calendar.get_daysofmonth = Calendar_get_daysofmonth;
Calendar.calc_month_year = Calendar_calc_month_year;
Calendar.print = Calendar_print;

function Calendar_get_month(monthNo) 
{
    return Calendar.Months[monthNo];
}

function Calendar_get_daysofmonth(monthNo, p_year) {
 /*
 Check for leap year ..
 1.Years evenly divisible by four are normally leap years, except for...
 2.Years also evenly divisible by 100 are not leap years, except for...
 3.Years also evenly divisible by 400 are leap years.
 */
 if ((p_year % 4) == 0) {
  if ((p_year % 100) == 0 && (p_year % 400) != 0)
   return Calendar.DOMonth[monthNo];

  return Calendar.lDOMonth[monthNo];
 } else
  return Calendar.DOMonth[monthNo];
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {
 /*
 Will return an 1-D array with 1st element being the calculated month
 and second being the calculated year
 after applying the month increment/decrement as specified by 'incr' parameter.
 'incr' will normally have 1/-1 to navigate thru the months.
 */
 var ret_arr = new Array();

 if (incr == -1) {
  // B A C K W A R D
  if (p_Month == 0) {
   ret_arr[0] = 11;
   ret_arr[1] = parseInt(p_Year) - 1;
  }
  else {
   ret_arr[0] = parseInt(p_Month) - 1;
   ret_arr[1] = parseInt(p_Year);
  }
 } else if (incr == 1) {
  // F O R W A R D
  if (p_Month == 11) {
   ret_arr[0] = 0;
   ret_arr[1] = parseInt(p_Year) + 1;
  }
  else {
   ret_arr[0] = parseInt(p_Month) + 1;
   ret_arr[1] = parseInt(p_Year);
  }
 }

 return ret_arr;
}

function Calendar_print() {
 ggWinCal.print();
}


           
               
                      
          
function Calendar_calc_month_year(p_Month, p_Year, incr) {
 /*
 Will return an 1-D array with 1st element being the calculated month
 and second being the calculated year
 after applying the month increment/decrement as specified by 'incr' parameter.
 'incr' will normally have 1/-1 to navigate thru the months.
 */
 var ret_arr = new Array();

 if (incr == -1) {
  // B A C K W A R D
  if (p_Month == 0) {
   ret_arr[0] = 11;
   ret_arr[1] = parseInt(p_Year) - 1;
  }
  else {
   ret_arr[0] = parseInt(p_Month) - 1;
   ret_arr[1] = parseInt(p_Year);
  }
 } else if (incr == 1) {
  // F O R W A R D
  if (p_Month == 11) {
   ret_arr[0] = 0;
   ret_arr[1] = parseInt(p_Year) + 1;
  }
  else {
   ret_arr[0] = parseInt(p_Month) + 1;
   ret_arr[1] = parseInt(p_Year);
  }
 }

 return ret_arr;
}

// This is for compatibility with Navigator 3, we have to create and discard one object before the prototype object exists.
new Calendar();

Calendar.prototype.getMonthlyCalendarCode = function() {
 var vCode = "";
 var vHeader_Code = "";
 var vData_Code = "";

 // Begin Table Drawing code here..
 vCode = vCode + "";

 vHeader_Code = this.cal_header();
 vData_Code = this.cal_data();
 vCode = vCode + vHeader_Code + vData_Code;

 vCode = vCode + "";

 return vCode;
}

Calendar.prototype.show = function() {
 var vCode = "";

 this.gWinCal.document.open();

 // Setup the page...
 this.wwrite("<html>");
 this.wwrite("<head><title>Date selector</title>");
 this.wwrite("<link rel='stylesheet' media='all' type='text/css' href='/style/snags-master-styles.css' />");
 this.wwrite("</head>");

 this.wwrite("<body onload=\"check()\"" +
  "link=\"" + this.gLinkColor + "\" " +
  "vlink=\"" + this.gLinkColor + "\" " +
  "alink=\"" + this.gLinkColor + "\" " +
  "text=\"" + this.gTextColor + "\">");
 this.wwriteA("<div id='content'><h1>");
 this.wwriteA(this.gMonthName + " " + this.gYear);
 this.wwriteA("</h1>");

 // Show navigation buttons
 var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1);
 var prevMM = prevMMYYYY[0];
 var prevYYYY = prevMMYYYY[1];

 var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1);
 var nextMM = nextMMYYYY[0];
 var nextYYYY = nextMMYYYY[1];
  var temp_item=replaceAll(this.gReturnItem,"'","[apos]");
  this.wwrite("<table cellpadding='0' cellspacing='0' border='0'><tr><td><table cellpadding='0' cellspacing='0' border='0' class='cth_grey' width='100%'><tr><th class='thl'><img src='../images/clearSpacer.gif' width='5px' height='1' /></th><th class='smallCell'>");
  this.wwrite("<a href=\"" +
  "javascript:window.opener.Build(" +            
  "'"+temp_item + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-1) + "', '" + this.gFormat + "'" +
  ");" +                
  "\">&lt;&lt;<\/a></th><th class='smallCell'>&nbsp;|&nbsp;</th><th class='smallCell'>");                         
 this.wwrite("<a href=\"" +
  "javascript:window.opener.Build(" +
  "'" + temp_item + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "'" +
  ");" +
  "\">&lt;<\/a></th><th class='smallCell'>&nbsp;|&nbsp;</th><th align='center'>");
 this.wwrite("<!--<a href=\"javascript:window.print();\" align='center'>Print</a>-->&nbsp;</th><th class='smallCell'>&nbsp;|&nbsp;</th><th class='smallCell'>");
 this.wwrite("<a href=\"" +
  "javascript:window.opener.Build(" +
  "'" + temp_item + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "'" +
  ");" +
  "\">&gt;<\/a></th><th class='smallCell'>&nbsp;|&nbsp;</th><th class='smallCell'>");
 this.wwrite("<a href=\"" +
  "javascript:window.opener.Build(" +
  "'" + temp_item + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+1) + "', '" + this.gFormat + "'" +
  ");" +
  "\">&gt;&gt;<\/a></th><th class='thr'><img src='../images/clearSpacer.gif' width='5px' height='1' /></th></tr></table></td></tr>");
 this.wwrite("<tr><td><table cellpadding='1' cellspacing='0' border='0' class='th_grey'>");

 // Get the complete calendar code for the month..
 vCode = this.getMonthlyCalendarCode();
 this.wwrite(vCode);

 this.wwrite("</table></td></tr>");
 this.wwrite("<tr><td><table cellpadding='0' cellspacing='0' border='0' class='ctf_grey' width='100%'><tr><td class='tfl'></td><td>&nbsp;</td><td class='tfr'></td></tr></table>");
 this.wwrite("</td></tr></table></div></body></html>");
 this.gWinCal.document.close();
}

Calendar.prototype.showY = function() {
 var vCode = "";
 var i;
 var vr, vc, vx, vy;  // Row, Column, X-coord, Y-coord
 var vxf = 285;   // X-Factor
 var vyf = 200;   // Y-Factor
 var vxm = 10;   // X-margin
 var vym;    // Y-margin
 if (isIE) vym = 75;
 else if (isNav) vym = 25;

 this.gWinCal.document.open();

 this.wwrite("<html>");
 this.wwrite("<head><title>Date selector 2</title>");
 this.wwrite("<link rel='stylesheet' media='all' type='text/css' href='/style/snags-master-styles.css' />");

 this.wwrite("<style type='text/css'>\n<!--");
 for (i=0; i<12; i++) {
  vc = i % 3;
  if (i>=0 && i<= 2) vr = 0;
  if (i>=3 && i<= 5) vr = 1;
  if (i>=6 && i<= 8) vr = 2;
  if (i>=9 && i<= 11) vr = 3;

  vx = parseInt(vxf * vc) + vxm;
  vy = parseInt(vyf * vr) + vym;

  this.wwrite(".lclass" + i + " {position:absolute;top:" + vy + ";left:" + vx + ";}");
 }
 this.wwrite("-->\n</style>");
 this.wwrite("</head>");

 this.wwrite("<body " +
  "link=\"" + this.gLinkColor + "\" " +
  "vlink=\"" + this.gLinkColor + "\" " +
  "alink=\"" + this.gLinkColor + "\" " +
  "text=\"" + this.gTextColor + "\">");
 this.wwrite("Year : " + this.gYear);

 // Show navigation buttons
 var prevYYYY = parseInt(this.gYear) - 1;
 var nextYYYY = parseInt(this.gYear) + 1;
 
 var temp_item=replaceAll(this.gReturnItem,"'","[apos]");
          
          
 this.wwrite("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0' class='cth_grey'><TR><th class='thl'><img src='../images/clearSpacer.gif' width='5px' height='1' /></th><th ALIGN=center>");
 this.wwrite("[<A HREF=\"" +
  "javascript:window.opener.Build(" +
  "'" + temp_item + "', null, '" + prevYYYY + "', '" + this.gFormat + "'" +
  ");" +
  "\" alt='Prev Year'><<<\/A>]</th><th ALIGN=center>");
 this.wwrite("[<A HREF=\"javascript:window.print();\">Print</A>]</th><th ALIGN=center>");
 this.wwrite("[<A HREF=\"" +
  "javascript:window.opener.Build(" +
  "'" + temp_item + "', null, '" + nextYYYY + "', '" + this.gFormat + "'" +
  ");" +
  "\">>><\/A>]</Th><th class='thr'><img src='../images/clearSpacer.gif' width='5px' height='1' /></th></TR></TABLE><BR>");        
                                                                         
 // Get the complete calendar code for each month..
 var j;
 for (i=11; i>=0; i--) {
  if (isIE)
   this.wwrite("<DIV ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");
  else if (isNav)
   this.wwrite("<LAYER ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");

  this.gMonth = i;
  this.gMonthName = Calendar.get_month(this.gMonth);
  vCode = this.getMonthlyCalendarCode();
  this.wwrite(this.gMonthName + "/" + this.gYear + "<BR>");
  this.wwrite(vCode);

  if (isIE)
   this.wwrite("</DIV>");
  else if (isNav)
   this.wwrite("</LAYER>");
 }

 this.wwrite("</font></body></html>");
 this.gWinCal.document.close();
}

Calendar.prototype.wwrite = function(wtext) {
 this.gWinCal.document.writeln(wtext);
}

Calendar.prototype.wwriteA = function(wtext) {
 this.gWinCal.document.write(wtext);
}

Calendar.prototype.cal_header = function() {
 var vCode = "";


 vCode = vCode + "<tr>";
 vCode = vCode + "<th>Sun</th>";
 vCode = vCode + "<th>Mon</th>";
 vCode = vCode + "<th>Tue</th>";
 vCode = vCode + "<th>Wed</th>";
 vCode = vCode + "<th>Thu</th>";
 vCode = vCode + "<th>Fri</th>";
 vCode = vCode + "<th>Sat</th>";
 vCode = vCode + "</tr>";


 return vCode;
}

Calendar.prototype.cal_data = function() {
 var vDate = new Date();
 vDate.setDate(1);
 vDate.setMonth(this.gMonth);
 vDate.setFullYear(this.gYear);

 var vFirstDay=vDate.getDay();
 var vDay=1;
 var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear);
 var vOnLastDay=0;
 var vCode = "";

 /*
 Get day for the 1st of the requested month/year..
 Place as many blank cells before the 1st day of the month as necessary.
 */

 vCode = vCode + "<tr>";
 for (i=0; i<vFirstDay; i++) {
  vCode = vCode + "<td" + this.write_weekend_string(i) + "></td>";
 }

 // Write rest of the 1st week
 for (j=vFirstDay; j<7; j++) {
  vCode = vCode + "<td" + this.write_weekend_string(j) + ">" +
   "<a href='#' " + "onClick=\"window.self.opener." + this.gReturnItem + "='" + this.format_data(vDay) +
    "';window.close();\">" +
    this.format_day(vDay) +
   "</a>" +
   "</td>";
  vDay=vDay + 1;
 }
 vCode = vCode + "</tr>";

 // Write the rest of the weeks
 for (k=2; k<7; k++) {
  vCode = vCode + "<tr>";

  for (j=0; j<7; j++) {
   vCode = vCode + "<td" + this.write_weekend_string(j) + ">" +
    "<a href='#' " + "onClick=\"self.opener." + this.gReturnItem + "='" + this.format_data(vDay) +
     "';window.close();\">" +
    this.format_day(vDay) +
    "</a>" +
    "</td>";
   vDay=vDay + 1;

   if (vDay > vLastDay) {
    vOnLastDay = 1;
    break;
   }
  }

  if (j == 6)
   vCode = vCode + "</tr>";
  if (vOnLastDay == 1)
   break;
 }

 // Fill up the rest of last week with proper blanks, so that we get proper square blocks
 for (m=1; m<(7-j); m++) {
  if (this.gYearly)
   vCode = vCode + "<td'" + this.write_weekend_string(j+m) +
   "></td>";
  else
   vCode = vCode + "<td" + this.write_weekend_string(j+m) +
   ">" + m + "</td>";
 }

 return vCode;
}

Calendar.prototype.format_day = function(vday) {
 var vNowDay = gNow.getDate();
 var vNowMonth = gNow.getMonth();
 var vNowYear = gNow.getFullYear();

 if (vday == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear)
  return ("<font color=\"red\"><strong>" + vday + "</strong></font>");
 else
  return (vday);
}

Calendar.prototype.write_weekend_string = function(vday) {
 var i;

 // Return special formatting for the weekend day.
 for (i=0; i<weekend.length; i++) {
  if (vday == weekend[i])
   return (" bgcolor=\"" + weekendColor + "\"");
 }

 return "";
}

Calendar.prototype.format_data = function(p_day) {
 var vData;
 var vMonth = 1 + this.gMonth;
 vMonth = (vMonth.toString().length < 2) ? "0" + vMonth : vMonth;
 var vMon = Calendar.get_month(this.gMonth).substr(0,3).toUpperCase();
 var vFMon = Calendar.get_month(this.gMonth).toUpperCase();
 var vY4 = new String(this.gYear);
 var vY2 = new String(this.gYear.substr(2,2));
 var vDD = (p_day.toString().length < 2) ? "0" + p_day : p_day;

 switch (this.gFormat) {
  case "MM\/DD\/YYYY" :
   vData = vMonth + "\/" + vDD + "\/" + vY4;
   break;
  case "MM\/DD\/YY" :
   vData = vMonth + "\/" + vDD + "\/" + vY2;
   break;
  case "MM-DD-YYYY" :
   vData = vMonth + "-" + vDD + "-" + vY4;
   break;
  case "MM-DD-YY" :
   vData = vMonth + "-" + vDD + "-" + vY2;
   break;

  case "DD\/MON\/YYYY" :
   vData = vDD + "\/" + vMon + "\/" + vY4;
   break;
  case "DD\/MON\/YY" :
   vData = vDD + "\/" + vMon + "\/" + vY2;
   break;
  case "DD-MON-YYYY" :
   vData = vDD + "-" + vMon + "-" + vY4;
   break;
  case "DD-MON-YY" :
   vData = vDD + "-" + vMon + "-" + vY2;
   break;

  case "DD\/MONTH\/YYYY" :
   vData = vDD + "\/" + vFMon + "\/" + vY4;
   break;

  case "DD\/MONTH\/YY" :
   vData = vDD + "\/" + vFMon + "\/" + vY2;
   break;
  case "DD-MONTH-YYYY" :
   vData = vDD + "-" + vFMon + "-" + vY4;
   break;
  case "DD-MONTH-YY" :
   vData = vDD + "-" + vFMon + "-" + vY2;
   break;

  case "DD\/MM\/YYYY" :
   vData = vDD + "\/" + vMonth + "\/" + vY4;
   break;
  case "DD\/MM\/YY" :
   vData = vDD + "\/" + vMonth + "\/" + vY2;
   break;
  case "DD-MM-YYYY" :
   vData = vDD + "-" + vMonth + "-" + vY4;
   break;
  case "DD-MM-YY" :
   vData = vDD + "-" + vMonth + "-" + vY2;
   break;

  default :
   vData = vMonth + "\/" + vDD + "\/" + vY4;
 }

 return vData;
}

function Build(p_item, p_month, p_year, p_format) {
      
 var p_WinCal = ggWinCal;
 gCal = new Calendar(p_item, p_WinCal, p_month, p_year, p_format);

 // Customize your Calendar here..
 gCal.gBGColor="white";
 gCal.gLinkColor="black";
 gCal.gTextColor="black";
 gCal.gHeaderColor="darkgreen";

 // Choose appropriate show function
 if (gCal.gYearly) gCal.showY();
 else gCal.show();

}

function show_calendar() {
 /*
  p_month : 0-11 for Jan-Dec; 12 for All Months.
  p_year : 4-digit year
  p_format: Date format (mm/dd/yyyy, dd/mm/yy, ...)
  p_item : Return Item.
 */

 p_item = arguments[0];
 if (arguments[1] == null)
  p_month = new String(gNow.getMonth());
 else
  p_month = arguments[1];
 if (arguments[2] == "" || arguments[2] == null)
  p_year = new String(gNow.getFullYear().toString());
 else
  p_year = arguments[2];
 if (arguments[3] == null)
  p_format = "DD/MM/YYYY";
 else
  p_format = arguments[3];
          
 vWinCal = window.open("", "Calendar",
  "width=250,height=250,status=no,resizable=no,top=200,left=200");
 vWinCal.opener = self;
 ggWinCal = vWinCal;
               
 Build(p_item, p_month, p_year, p_format);
}
/*
Yearly Calendar Code Starts here
*/
function show_yearly_calendar(p_item, p_year, p_format) {
 // Load the defaults..
 if (p_year == null || p_year == "")
  p_year = new String(gNow.getFullYear().toString());
 if (p_format == null || p_format == "")
  p_format = "DD/MM/YYYY";

 var vWinCal = window.open("", "Calendar", "scrollbars=yes");
 vWinCal.opener = self;
 ggWinCal = vWinCal;

 Build(p_item, null, p_year, p_format);
}    

/*** END CALENDAR FUNCTIONS ***/

/*** POP UP WINDOW ***/

function spawn(location)
	{
		var winName = "gonzo";
		var winProps = "top=16, left=16, width=500, height=500, toolbar=no, scrollbars=yes, status=yes";
		var newWin = window.open(location, winName, winProps);
		newWin.focus();
	}     
	
function spawn2(location)
	{
		var winName = "gonzo";
		var winProps = "top=16, left=16, width=400, height=500, toolbar=no, scrollbars=yes, status=yes";
		var newWin = window.open(location, winName, winProps);
		newWin.focus();
	}
	
function spawn(newLocation)
{
	var winName = "supWindow";
	var winProps = "top=16, left=16, width=700, height=400, toolbar=no, scrollbars=yes, status=yes";
	var newWin = window.open(newLocation, winName, winProps);
	newWin.focus();
}
	
function replaceAll(str,old_str,new_str){

 while(str.indexOf(old_str,0)>-1){                
 str=str.replace(old_str,new_str);  
}
return str;

}
/*** END POP UP WINDOW ***/



/* Toggle hide & show div */

function toggleLayer( whichLayer )
	{
	  var elem, vis;
	  if( document.getElementById ) // this is the way the standards work
	    elem = document.getElementById( whichLayer );
	  else if( document.all ) // this is the way old msie versions work
	      elem = document.all[whichLayer];
	  else if( document.layers ) // this is the way nn4 works
	    elem = document.layers[whichLayer];
	  vis = elem.style;
	  // if the style.display value is blank we try to figure it out here
	  if(vis.display==''&&elem.offsetWidth!=undefined&&elem.offsetHeight!=undefined)
	    vis.display = (elem.offsetWidth!=0&&elem.offsetHeight!=0)?'block':'none';
	  vis.display = (vis.display==''||vis.display=='block')?'none':'block';
	}



function toggleAllLayers (whichLayer1, whichLayer2 , whichLayer3)
{
	toggleLayer(whichLayer1);
	toggleLayer(whichLayer2);
	toggleLayer(whichLayer3);
}




/* End Toggle */

/* Used in addUser.jsp */
function validateUserForm(){
    if (document.getElementById("username").value=="")
    {
      alert("Please fill in the user name first");
      return false;
    }
    else if (document.getElementById("username").value.indexOf(' ')!=-1)
    {
    	alert("Username must be one word with no spaces");
      	return false;
    }
    else if (document.getElementById("password").value=="")
	{
		alert("Please fill in the password first");
	return false;
	}
	else if (document.getElementById("password").value!=document.getElementById("conpass").value)
	{
		alert("Please reconfirm your password");
		return false;
	}
    else
      return true;
    }
/* End Used in addUser.jsp */