function ErrorMessage(message, node) {
var a = 'a' + node.name
	if (document.getElementById(a)) {
		RemoveNextElement (node);
	}
	var elem = AddNextElement1(node,'DIV',message)
	
	if (elem.nextSibling != null) {
		if (elem.nextSibling.nodeName == 'BR') {
			RemoveNextElement (elem);			
		}
	}
	return;
}
function AddNextElement1(ref,name,txt) {
	var elem=document.createElement(name);
	if (txt != ''){
		elem.id='a'+ref.name //reference element name is the id of new element (optional, I am using this only with form)
		var txt = document.createTextNode(txt);
		elem.appendChild(txt);
	}
	ref.parentNode.insertBefore(elem,ref.nextSibling)
	return elem
}
function RemoveNextElement(id) {
	id.parentNode.removeChild(id.nextSibling);
}

function DelErrorMessage(id) {
	RemoveNextElement(id)
	AddNextElement1(id,'BR','')
}

function chkuser(form) {
	var un = form.username
	var re = /[^_a-zA-Z0-9-]/
	if (re.test(form.username.value)) {
		ErrorMessage("Only letters, numbers and underscores are allowed", un)
		return false
	}
	if (form.username.value.length < 5 || form.username.value.length > 15) {
		ErrorMessage("ID must be between 5 and 15 characters long", un)
		return false
	}
	DelErrorMessage(un)
}

function chkcode(form) {
	var un = form.code
	if (form.code.value.length != 5) {
		ErrorMessage ("Please enter the code as shown in image below. This code can be typed in all lowercase.", un)
		return false
	}
	DelErrorMessage(un)
}


function chkpass(form) {
	var un = form.password
	if (form.password.value.length < 6 || form.password.value.length > 32) {
		ErrorMessage ("Use 6 to 32 characters", un)
		return false
	}
	DelErrorMessage(un)
}

function chkpassr(form) {
	var un = form.rpassword
	if (form.password.value != form.rpassword.value) {
		ErrorMessage ("Please verify your password again", un)
		return false
	}
	DelErrorMessage(un)
}
function chkemail(form) { 
	if ((form.email.value.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1) == false) {
		ErrorMessage("Invalid email found...", form.email)
		return false
	}
}
function chkurl(form) {
	if (form.url.value != "") {
		var ree = /^http[s]?:\/\//i
		var url = form.url.value
		if (!ree.test(url)) {
			var url = 'http://'+form.url.value
		}
		var reee = /^http[s]?:\/\/[a-z0-9\-]+\.([a-z0-9\-]+\.)?[a-z]+/i
		var action = document.getElementById("urerr")
		if (!reee.test(url)) {
			ErrorMessage('Please enter a valid url', form.url)
			return false;
		}
	}
	DelErrorMessage(form.url)
}


function chktutname(form) {
	var un = form.tutname
	if (un.value.length < 5 || un.value.length > 100) {
		ErrorMessage("Tutorial name must be between 5 and 100 characters long", un)
		return false
	}
	DelErrorMessage(un)
}

function chkcat(form) {
	var un = form.category
	if (un.value.length < 3 || un.value.length > 30) {
		ErrorMessage("Category/subcategory must be between 3 and 30 characters long", un)
		return false
	}
	DelErrorMessage(un)
}

function chktxt(form) {
	var un = form.description
	if (un.value.length < 50 || un.value.length > 255) {
		ErrorMessage("Description must be between 50 and 255 characters long", un)
		return false
	}
	DelErrorMessage(un)
}

function chkavt(form) {
	var un = form.avatar
	var re = /(\.gif)$/i
	if (un.value != '') {
		if (!re.test(un.value)) {
			ErrorMessage("50px by 50px and GIF only.", un)
			return false
		}
	}
	DelErrorMessage(un)
}

function chkthum(form) {
	var un = form.thum
	var re = /(\.jpg)$/i
	if (un.value != '') {
		if (!re.test(un.value)) {
			ErrorMessage("75px by 75px and JPG only.", un)
			return false
		}
	}
	DelErrorMessage(un)
}

function chktut(form) {
	var un = form.zip
	'txt','rtf','mht','html','htm','docx','doc','bz2','gz','tar','zip','pdf'
	var re = /(\.txt|\.rtf|\.mht|\.html|\.docx|\.doc|\.bz2|\.gz|\.tar|\.zip|\.pdf)$/i
	if (!re.test(un.value)) {
		ErrorMessage("Please upload your tutorial in .txt, .doc (MS-Word 97-2003), .docx (MS-Word 2007), .rtf (Windows Wordpad), pdf, html and mht file format. You also can upload your tutorials by compressing in zip, gz, tar and bz2 file format. The file size should not exceed 5 MB.", un)
		return false
	}
	DelErrorMessage(un)
}


function ValidateSubmission(form) {
	if (chktutname(form) == false) return false
	if (chkcat(form) == false) return false
	if (chktxt(form) == false) return false
	if (chkavt(form) == false) return false
	if (chktut(form) == false) return false
	return true
}


function ValidLogin(form) {
	if (chkuser(form) == false) return false
	if (chkpass(form) == false) return false
	return true
}
function ValidSignup(form) {
	if (chkuser(form) == false) return false
	if (chkpass(form) == false) return false
	if (chkpassr(form) == false) return false
	if (chkurl(form) == false) return false
	return true
}
function ValidReset(form) {
	if (chkpass(form) == false) return false
	if (chkpassr(form) == false) return false
	return true
}