var isDOM=document.getElementById?1:0;
var isIE=document.all?1:0;
var isNS4=navigator.appName=='Netscape'&&!isDOM?1:0;

function getRef(i, p) {
	p = !p ? document : p.navigator ? p.document:p;
	return isIE ? p.all[i]:isDOM ? (p.getElementById ? p : p.ownerDocument ).getElementById(i) : isNS4 ? p.layers[i] : null;
}

function goBack() {
		window.history.back();
}

var passminlen = 6;
var datesep = '-';
var timesep = ':';

function validate(field, type, name) {
		switch (type) {
				case 'string':
					if (field.value == '') {
						alert('Please enter a valid '+name);
						field.focus();
						return false;
					}
					break;
					
				case 'email':
					if ((field.value.indexOf('@') == -1 
							|| field.value.indexOf('.') == -1 
							|| field.value.indexOf('.', field.value.indexOf('@')) <= field.value.indexOf('@')+1
							|| field.value.length < 6)
							&& field.value != 'admin' ) {
						
						alert('Please enter a valid '+name);
						field.focus();
						return false;
					}
					break;
					
				case 'password':
					if (field.value == ''
							|| (field.value.length < passminlen && field.value != 'admin')) {
						alert('Please enter a valid '+name);
						field.focus();
						return false;
					}
					break;
					
				case 'number':
					for (var x=0; x<field.value.length; x++) {
						var ch = field.value.charAt(x);
						
						if (( ch < '0' || ch > '9' ) && ch != '.') {
							alert('Please enter a valid '+name);
							field.focus();
							return false; 
						}
					}
					break;
					
				case 'non0number':
					if (field.value == '' || Number(field.value) == 0) {
						alert('Please enter a valid '+name);
						field.focus();
						return false;
					}
					
					for (var x=0; x<field.value.length; x++) {
						var ch = field.value.charAt(x);
						
						if (( ch < '0' || ch > '9' ) && ch != '.') {
							alert('Please enter a valid '+name);
							field.focus();
							return false; 
						}
					}
					break;
					
				case 'date_mdy':
					var d = new Date(field.value.substr(6, 4)
														, Number(field.value.substr(0, 2))-1
														, field.value.substr(3, 2));
					
					var d2 = ((d.getMonth() < 9)?'0':'')+Number(d.getMonth()+1).toString()+'-'
										+((d.getDate() < 10)?'0':'')+Number(d.getDate()).toString()+'-'
										+Number(d.getFullYear()).toString();
					
					if ((field.value != d2 
							|| field.value.charAt(2) != datesep
							|| field.value.charAt(5) != datesep
							|| field.value.length != 10) && field.value != '') {
						alert('Please enter a valid '+name);
						field.focus();
						return false; 
					}
					break;
					
				case 'date_dmy':
					var d = new Date(field.value.substr(6, 4)
														, Number(field.value.substr(3, 2))-1
														, field.value.substr(0, 2));
					
					var d2 = ((d.getDate() < 10)?'0':'')+Number(d.getDate()).toString()+'-'
										+((d.getMonth() < 9)?'0':'')+Number(d.getMonth()+1).toString()+'-'
										+Number(d.getFullYear()).toString();
					
					if ((field.value != d2 
							|| field.value.charAt(2) != datesep
							|| field.value.charAt(5) != datesep
							|| field.value.length != 10) && field.value != '') {
						alert('Please enter a valid '+name);
						field.focus();
						return false; 
					}
					break;
					
				case 'time24':
					if (field.value.charAt(2) != timesep
							|| field.value.length != 5
							|| Number(field.value.substr(0, 2)) > 23
							|| Number(field.value.substr(3, 2)) > 59) {
						alert('Please enter a valid '+name);
						field.focus();
						return false; 
					}
					break;
					
				case 'radio':
					if (field.value == null) {
						alert('Please select a valid '+name);
						return false; 
					}
					break;
					
				case 'url':
					if (field.value.substr(0, 7) != 'http://' 
							|| field.value.indexOf('.') == -1 
							|| field.value.indexOf(' ') != -1 
							|| field.value.length < 11) {
						
						alert('Please enter a valid '+name);
						field.focus();
						return false;
					}
					break;
		}
		
		return true;
}

function valPassword(pass, confirm) {
		if (pass.value != confirm.value) {
			alert('The password confirmation does not match');
			pass.focus();
			return false;
		}
			
		return true;
}

function ConfirmDel(url, name) {
		if (confirm('Are you sure you want to delete this '+name))
			window.location.href = url;
}

function valLogin() {
		f = window.document.editform;
		ret = validate(f.email, 'email', 'e-mail address')
					&& validate(f.pass, 'password', 'password')
					;
					
		return ret;
}

function valPropertyType() {
		f = window.document.editform;
		ret = validate(f.lx_name, 'string', 'Name');
					
		return ret;
}

function valUrl() {
		f = window.document.editform;
		ret = validate(f.lx_name, 'string', 'Name')
					&& validate(f.lx_content, 'string', 'Content')
					;
					
		return ret;
}

function valUser() {
		f = window.document.editform;
		ret = validate(f.lx_name, 'string', 'Name')
					&& validate(f.lx_email, 'email', 'e-mail address')
					&& validate(f.email_conf, 'email', 'e-mail address confirmation')
					&& validate(f.lx_password, 'password', 'password')
					&& validate(f.confirm, 'password', 'password confirmation')
					&& valPassword(f.lx_password, f.confirm)
					&& valPassword(f.lx_email, f.email_conf)
					&& f.lx_country.value != '0'
					;
					
		if (ret && f.lx_country.value === '0')
			alert('Please select a country');

		return ret;
}

function valSame(one, two) {
		if (one.value != two.value) {
			alert('The e-mail address and e-mail address confirmation does not match');
			one.focus();
			return false;
		}
			
		return true;
}

function valUser2() {
		f = window.document.editform2;
		ret = validate(f.lx_name, 'string', 'Name')
					&& validate(f.lx_email, 'email', 'e-mail address')
					&& validate(f.email_conf, 'email', 'e-mail address confirmation')
					&& valSame(f.lx_email, f.email_conf)
					&& validate(f.lx_password, 'password', 'password')
					&& validate(f.confirm, 'password', 'password confirmation')
					&& valPassword(f.lx_password, f.confirm)
					;
					
		return ret;
}

