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 {
		// Seriously, you should never get here.
		//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 preloadImages(images) {
	if (document.images) {
		var i = 0;
		var imageArray = new Array();
		imageArray = images.split(',');
		var imageObj = new Image();
		for(i = 0; i <= imageArray.length - 1; i++) {
			//document.write('<img src="' + imageArray[i] + '" />');// Write to page (uncomment to check images)
			imageObj.src = imageArray[i];
		}
	}
}

function getElementsByClass(searchClass, node, tag) {
	var classElements = new Array();
	if (node == null) {
		node = document;
	}
	if (tag == null) {
		tag = '*';
	}
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if (pattern.test(els[i].className)) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

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]);  
};  
