var theForm;
var fieldnodes = [];

function init()
{
	theForm = document.forms['aspForm'];
	if (!theForm) theForm = document.aspForm;
	collectNodes(document.body, fieldnodes);
	setMaxLength();
}

function __doPostBack(eventTarget, eventArgument) {
	if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
		theForm.__EVENTTARGET.value = eventTarget;
		theForm.__EVENTARGUMENT.value = eventArgument;
		theForm.submit();
	}
}

function collectNodes(start, results) {
	if (!results) { results = []; }	
	for (var i = 0, len = start.childNodes.length; i < len; i++) {
		var c = start.childNodes[i];
		if (c.nodeType == 1) {
			if (c.tagName == 'A' ||  (c.tagName == 'INPUT' && c.getAttribute('type') != 'hidden')  || c.tagName == 'SELECT' || c.tagName == 'TEXTAREA') {
				results.push(c);
			}
		}
		collectNodes(c, results);
	}
	return;
}

function handleEnter(field, event) {
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if (keyCode == 13) {
		var i;
		for (i = 0; i < fieldnodes.length; i++)
			if (field == fieldnodes[i])
				break;
		i = (i + 1) % fieldnodes.length;
		fieldnodes[i].focus();
		return false;
	} 
	else
	return true;
}

function setMaxLength() {
	var x = document.getElementsByTagName('textarea');
	var counter = document.createElement('div');
	counter.className = 'TextAreaCounter';
	for (var i=0;i<x.length;i++) {
		if (x[i].getAttribute('maxlength')) {
			var counterClone = counter.cloneNode(true);
			counterClone.relatedElement = x[i];
			counterClone.innerHTML = '<span>0</span>/'+x[i].getAttribute('maxlength');
			x[i].parentNode.insertBefore(counterClone,x[i].nextSibling);
			x[i].relatedElement = counterClone.getElementsByTagName('span')[0];
			x[i].onkeyup = x[i].onchange = checkMaxLength;
			x[i].onkeyup();
		}
	}
}

function checkMaxLength() {
	var maxLength = this.getAttribute('maxlength');
	var currentLength = this.value.length;
	if (currentLength > maxLength)
		this.relatedElement.className = 'TooMuch';
	else
		this.relatedElement.className = '';
	this.relatedElement.firstChild.nodeValue = currentLength;
	// not innerHTML
}

// Add proper URL encoding support
var encodeURIComponentSupport = true;
var encodeURIComponentCharacters = ' "#$%&+,/:;<=>?@[\\]^`{|}';
function encodeURIString(value) {
	if (encodeURIComponentSupport) {
		try {
			return encodeURIComponent(value);
		}
		catch(e) {
			encodeURIComponentSupport = false;
		}
	}
	
	var encodedString = '';
	for(var i=0;i<value.length;i++) {
		var vchar = value.charAt(i);
		var achar = value.charCodeAt(i);
		if (encodeURIComponentCharacters.indexOf(vchar) >= 0 || achar < 32)
			encodedString += + '%' + achar.toString(16);
		else if (achar < 128)
			encodedString += vchar;
		else if (achar > 127 && achar < 2048) {
			encodedString += escape(String.fromCharCode((achar >> 6) | 192));
			encodedString += escape(String.fromCharCode((achar & 63) | 128));
		}
		else {
			encodedString += escape(String.fromCharCode((achar >> 12) | 224));
			encodedString += escape(String.fromCharCode(((achar >> 6) & 63) | 128));
			encodedString += escape(String.fromCharCode((achar & 63) | 128));
		}
	};

	return encodedString;
}

function SetFocus(obj, hint) {
	obj.className = obj.className.replace(' Focus', '').replace(' Blur', '') + ' Focus';
	if (obj.value == hint)
		obj.value = '';
}

function SetBlur(obj, hint) {
	if (obj.value == '') {
		obj.value = hint;
		obj.className = obj.className.replace(' Focus', '').replace(' Blur', '') + ' Blur';
	}
	else {
		obj.className = obj.className.replace(' Focus', '').replace(' Blur', '') + ' Focus';
	}
}

function track(url, source)
{
	source = (typeof(source) == undefined) ? '' : source;
	var trackImage = new Image();
	trackImage.src = '/Shared/Helpers/Track.asp?url=' + encodeURIString(url) + '&referral=' + encodeURIString(window.location.href) + '&source=' + encodeURIString(source);
	document.body.appendChild(trackImage)
	return true;
}

function generateBackButton(text)
{
	if (window.history.length > 1)
		document.write('<img alt="" src="/Design/Icons/page_white_back.png" class="Icon" /> <a href="javascript: history.back();">' + text + '</a>');
}

function generateCancelButton(text)
{
	if (window.history.length > 1)
		document.write('<img alt="" src="/Design/Icons/cancel.png" class="Icon" /> <a href="javascript: history.back();">' + text + '</a>');
}