/* ======================================================================= */
/* Author: H Robert King                                                   */
/* Copyright 2003, All Rights Reserved.                                    */
/*                                                                         */
/* DESCRIPTION:                                                            */
/* ----------------------------------------------------------------------- */
/* The functions in this file give access to common dynamic website        */
/* features, such as database record edit and delete.                      */
/* ======================================================================= */
var BEHAVIOR = new Cathmhaol.EventHandler();
var DOM = new Cathmhaol.Document();
var ERROR = new Cathmhaol.Error();

var intLocationCapacity = new Array(0);

function recordEdit() {
	//id is in the format record-<record number>
	var key = arguments[0].id.replace(/record-/, "");
	var objForm = document.getElementById("record-edit")
	objForm.elements["id"].value = key;
	objForm.submit();
}
function defaultCapacity() {
	/* Default the capacity when creating a new class based on the location selected for the class */
	var intCurrentValue = parseInt(document.forms["edit"].elements["Capacity"].value);
	if (isNaN(intCurrentValue) || intCurrentValue == 0) {
		document.forms["edit"].elements["Capacity"].value = intLocationCapacity[arguments[0]];
	}
}
function deleteRecord() {
	/* Submit the form, marking the action as a deletion. */
	document.forms["edit"].elements["delete"].value = arguments[0];
	document.forms["edit"].submit();
}
function editRecord() {
	document.forms["edit"].elements["id"].value = arguments[0];
	document.forms["edit"].submit();
}
function openWindow() {
	/* Open a window using the provided window specifications provided. Arguments are: */
	/* URL, WindowName, Width, Height, and Options.                                    */
	var width = Math.floor(screen.width/4)*3;
	var height = Math.floor(screen.height/2);
	var url = arguments[0];
	var name = (arguments.length > 1 ? arguments[1] : "newWin");
	width = (arguments.length > 2 ? (parseInt(arguments[2]) > 0 ? parseInt(arguments[2]) : width) : width);
	height = (arguments.length > 3 ? (parseInt(arguments[3]) > 0 ? parseInt(arguments[3]) : height) : height);
	var options = (arguments.length > 4 ? (arguments[4] != "" ? ","+arguments[4] : "") : "");
	var top = (screen.width - width) / 2;
	var left = (screen.height - height) / 2;
	win = window.open(url, name, 'height='+height+',width='+width+',top='+top+',left='+left+',scrollbars=1,statusbar=1'+options);
	if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
	return false;
}
function register() {
	document.forms["preregistration_begin"].elements["Language"].value = (arguments[0] == "sp" ? "Spanish" : "English");
	document.forms["preregistration_begin"].submit();
}
function terminate() {
	if (window.opener != undefined) {
		window.opener.location.reload();
		window.close();
	}
}
function toggle() {
	var objElements = Array("submitData","working_message");
	for (var i=0; i<objElements.length; i++) {
		var objNode = document.getElementById(objElements[i]);
		var blnShow = (objNode.className == "hidden")
		var strClassName = (blnShow ? "show" : "hidden")
		objNode.className = strClassName;
	}
	return true;
}
function toggleRollover(obj) {
	if (obj.className.indexOf("Rollover") > -1) {
		obj.className = obj.className.replace(/Rollover/gi, "");
		window.status = "";
		return true;
	} else {
		obj.className = obj.className + "Rollover";
		window.status = obj.title;
		return true;
	}
}
function toggleSubmenu(objNode) {
	var EXPAND_STYLE = "block";
	var EXPAND_IMAGE = "right";
	var EXPAND_REGEX = /block|right/i;
	var COLLAPSE_STYLE = "none";
	var COLLAPSE_IMAGE = "left";
	var COLLAPSE_REGEX = /none|left/i;

	var objImage = objNode.getElementsByTagName("img").item(0);
	var objSubmenu = objNode.getElementsByTagName("ul").item(0);

	var blnIsShowing = (objSubmenu.style.display == "" || objSubmenu.style.display == EXPAND_STYLE);
	if (blnIsShowing) {
		//hide and toggle the image
		objImage.alt = "Expand Menu";
		objImage.src = objImage.src.replace(COLLAPSE_REGEX, EXPAND_IMAGE);
		objSubmenu.style.display = COLLAPSE_STYLE;
	} else {
		//show and toggle the image
		objImage.alt = "Collapse Menu";
		objImage.src = objImage.src.replace(EXPAND_REGEX, COLLAPSE_IMAGE);
		objSubmenu.style.display = EXPAND_STYLE;
	}
}
function toggleMenu(objMenuItem, blnIsHovering) {
	if (blnIsHovering) {
		objMenuItem.style.background = "url(/images/arrow-left.gif)";
		objMenuItem.style.backgroundPosition = "right";
		objMenuItem.style.backgroundRepeat = "no-repeat";
		objMenuItem.style.fontWeight = "bold";
		window.status = objMenuItem.title;
		return true;
	} else {
		objMenuItem.style.background = "";
		objMenuItem.style.fontWeight = "normal";
		window.status = "";
		return true;
	}
}

