var TRAVEL_ORDER_FORM = "TravelOrderFormContents";
var TRAVEL_ORDER_COPY_FORM = "TravelOrderCopyFormContents";
var TRAVEL_ORDER_APPROVAL_FORM = "TravelOrderApprovalFormContents";
var TRAVEL_ACCOUNT_FORM = "TravelAccountFormContents";
var TRAVEL_ACCOUNT_APPROVAL_FORM = "TravelAccountApprovalFormContents";
var TRAVEL_ACCOUNT_VIEW_FORM = "TravelAccountViewFormContents";

var ATTACHED_EVENTS = new Array();


function addInit(func) {
	try {
		window.addEventListener("load", func, false);
	} catch (e) {
		window.attachEvent("onload", func);
	}
}

function addEvent(obj, ev, func) {
	try {
		obj.addEventListener(ev, func, false);
	} catch (e) {
		obj.attachEvent("on"+ev, func);
	}
	if (obj.uniqueID) {
		var id = obj.uniqueID;
		if (ATTACHED_EVENTS[id] == null) {
			ATTACHED_EVENTS[id] = new Array();
		}
		if (ATTACHED_EVENTS[id][ev] == null) {
			ATTACHED_EVENTS[id][ev] = new Array();
		}
		ATTACHED_EVENTS[id][ev].push(func);
	}
}

function getEvents(obj) {
	if (obj.uniqueID) {
		return ATTACHED_EVENTS[obj.uniqueID];
	} else {
		return null;
	}
}

function getChildrenByTagName(element, tag) {
	var children = new Array();
	for (var i=0; i<element.childNodes.length; i++) {
		if (element.childNodes[i].nodeName.toLowerCase() == tag) {
			children.push(element.childNodes[i]);
		}
	}
	return children;
}

function getFirstChildElementByName(element, name)
{
	var childInputs = element.getElementsByTagName("input");
	for (var i=0; i<childInputs.length; i++) {	
		if (childInputs[i].getAttribute("name") == name) {
			return childInputs[i];
		}
	}	
	return null;
}

function getInputValue(element)
{
	if (element.localName!="select" && element.localName!="SELECT")
	{
		ret = element.value;
		return ret;
	}
	else
	{
		return getSelectedValue(element);
	}
}

/* mappers */


function mapOne(objects, funcName, parameter) {
	for (i=0; i<objects.length; i++) {
		eval("objects[i]."+funcName+"(parameter)");
	}

}

function mapTwo(objects, funcName, para1, para2) {
	for (i=0; i<objects.length; i++) {
		eval("objects[i]."+funcName+"(para1,para2)");
	}
}

/*
function xmlToMap(node) {
	if (node == null) {
		return new Array();
	} else {
		var allText = true;
		var textValues = "";

		for (var i=0; i<node.childNodes.length; i++) {
			if (node.childNodes[i].nodeType != 3) {
				allText = false;
				break;
			} else {
				textValues += node.childNodes[i].nodeValue;
			}
		}

		if (allText) {
			return textValues;
		} else {
			map = new Array();
			for (var i=0; i<node.childNodes.length; i++) {
				if (node.childNodes[i].nodeType == 1) {
					map[node.childNodes[i].nodeName] = xmlToMap(node.childNodes[i]);
				}
			}
			return map;
		}
	}
	
}
*/



function removeNonSelectedOptions(select) {
	while(removeFirstNonSelectedOption(select)) ;
}

function removeFirstNonSelectedOption(container) {
	var options = container.getElementsByTagName("option");
	for (var i=0; i<options.length; i++) {
		if (options[i].selected != true) {
			options[i].parentNode.removeChild(options[i]);
			return true;
		}
	}	
	return false;
}

function selectOption(select, optionValue) {
	var options = select.getElementsByTagName("option");
	for (var i=0; i<options.length; i++ ){
		if (options[i].value == optionValue) {
			options[i].selected = true;
		} else {
			options[i].selected = false;
		}
	}
}

function removeFirstNodeByClass(parentNode, nodeName, className) {
	var nodes = parentNode.getElementsByTagName(nodeName);
	for (var i=0; i<nodes.length; i++) {
		if (nodes[i].className == className) {
			parentNode.removeChild(nodes[i]);
			return true;
		}
	}
	return false;
}


function isInt(myNum)
{
	var myMod = myNum % 1;
	if (myMod == 0)
	{
		return true;
	}
	else
	{
		return false;
	}	
}

function stringToFloat(string) {
	var value = parseFloat(string);
	if (isNaN(value)) {
		value = 0;
	}
	return value;
}

function getSelectValue(select) {
	try {
		return select.options[select.selectedIndex].value;
	} catch (e) {
		return null;
	}
}

function isNaNLocal(number)
{	
	var numberParts = new Array();
	var numberStr = new String();
	numberStr = number + '';

	if (numberStr.indexOf(".")>=0)
	{
		return true;	
	}

	numberParts = numberStr.split(',');
	if (numberParts.length>3)
	{
		return true;
	}

	var isNumber = true;

	for (var i=0; i<numberParts.length; i++)
	{
		isNumber = isNumber && isInt(numberParts[i]);
	}

	return !isNumber;
}

function getElementsByClassname(tagName, className, type)
{
	var resultElements = new Array();
	var elements = document.getElementsByTagName(tagName);
	var i = 0;
	for (var j=0; j<elements.length; j++)
	{
		var inputType = elements[j].getAttribute("type");
		var typeOk = true;

		if (type!=null)
		{
		//	if && inputType!=null)
			typeOk = (inputType==type);
		}

		if (typeOk)			
		{
			if (elements[j].className==className)
			{
				resultElements[i] = elements[j];
				i++;
			}
		}
	}

	return resultElements;
}

function getButtonsByClassname(className)
{
	var resultElements = new Array();
	resultElements = getElementsByClassname("input", className, "button");

	return resultElements;
}



function removeChildNodes(node) {
//	alert("removing child nodes " + node.childNodes + " (" + node.childNodes.length + ") for node: " + node);
	while (node.hasChildNodes()) {
		node.removeChild(node.childNodes[0]);
	}
}

/* form testers */

function isTravelOrderForm() {
	return (document.getElementById(TRAVEL_ORDER_FORM) != null);
}

function isTravelOrderCopyForm() {
	return (document.getElementById(TRAVEL_ORDER_COPY_FORM) != null);
}

function isTravelOrderApprovalForm() {
	return (document.getElementById(TRAVEL_ORDER_APPROVAL_FORM) != null);
}

function isTravelAccountForm() {
	return (document.getElementById(TRAVEL_ACCOUNT_FORM) != null);
}

function isTravelAccountApprovalForm() {
	return (document.getElementById(TRAVEL_ACCOUNT_APPROVAL_FORM) != null);
}
	
function isTravelAccountViewForm() {
	return (document.getElementById(TRAVEL_ACCOUNT_VIEW_FORM) != null);
}

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };
