var $ = function(id){return document.getElementById(id);}
var $$ = function(tag){return document.createElement(tag);}
var $$$ = function(tag){return document.getElementsByTagName(tag);}
var encode = function(s){return encodeURIComponent(s);}
String.prototype.nl2br = function(){return this.replace(/([^>])\n|\r|\r\n/g, '<br>');}
String.prototype.br2nl = function(){return this.replace(/<br>|<BR>/g, '\n');}
String.prototype.trim = function(){return this.replace(/^\s*|\s*$/g,"");}
String.prototype.isValidMail = function(){return this.match(/^[a-z0-9.!\#$%&\'*+-/=?^_`{|}~]+@([0-9.]+|([^\s@]+\.+[a-z]{2,6}))$/); }
String.prototype.isValidURL = function(){return this.match(/^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.){1}([\w]+)(.[\w]+){1,2}$/);}

var testResponse = function(r){alert(r.responseText);}

var CF = new Object();

CF.submit = function(f, action){	
	var pars = 'action=' + f.name;
	for(var i=0;i<f.length;i++){
		if(f[i].type!='submit'){		
			if(f[i].tagName.toLowerCase() != 'select' && f[i].type != 'checkbox')
				pars += '&' + f[i].name + '=' + f[i].value;
			else if(f[i].tagName.toLowerCase() != 'select' && f[i].type == 'checkbox')
					if(f[i].checked == true) pars += '&' + f[i].name + '=' + f[i].value;
					
			if(f[i].tagName.toLowerCase() == 'select' && f[i].multiple){
				for(var j=0;j<f[i].options.length;j++){
					if(f[i].options[j].selected){
							pars += '&' + f[i].name + '=' + f[i].options[j].value;
					}
				}
			}
			
			if(f[i].tagName.toLowerCase() == 'select' )
				pars += '&' + f[i].name + '=' + f[i].value;
		}
	}	
	Ajax.send(f.action, f.method.toUpperCase(), pars, testResponse);	
}

CF.timeOut = null;
CF.doSearch = function(o, length, action, timeOut){	
	window.clearTimeout(CF.timeOut);
	if(o.value.length>=length) CF.timeOut = setTimeout(action, timeOut);
}

var Ajax = new Object();
Ajax.send = function(url, method, parameters, callBack, data){	
	var HttpRequest = "";
	try{
		HttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
	}catch(e){
		try{
			HttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
		}catch(e){
			try{
				HttpRequest = new XMLHttpRequest();
			}catch(e){
				alert("XMLHttpRequest not suported!");
				return false;
			}
		}
	} 
	HttpRequest.onreadystatechange = function() {
		if (HttpRequest.readyState == 4) {// only if req shows "loaded"
			if (HttpRequest.status < 400) {// only if "OK"
				if(callBack!=null){
					if(data==null)	callBack(HttpRequest);
						else callBack(HttpRequest, data);
				}
			} else {
				alert("There was a problem loading data :\n" + HttpRequest.status+ "/" + HttpRequest.statusText);
			}
		}

	}
	if (method=="POST") {
		HttpRequest.open("POST", url);
		HttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		HttpRequest.send(parameters);
	} else{		
		HttpRequest.open("GET", url + "?" + parameters, true);
		HttpRequest.send(null);

	}
} 
