function DoConfirm(message, url) { if (confirm(message)) location.href = url;}

function storeCaret(text){
	if (typeof(text.createTextRange) != 'undefined')
		text.caretPos = document.selection.createRange().duplicate();
}
function replaceText(text, textarea){
	if (textarea.createTextRange && typeof(textarea.caretPos) != "undefined")	{
		var caretPos = textarea.caretPos;
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
		caretPos.select();}
	else if (typeof(textarea.selectionStart) != "undefined"){
		var begin = textarea.value.substr(0, textarea.selectionStart);
		var end = textarea.value.substr(textarea.selectionEnd);
		textarea.value = begin + text + end;
		if (textarea.setSelectionRange){
			textarea.focus();
			textarea.setSelectionRange(begin.length + text.length, begin.length + text.length);}}
	else{
		textarea.value += text;
		textarea.focus(textarea.value.length - 1);}
}

function surroundText(text1, text2, textarea){
	if (textarea.createTextRange && textarea.caretPos){
		var caretPos = textarea.caretPos;
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text1 + caretPos.text + text2 + ' ' : text1 + caretPos.text + text2;
		caretPos.select();}
	else if (textarea.selectionStart){
		var begin = textarea.value.substr(0, textarea.selectionStart);
		var selection = textarea.value.substr(textarea.selectionStart, textarea.selectionEnd - textarea.selectionStart);
		var end = textarea.value.substr(textarea.selectionEnd);
		textarea.value = begin + text1 + selection + text2 + end;
		if (textarea.setSelectionRange){
			var newCursorPos = textarea.selectionEnd + text1.length + text2.length;
			textarea.focus();
			textarea.setSelectionRange(newCursorPos, newCursorPos);}}
	else{
		textarea.value += text1 + text2;
		textarea.focus(textarea.value.length - 1);}
}

function replaceText(text, textarea){
	if (textarea.createTextRange && typeof(textarea.caretPos) != "undefined")	{
		var caretPos = textarea.caretPos;
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
		caretPos.select();}
	else if (typeof(textarea.selectionStart) != "undefined"){
		var begin = textarea.value.substr(0, textarea.selectionStart);
		var end = textarea.value.substr(textarea.selectionEnd);
		textarea.value = begin + text + end;
		if (textarea.setSelectionRange){
			textarea.focus();
			textarea.setSelectionRange(begin.length + text.length, begin.length + text.length);}}
	else{
		textarea.value += text;
		textarea.focus(textarea.value.length - 1);}
}

function surroundText(text1, text2, textarea){
	if (textarea.createTextRange && textarea.caretPos){
		var caretPos = textarea.caretPos;
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text1 + caretPos.text + text2 + ' ' : text1 + caretPos.text + text2;
		caretPos.select();}
	else if (textarea.selectionStart){
		var begin = textarea.value.substr(0, textarea.selectionStart);
		var selection = textarea.value.substr(textarea.selectionStart, textarea.selectionEnd - textarea.selectionStart);
		var end = textarea.value.substr(textarea.selectionEnd);
		textarea.value = begin + text1 + selection + text2 + end;
		if (textarea.setSelectionRange){
			var newCursorPos = textarea.selectionEnd + text1.length + text2.length;
			textarea.focus();
			textarea.setSelectionRange(newCursorPos, newCursorPos);}}
	else{
		textarea.value += text1 + text2;
		textarea.focus(textarea.value.length - 1);}
}

function securityCheck(input) {
	var badchars	= Array('\'','\"','%','\\');
	for(var i=0; i<badchars.length;i++) {
		if(input.indexOf(badchars[i]) != -1)
		  return false;
	}
}

function inputCheck(input,type) {
	var errors = 0;
	var expression;

	switch(type) {
		case 'email':
			expression	= /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
		break;
		case 'text':
			expression	= "";
		break;
		case 'number':
			expression	= "";
		break;
		case 'date':
			expression	= /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/;
		break;
		case 'datedb':
			expression	= /^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})$/;
		break;
		case 'datemysql':
			expression	= /^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})$/;
		break;
		case 'ipaddress':
			expression	= /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;
		break;
		case '':
		break;
	}
	
	if((errors == 0) && (expression != '')) {
		if(!expression.exec(input))
		  errors++;
	}		

	if(errors==0)
		return true;
	else
		return false;
}

