/***********************************************************************************
 * File: form.js
 * Description:
 *   Form functions
 *
 ***********************************************************************************/

 /**********************************************************
  * Form functions
  **********************************************************/
  
  	// Mark page as included
  	var page_included_inc_client_form_js = true;
	var form_isDirty;
	var form_defaultFormItem;
	var form_otherOnloadFunc = null;
	
	function form_onkeypress() {
		var key;
		
		// Get key code
		if(document.layers) { 
			if(e)
				key = e.which;
		}
		else if(window.event)
     		key = window.event.keyCode;
		else
			return true;
					
		// Return key pressed?
		if(key == 13) {
			var item = window.event.srcElement;
			
			// Make sure current field is not a textarea
			if(item.type != "textarea") {
				// Submit form
				form_submit();
				return false;
			}
		}
		return true;
	}
	
	function form_defaultForm(form) {
		if(!form_defaultFormItem || form) {
			// First time?
			if(!form_defaultFormItem) {
				// Handle return keys
				document.onkeypress = form_onkeypress;
				// Set focus to first item
				if(window.onload)
					form_otherOnloadFunc = window.onload;
				window.onload = form_focusFirstItem;
			}

			if(form)
				form_defaultFormItem = form;
			else if(document.forms.length > 0)
				form_defaultFormItem = document.forms[0];
		}
		return form_defaultFormItem;
	}
	
	// Submit form after validation
	function form_submit(form) {
		var valid = true;
		
		// Get default form
		if(!form)
			form = form_defaultForm();
			
		if(form.onsubmit)
			valid = (form.onsubmit)();
		
		if(valid)
			form.submit();
	}

	function form_reset(form) {
		// Get default form
		if(!form)
			form = form_defaultForm();
		form.reset();	
	}
	
	// Cancel form update
	function form_cancel(url, form) {
		if(!form_isDirty || confirm("Are you sure you wish to cancel update?"))
			document.location = url;
	}
	
	function form_dirty(item, condition) {
		if(item.value)
			x = false;
	}
	
	function form_focusFirstItem(form) {
		// Call other onload function
		if(form_otherOnloadFunc)
			form_otherOnloadFunc();
	
		if(!form)
			form = form_defaultForm();
			
		var invalidFields = "hidden|checkbox|radio";
		var elements = form.elements;
		var i = 0;
		// Find first valid form item
		while(i < elements.length && (invalidFields.indexOf(elements[i].type) >= 0 || elements[i].disabled))
			i++;
		
		if(i < elements.length) {
			elements[i].focus();
			return true;
		}
		return false;
	}
	
	// Check/Uncheck items, valueOption is either an object to get value from or true or false
	function form_checkItems(prefix, form, valueOption) {
		// Get default form
		if(!form)
			form = form_defaultForm();
		
		// Loop through each form element
		for(var i = 0; i < form.elements.length; i++) {
			var item = form.elements[i];
			
			// Part of checkbox group?
			if(item.type == "checkbox" && item.name.substr(0, prefix.length) == prefix) {
				// Get check value from object?
				if(typeof(valueOption) == "object")
					item.checked = valueOption.checked;
				// Check if set to true or false?
				else if(typeof(valueOption) == "boolean")
					item.checked = valueOption;
				// Invert current check status
				else
					item.checked = !item.checked;
			}
		}
	}
	
