// validate we're the top most frame

ReloadAsTop();

function ReloadAsTop() {
	try {
		if (top != self) {
			if (top.location.replace)
				top.location.replace(self.location.href);
			else
				top.location.href = self.location.href;
		}
	} catch (e) {
		if (top.location.replace)
			top.location.replace(self.location.href);
		else
			top.location.href = self.location.href;			
	}
}

function isArray(testObject) {   
    return testObject && !(testObject.propertyIsEnumerable('length')) && typeof testObject === 'object' && typeof testObject.length === 'number';
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return [curleft,curtop];
}

function insertAtCursor(textCtrl, textString) {
	if (document.selection) {
		//IE support
		textCtrl.focus();
		sel = document.selection.createRange();
		sel.text = textString;
		sel.moveStart("character", -textString.length);
		sel.moveEnd("character", 0);
		sel.select();
	} else if (textCtrl.selectionStart || textCtrl.selectionStart == '0') {
		//MOZILLA/NETSCAPE support
		var startPos = textCtrl.selectionStart;
		var endPos = textCtrl.selectionEnd;
		textCtrl.value = textCtrl.value.substring(0, startPos) + textString + textCtrl.value.substring(endPos, textCtrl.value.length);
		textCtrl.setSelectionRange(startPos, startPos + textString.length);
		textCtrl.focus();
	} else {
		textCtrl.value += textString;
	}
}

function FormFieldGetFirst(FormElement) {
	var i, retValue = '', sType;
	var FormElement;

		sType = FormElement.type;
		switch (sType) {
			case 'checkbox':
			case 'radio':
				if (FormElement.checked) {
					retValue = FormElement.value;
				}
				break;
			case 'select':
			case 'select-one':
				if (FormElement.selectedIndex >= 0) {
					retValue = FormElement[FormElement.selectedIndex].value
				}
				break;
			default:
				if (FormElement.length > 0) {
					sType = FormElement[0].type;
					switch (sType) {
						case 'checkbox':
						case 'radio':
							for (i = 0; i < FormElement.length; i++) {
								if (FormElement[i].checked) {
									retValue = FormElement[i].value;
									break;
								}
							}
							break;
						case 'select':
						case 'select-one':
							if (FormElement.selectedIndex >= 0) {
								retValue = FormElement[FormElement.selectedIndex].value;
							}
							break;
						default:
							retValue = FormElement[0].value;
					}
				} else {
					retValue = FormElement.value;
				}
		}

	return(retValue);
}

function EmailCheck (emailStr) {
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

	var matchArray=emailStr.match(emailPat)

	if (matchArray==null) {
		return "Email address seems incorrect (check @ and .'s)\n"
	}
	var user=matchArray[1]
	var domain=matchArray[2]

	if (user.match(userPat)==null) {
		return "The username doesn't seem to be valid.\n"
	}

	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		  for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				return "Destination IP address is invalid!\n"
			}
		}
		return true
	}

	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		return "The domain name doesn't seem to be valid.\n"
	}

	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 ||
		domArr[domArr.length-1].length>3) {
		return "The address must end in a three-letter domain, or two letter country.\n"
	}

	if (len<2) {
		return "This address is missing a hostname!"
	}

	return "";
}