function loadController() {
	/* Menu */
	var nodeList = document.getElementsByTagName("li");
	for (var intIndex=0; intIndex<nodeList.length; intIndex++) {
		var domObject = nodeList[intIndex];
		switch (domObject.parentNode.className) {
			case "menu":
				BEHAVIOR.add(domObject, "mouseout", "window.status=''; return true;");
				BEHAVIOR.add(domObject, "mouseover", "window.status=this.id; return true;");
				break;
			case "submenu":
				BEHAVIOR.add(domObject, "mouseout", "toggleMenu(this, false);");
				BEHAVIOR.add(domObject, "mouseover", "toggleMenu(this, true);");
				break;
			case "tinyHorizontalLink":
				BEHAVIOR.add(domObject, "mouseout", "window.status=''; return true;");
				BEHAVIOR.add(domObject, "mouseover", "window.status=this.title; return true;");
				break;
		}
	}

	/* Form(s) */
	for (var intFormIndex=0; intFormIndex<document.forms.length; intFormIndex++) {
		var objForm = document.forms[intFormIndex];
		/* for each element within the form */
		for (var intElementIndex=0; intElementIndex<objForm.elements.length; intElementIndex++) {
			var objFormElement = objForm.elements[intElementIndex];
			/* set onFocus routines */
			switch (objFormElement.type) {
				case undefined:
					/* don't do anything -- we don't know what this is */
					break;
				case "undefined":
					/* don't do anything -- we don't know what this is */
					break;
				default:
					BEHAVIOR.add(objFormElement, "focus", "DOM.Form.Element.setFocus(this)");
					BEHAVIOR.add(objFormElement, "blur", "DOM.Form.Element.removeFocus(this)");
					break;
			}

			/* set validation routines */
			switch (objFormElement.id) {
				case "txtLastName":
					BEHAVIOR.add(objFormElement, "blur", "validateCaseName();");
					break;
				case "txtCaseNumber":
					BEHAVIOR.add(objFormElement, "blur", "DOM.toUpper(this.id); validateCaseNumber();");
					break;
			}
		}
	}
}

/* General functions */
function hideObject(obj) {
	DOM.addClass(obj, "hidden");
}
function showObject(obj) {
	DOM.removeClass(obj, "hidden");
}

/* Action-related functions */
function toggleRollover(obj) {
	if (!obj || !obj.className) { return true; }
	if (obj.className.indexOf("Rollover") > -1) {
		DOM.removeClass(obj, "Rollover");
		displayStatusMessage("");
	} else {
		DOM.addClass(obj, "Rollover");
		displayStatusMessage(obj.id);
	}
	return true;
}
function displayStatusMessage(message) {
	window.status = message;
	return true;
}
function validateCaseName() {
//	var objCase = new Cathmhaol.MCFCInterface(document.getElementById("txtFirstName"), document.getElementById("txtLastName"), true, "mcfc_info");
//	objCase.caseNumber = document.getElementById("txtCaseNumber");
//	objCase.caseOpposingPartyFirstName = document.getElementById("txtOpposingFirstName");
//	objCase.caseOpposingPartyLastName = document.getElementById("txtOpposingLastName");
//	objCase.check();
}
function validateCaseNumber() {
	var oVerified = document.getElementById("Verified")
	if (oVerified && oVerified.value == "True") { return; }
	var objCase = new Cathmhaol.MCFCInterface(document.getElementById("txtCaseNumber"), true, "mcfc_info");
	objCase.casePartyFirstName = document.getElementById("txtFirstName");
	objCase.casePartyLastName = document.getElementById("txtLastName");
	objCase.caseOpposingPartyFirstName = document.getElementById("txtOpposingFirstName");
	objCase.caseOpposingPartyLastName = document.getElementById("txtOpposingLastName");
	objCase.casePartyTypeIndicatorPetitioner = document.getElementById("btnPetitioner");
	objCase.casePartyTypeIndicatorRespondent = document.getElementById("btnRespondent");

	var cmbCounty = document.getElementById("cmbCounty");
	if (objCase._isValidCaseNumber()) {
		for (var i=0; i<cmbCounty.options.length; i++) {
			if (cmbCounty.options[i].value == "Maricopa") {
				cmbCounty.selectedIndex = i;
				break;
			}
		}
	}

	objCase.check();
}

/* This loads all the event handlers */
BEHAVIOR.add(window, "load", loadController);

