var submitDone = false;
 
function safeSubmit(myFormId, myButton, message) {
   	myForm = document.getElementById(myFormId);
	if (!submitDone) {
		submitDone = true;
		myButton.value = message;
		myButton.disabled = true;
		myForm.submit();
		return true;
	}
	return true;
}

function validEmail(email)
{
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(email)) return true;
	else return false;
}

function ajaxPageRequest(url, param, containerId, requestMethod) {
	var xmlhttp=null
	if (window.XMLHttpRequest) xmlhttp=new XMLHttpRequest() // Mozilla, etc.
	else if (window.ActiveXObject) xmlhttp=new ActiveXObject("Microsoft.XMLHTTP") // IE
	
	if (xmlhttp!=null) {
		xmlhttp.onreadystatechange=function(){
			if (xmlhttp.readyState==4) { 	// if xmlhttp shows "loaded"
				if (xmlhttp.status==200) 	// if "OK"
		    		document.getElementById(containerId).innerHTML = xmlhttp.responseText
		    	else
		    		alert ("An error occured during refreshing page.")
				}
		}

		if (requestMethod=="POST") {
			xmlhttp.open(requestMethod,url,true);
			xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=iso-8859-2');
			xmlhttp.send(param);
		}
		else if (requestMethod=="GET") {
			xmlhttp.open(requestMethod,url+"?"+param,true);
			xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=iso-8859-2');
			xmlhttp.send(null);			
		}		
	}
	else alert ("Error: your browser doesn't support XMLHTTP."); 
}

// code from http://simonwillison.net/2006/Jan/20/escape/
RegExp.escape = function(text) {
  if (!arguments.callee.sRE) {
    var specials = [
      '/', '.', '*', '+', '?', '|',
      '(', ')', '[', ']', '{', '}', '\\'
    ];
    arguments.callee.sRE = new RegExp(
      '(\\' + specials.join('|\\') + ')', 'g'
    );
  }
  return text.replace(arguments.callee.sRE, '\\$1');
}









