// This file contains all the javascript functions that are needed for the application.


///// Menu behavior functions /////

function mDown(colID) {
	obj = link_table.rows[0].cells[colID];
	obj.className = "menuDown";
}

function mUp(colID) {
	obj = link_table.rows[0].cells[colID];
	obj.className = "menuUp";
}
function mOff(colID) {
	obj = link_table.rows[0].cells[colID];
	obj.className = "menuOff";
}

///// SubMenu behavior functions /////

function subDown(colID) {
	obj = sublink_table.rows[0].cells[colID];
	obj.className = "submenuDown";
}

function subUp(colID) {
	obj = sublink_table.rows[0].cells[colID];
	obj.className = "submenuUp";
}

///// Functions for scrolling ticker /////

function pause(tckrSpd) {
	moveSpeed = tckrSpd;
}

function resume(tckrSpd) {
	moveSpeed = tckrSpd;
}

function populate(tckrMsg) {
	moveSpeed = 2;
	scroller.style.left = 508 + "px";
	scroller.innerHTML = tckrMsg;
	msgWidth = msgBox.offsetWidth;
	leftTime = setInterval("scrollMessage()",20);
}

function scrollMessage() {
	if (parseInt(scroller.style.left) > -msgWidth) {
		scroller.style.left = parseInt(scroller.style.left) - moveSpeed + "px";
	} else {
		scroller.style.left = 508 + "px";
	}
}

///// Shows hidden forms in operator interface /////

function ShowForm(curObjID,curEditObj,curFormObj,fID1,fID2,fID3,fID3val,fID4,fID4val,fID5,fID5val) {
 	if (curEditObj) {
		var editObject = curEditObj;
		if (curFormObj.elements[fID1]) curFormObj.elements[fID1].value = editObject.innerText;
		if (curFormObj.elements[fID2]) curFormObj.elements[fID2].value = curObjID;
		if (curFormObj.elements[fID3]) curFormObj.elements[fID3].value = fID3val;
		if (curFormObj.elements[fID4]) {
			if (curFormObj.name == "trainAssignEdit") {
				if (fID4val == 'Y') {
					curFormObj.elements[fID4][0].checked = true
				} else {
					curFormObj.elements[fID4][1].checked = true
				}
			} else {
				curFormObj.elements[fID4].value = fID4val;
			}
		}
		if (curFormObj.elements[fID5]) curFormObj.elements[fID5].value = fID5val;
	}
	if (curFormObj) {
		if ((curFormObj.name == "trainAssignEdit") || (curFormObj.name == "staionAssignEdit") || (curFormObj.name == "statusEdit")) {
			var iaBox = innerAddBox;
			iaBox.innerText = editObject.innerText;
		}
	}
	var aBox = addBox;
	aBox.style.visibility = "Visible";
	//aBox.offsetTop = 500;
}
function ShowClusterAdd() {
	clusterAssignEdit.elements["clusterName"].value = "";
    clusterAssignEdit.elements["clusterID"].value = 0;
	var aBox = addBox;
	aBox.style.visibility = "Visible";
}

function ShowMessageForm(curFormObj,curSelectObj,fID1) {
	var srchPattern = /:/;
	if (curFormObj.elements[curSelectObj].value != 0) {
		//var curIndex = curFormObj.elements[curSelectObj].selectedIndex;
		//curFormObj.elements[fID1].value = curFormObj.elements[curSelectObj].options[curIndex].text;
		fldValue = curFormObj.elements[curSelectObj].value
		colonPos = fldValue.search(srchPattern);
		if (colonPos != -1) {
			fldValue = Trim(fldValue.slice(colonPos+1))
		}
		curFormObj.elements[fID1].value = fldValue;
	}
	var aBox = addBox;
	aBox.style.visibility = "Visible";
}

function Trim(str) {
	var strLen = str.length;
	var begin = 0;
	var end = 0;
	for (i=0;i<strLen;i++) {
		var ch = str.charAt(i);
		if (' '==ch) {
			continue;
		}
		else {
				begin = i;
				break;
		}
	}
	// Got thefirst position
	for (i=strLen-1;i>=0;i--) {
		ch = str.charAt(i);
		if (' '==ch) {
			continue;
		}
		else {
			end = i;
			break;
		}
	}
	if ( (0==begin) && (0==end) && (str.charAt(0) == ' ') ) {
		return "";
	}
	str = str.substring(begin,end+1);
	return str;
}

function ClearMsg(curFormObj,textField) {
	curFormObj.elements[textField].value = '';
	//submit();
}

function SetSelectCluster(curFormObj, textField, fieldVal, arrayField, warnMsg) {
	var fieldName = arrayField + fieldVal;
	var boxArray = curFormObj.elements[fieldName];


	var checkedNum=0;
    //If only one item in the boxArray then it fails to be defined and the loop test will fail
    //This checks for this case and then updates the count appropriately
	if(typeof(boxArray.length) =="undefined" && boxArray.checked == true) {
		checkedNum=1;
	}
	//loop through checkbox array to check is any checkbox is checked.
	for (var i = 0; i < boxArray.length; i++)
	{
		if (boxArray[i].checked == true){
			checkedNum++;
		}
	}

    if (checkedNum > 0)
	{
		curFormObj.elements[textField].value = fieldVal;
		curFormObj.submit();
	} else {
		alert(warnMsg);
	}
}

function SetSelect(curFormObj, textField, fieldVal) {
	curFormObj.elements[textField].value = fieldVal;
	curFormObj.submit();
}