function formCheck(cform) {
	if(!cform) {
		alert("Empty form object detected!");
		return false;
	}
	
	var errors		= 0;
	var message		= "Please check the following field(s): \n";
	var controlmessages	= Array();

	for(i=0;i<cform.elements.length;i++) {
		if(cform.elements[i].checkmessage)
		  controlmessages[i] = cform.elements[i].checkmessage;
		else
		  controlmessages[i] = "";
		
		if(cform.elements[i].checkallownull && cform.elements[i].checkallownull=='false') {
			if(cform.elements[i].value) {
				if((cform.elements[i].value == '' || cform.elements[i].value == ' ') || (cform.elements[i].type == "checkbox" && cform.elements[i].checked == false)) {
					errors++;
					if(controlmessages[i] != "") 
				  	  message +="* "+controlmessages[i]+"\n";
					else
				 	  message +="* Field "+cform.elements[i].name+" cannot be blank.\n";	
				}
			} else {	
				errors++;
				if(controlmessages[i] != "") 
				  message +="* "+controlmessages[i]+"\n";
				else
				  message +="* Field "+cform.elements[i].name+" cannot be left blank.  Please fill it in.\n";
			}		
		}
		
		if((cform.elements[i].checktype) && (cform.elements[i].value)) {
			if(!inputCheck(cform.elements[i].value,cform.elements[i].checktype)) {
				errors++;
				if(controlmessages[i] != "") 
				  message +="* "+controlmessages[i]+"\n";
				else
				  message +="* Invalid "+cform.elements[i].checktype+" format in "+cform.elements[i].name+".\n";
			}
		}

		if((cform.elements[i].checkminlen) && (cform.elements[i].value)) {
			if(cform.elements[i].value.length < cform.elements[i].checkminlen) {
				errors++;
				if(controlmessages[i] != "") 
				  message +="* "+controlmessages[i]+"\n";
				else
				  message +="* Length of "+cform.elements[i].name+" cannot be less than "+cform.elements[i].checkminlen+" characters.\n";
			}
		}
		if((cform.elements[i].checkmaxlen) && (cform.elements[i].value)) {
			if(cform.elements[i].value.length > cform.elements[i].checkmaxlen) {
				errors++;
				if(controlmessages[i] != "") 
				  message +="* "+controlmessages[i]+"\n";
				else
				  message +="* Length of "+cform.elements[i].name+" cannot be more than "+cform.elements[i].checkmaxlen+" characters.\n";
			}					
		}
		
		if((cform.elements[i].checkminvalue) && (cform.elements[i].value)) {
			if(cform.elements[i].value < cform.elements[i].checkminvalue) {
				errors++;
				if(controlmessages[i] != "") 
				  message +="* "+controlmessages[i]+"\n";
				else
				  message +="* Value of "+cform.elements[i].name+" cannot be less than "+cform.elements[i].checkminvalue+".\n";
			}
		}
		if((cform.elements[i].checkmaxvalue) && (cform.elements[i].value)) {
			if(cform.elements[i].value > cform.elements[i].checkmaxvalue) {
				errors++;
				if(controlmessages[i] != "") 
				  message +="* "+controlmessages[i]+"\n";
				else
				  message +="* Value of "+cform.elements[i].name+" cannot be less than "+cform.elements[i].checkmaxvalue+".\n";
			}
		}

		if((cform.elements[i].checkmandatorycheckbox)) {
			alert(cform.elements[i].type+" / "+cform.elements[i].checked);
			if(false) {
				if(controlmessages[i] != "") 
				  message +="* "+controlmessages[i]+"\n";
				else
				  message +="* Value of "+cform.elements[i].name+" cannot be less than "+cform.elements[i].checkminvalue+".\n";
			}
		}
	}
	
	if(errors == 0) {
	  return true;
	} else {
	  alert(message);
	  return false;	
	}	
}
