var onLoadFocus = '';

function isDefined(type) {
	return type != 'undefined' && type != 'unknown';
}

function getDOMElementById(id) {
	if (isDefined(typeof document.getElementById)) {
		return document.getElementById(id);
	} else if (isDefined(typeof document.all)) {
		return document.all[id];
	} else {
		//throw new Error("Can not find a method to locate DOM element.");  // Lets not throw anything...
		return null;
	}
}

function openRegForm(formNo) {
	document.forms['registerData'].step.value = formNo;
	document.forms['registerData'].submit();
}

function startRegistration(type) {
	document.forms['registerData'].regtype.value = type;
	document.forms['registerData'].submit();
}

function openPaymentWin() {
	window.open('/?page=paymentResult','paymentWin','menubar=no,location=no,scrollbars=yes,resizable=yes,width=868');
}

function deleteEvent(time) {
	document.deleteForm.rowid.value = time;
	document.deleteForm.submit();
}

function deleteSupportRequest(caseID) {
	document.deleteForm.caseID.value = caseID;
	document.deleteForm.submit();
}

function MM_goToURL() { //v3.0
	var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
	for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

function showFlash(visible) {
	var elem = getDOMElementById('flash');
	if (elem == null) {
		return;
	}
	if (visible == 0) {
		elem.style.display='none';
	} else {
		elem.style.display='';
	}
}

function tutorialStart() {
	showFlash(0);
	getDOMElementById('wizardContainer').style.display = ''; 
}

function tutorialEnd() {
	getDOMElementById('wizardContainer').style.display = 'none'; 
}

function showPage(pageNo) {
	var maxPages = 9;
	var i = 1;
	while (i <= maxPages) {
		var contentPageNo = 'contentPage'+i;
		var buttonsPageNo = 'buttonsPage'+i;
		getDOMElementById(contentPageNo).style.display = 'none';
		getDOMElementById(buttonsPageNo).style.display = 'none';
		i++;
	}
	getDOMElementById('contentPage'+pageNo).style.display = '';
	getDOMElementById('buttonsPage'+pageNo).style.display = '';
}

function doLoaded() {
	if (onLoadFocus && onLoadFocus.length > 0) {
		eval(onLoadFocus + '.focus()');
	}
}

function toggleDisplay(element, visible) {
	if (typeof element == 'string') {
		element = getDOMElementById(element);
	}
	if (element == null) {
		return;
	}
	
	if (visible == null) {
		visible = (element.style.display == 'none');
	}

	if (visible) {
		element.style.display = '';
	}
	else {
		element.style.display = 'none';
	}
}


function formPopulateSelectElement(crntElement, values, defValue, keepFirst) {
	if (typeof crntElement == 'string') {
		crntElement = getDOMElementById(crntElement);
	}

	if (crntElement) {
		var parentElement = crntElement.parentNode;

		// Create new 'select' element with same attributes as old element
		var newElement = crntElement.cloneNode(false);

		// Clone current first option to new list
		if (keepFirst && (crntFirstChild = crntElement.getElementsByTagName('OPTION')[0])) {
			newElement.appendChild(crntFirstChild.cloneNode(true));
		}

		// Add children ('option' elements) to 'select' element
		for (var i = 0; i < values.length; i++) {
			var value = values[i][0];
			var text  = values[i][1] ? values[i][1] : values[i][0];
			var newChild = document.createElement('option');
			newChild.setAttribute('value', value);
			newChild.innerHTML = text;

			newElement.appendChild(newChild);

			if (value === defValue) {
				newElement.value = value;
			}
		}

		// Add new select element
		parentElement.insertBefore(newElement, crntElement);

		// Remove current select element
		parentElement.removeChild(crntElement);

	}
}

function submitForm(formName) {
	var i, args = submitForm.arguments;
	for (i=1; i<(args.length-1); i+=2) {
		var formElement = document.forms[formName].elements[args[i]];

		// Force new hidden element, if given element gets submitted only on certain action (pushing a button)
		var forceNew = false;
		if (formElement && (formElement.type != 'submit' || formElement.type != 'button')) {
			forceNew = true;
		}

		if (formElement && !forceNew) {
			document.forms[formName].elements[args[i]].value=args[i+1];
		}
		else {
			if (document.createElement) {
				if (document.appendChild) {
					// Create new hidden element and append it to form before submitting.
					formAddHiddenElement(formName, args[i], args[i+1], forceNew);
				}
			}
		}
	}
	document.forms[formName].submit();
	return true;
}

function formAddHiddenElement(formName, name, value, force) {
	if (force || (!force && !document.forms[formName].elements[name])) {
		var newElement = document.createElement('input');
		newElement.setAttribute('type', 'hidden');
		newElement.setAttribute('name', name);
		newElement.setAttribute('value', value);
		document.forms[formName].appendChild(newElement);
	} else {
		// XXX: ???
		alert('not');
	}
}

function enterPressed(e) {

	// Catch the keyCode into a variable. 
	// IE = keyCode, DOM = which.
	var code = (e.keyCode) ? e.keyCode : e.which;

	// If code = 13 (enter) or 3 (return),
	// cancel it out; else keep going and
	// process the key.
	if (code == 13 || code == 3) {
		return true;
	} else {
		return false;
	}
}

Function.prototype.chain = function(args) {  
	args.push(this);  
	return function() {  
		for(var i = 0; i < args.length; i++) {  
			args[i]();  
		}  
	}  
}; 

window.addLoad = function(fn) {  
	window.onload = typeof(window.onload) != 'function' ? fn : window.onload.chain([fn]);  
};  