// Enable column for editing in schedule interface
function EnableRow(curTrainId,curMeridian,curFormObj,hiddenFld1,hiddenFld2) {
	var trainStr = "/tr" + curTrainId + "$/";
	var srchPattern = eval(trainStr);

	for(i=0; i < curFormObj.elements.length; i++) {
		curFormObj.elements[i].disabled = true;
	}

	if (curFormObj.elements[hiddenFld1].value  != "") {
		var sBox = eval("submitBox" + curFormObj.elements[hiddenFld1].value);
		sBox.innerHTML = "&nbsp;";
	}

	var aBox = addBox;
	aBox.style.visibility = "Hidden";

	//Loop through form elements to enable the correct fields
	for(i=0; i < curFormObj.elements.length; i++) {
		var fieldName = curFormObj.elements[i].name;
		if  (fieldName.search(srchPattern) != -1) {
			curFormObj.elements[i].disabled = false;
		}
	}

	curFormObj.elements[hiddenFld1].value = curTrainId;
	curFormObj.elements[hiddenFld2].value = curMeridian;

	var sBox = eval("submitBox" + curTrainId);
	sBox.innerHTML = "<input type=\"submit\" name=\"action\" value=\"Save\" class=\"inputSubmitButton\">";
}

function RestoreCol(curTrainId,curFormObj,hiddenFld1,hiddenFld2, action) {
	if (action == "rev") {
		retConf = confirm("Are you sure that you want to revert the column to the regular schedule?");
	} else {
		retConf = confirm("Are you sure that you want to delete the temporary train?");
	}
	if (retConf) {
		curFormObj.elements[hiddenFld1].value = curTrainId;
		curFormObj.elements[hiddenFld2].value = action;
		curFormObj.submit();
	}
}

function AddTempTrain(curFormObj) {
	var aBox = addBox;
	aBox.style.visibility = "Visible";
}

function SetValues(curFormObj,selectFld,hiddenFld) {
	var trainId = curFormObj.elements[selectFld].value;
	var trainStr = "/tr" + trainId + "$/";

	if (trainId != 0) {
		var meridBox = eval("tr" + trainId + "_merid");
		curFormObj.elements[hiddenFld].value = meridBox.innerText;
	} else {
		curFormObj.elements[hiddenFld].value = "";
	}

	//Loop through form elements to transfer train times
	if (trainId != 0) {
		var srchPattern = eval(trainStr);
		for(i=0; i < curFormObj.elements.length; i++) {
			var fieldName = curFormObj.elements[i].name;
			if  (fieldName.search(srchPattern) != -1) {
				var stationId = fieldName.slice(3,fieldName.indexOf("_"));
				var newField = "sta" + stationId + "_new";
				curFormObj.elements[newField].value = curFormObj.elements[i].value;
			}
		}
	}
}


function gotoPage(context, dirName, menuName, pageName)
{
	parent.menuFrame.location.href = context + "/" + menuName+"?pageName="+pageName;
	document.location.href = context+"/"+dirName+"/"+pageName;
	return true;
}

function ShowSignMessageForm(curFormObj,fID1, textValue) {
	curFormObj.elements[fID1].value = textValue;
	var aBox = addBox;
	aBox.style.visibility = "Visible";
}

function HideDiv(divName) {
	var aBox = eval(divName);
	aBox.style.visibility = "Hidden";
}

function ResetCanned(curFormObj, divName) {
	curFormObj.reset();
	var aBox = eval(divName);
	aBox.style.visibility = "Hidden";
}

function ResetForm(curFormObj, whatToCancel) {
	if (confirm("Are you sure that you wish to cancel " + whatToCancel + "?")) {
		curFormObj.reset();
	}
}

function DeselectAll(curFormObj,selBox1,selBox2,selBox3) {
	if (curFormObj.elements[selBox1]) {
		curFormObj.elements[selBox1].selectedIndex = -1
	}
	if (curFormObj.elements[selBox2]) {
		curFormObj.elements[selBox2].selectedIndex = -1
	}
	if (curFormObj.elements[selBox3]) {
		curFormObj.elements[selBox3].selectedIndex = -1
	}
}

function ValidateSelection(curFormObj,selBox1,selBox2,selBox3) {
	var strInvalidSel = false;
	if ((curFormObj.elements[selBox1].selectedIndex == -1) && (curFormObj.elements[selBox2].selectedIndex == -1) && (curFormObj.elements[selBox3].selectedIndex == -1)) {
		strInvalidSel = true;
	}
	if (strInvalidSel) {
		alert("Please select at least one item from one of the three lists.");
		return false;
	} else {
		curFormObj.submit();
		return true;
	}
}
function confirmation(text,sendMsgEdit,lineSel,clusterSel,stationSel) {
	if(text.value == "") {
		return false;
	}
	var answer = confirm("Send Message:\n " + text.value);
	if (answer){
		return ValidateSelection(sendMsgEdit,lineSel,clusterSel,stationSel);
	}
	else {
	return false;
	}
}
function filterStation(filterBox,list) {
var temp;
 if(filterBox.selectedIndex == 0) {
	temp = ALL;
 } else if(filterBox.selectedIndex == 1) {
    temp = CAMDEN;
 } else if(filterBox.selectedIndex == 2) {
    temp = PENN;
 } else if(filterBox.selectedIndex == 3) {
    temp = BRUNSWICK;
 } else {
	temp = BRUNSWICKF;
 }
 while(list.length>0) {
  list[0] = null;
 }
 for(n = 0 ; n < temp.length; n++) {
	if(list[n]) {
    list[n].value = temp[n][0];
    list[n].text = temp[n][1];
	} else {
	list[n] = new Option(temp[n][1],temp[n][0]);
	}
 }
}
