function urlencode( str ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Philip Peterson
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: AJ
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // %          note: info on what encoding functions to use from: http://xkr.us/articles/javascript/encode-compare/
    // *     example 1: urlencode('Kevin van Zonneveld!');
    // *     returns 1: 'Kevin+van+Zonneveld%21'
    // *     example 2: urlencode('http://kevin.vanzonneveld.net/');
    // *     returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
    // *     example 3: urlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
    // *     returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'
                                     
    var histogram = {}, histogram_r = {}, code = 0, tmp_arr = [];
    var ret = str.toString();
    
    var replacer = function(search, replace, str) {
        var tmp_arr = [];
        tmp_arr = str.split(search);
        return tmp_arr.join(replace);
    };
    
    // The histogram is identical to the one in urldecode.
    histogram['!']   = '%21';
    histogram['%20'] = '+';
    
    // Begin with encodeURIComponent, which most resembles PHP's encoding functions
    ret = encodeURIComponent(ret);
    
    for (search in histogram) {
        replace = histogram[search];
        ret = replacer(search, replace, ret) // Custom replace. No regexing
    }
    
    // Uppercase for full PHP compatibility
    return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2) {
        return "%"+m2.toUpperCase();
    });
    
    return ret;
}
function urldecode( str ) {    
    var histogram = {}, histogram_r = {}, code = 0, str_tmp = [];
    var ret = str.toString();
    
    var replacer = function(search, replace, str) {
        var tmp_arr = [];
        tmp_arr = str.split(search);
        return tmp_arr.join(replace);
    };
    
    // The histogram is identical to the one in urlencode.
    histogram['!']   = '%21';
    histogram['%20'] = '+';
    
    for (replace in histogram) {
        search = histogram[replace]; // Switch order when decoding
        ret = replacer(search, replace, ret) // Custom replace. No regexing   
    }
    
    // End with decodeURIComponent, which most resembles PHP's encoding functions
    ret = decodeURIComponent(ret);
 
    return ret;
}

function lTrim(sString)
{
	if (sString=="") return "";
	while (sString.substring(0,1) == " ")
	{
		sString = sString.substring(1, sString.length);
	}
	return sString;
}

function rTrim(sString)
{
	if (sString=="") return "";
	while (sString.substring(sString.length-1, sString.length) == " ")
	{
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

function Trim(sString)
{			
	sString = lTrim(sString);
	sString = rTrim(sString);
	return sString;
}

function Remove_spaces(s)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not a whitespace, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (c != " ") returnString += c;
    }
    return returnString;
}

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone)
{
	// Declaring required variables
	var digits = "0123456789";
	// non-digit characters which are allowed in phone numbers
	var phoneNumberDelimiters = "()- ";
	// characters which are allowed in international phone numbers
	// (a leading + is OK)
	var validWorldPhoneChars = phoneNumberDelimiters + "+";
	// Minimum no of digits in an international phone no.
	var minDigitsInIPhoneNumber = 9;
	
	var bracket=3;
	strPhone=Remove_spaces(strPhone);
	if(strPhone.indexOf("+")>1) return false
	if(strPhone.indexOf("-")!=-1)bracket=bracket+1
	if(strPhone.indexOf("(")!=-1 && strPhone.indexOf("(")>bracket)return false
	var brchr=strPhone.indexOf("(")
	if(strPhone.indexOf("(")!=-1 && strPhone.charAt(brchr+2)!=")")return false
	if(strPhone.indexOf("(")==-1 && strPhone.indexOf(")")!=-1)return false
	s=stripCharsInBag(strPhone,validWorldPhoneChars);
	return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

function isValidFloatNumber(val) 
{
	if (!/^((\d+(\.\d*)?)|((\d*\.)?\d+))$/.test(val)) 
	{
		return false;
	}
	return true;
}
function onGoHome(url)
{
  var splashintro = YAHOO.util.Cookie.get("splashintro", function(stringValue){
    return parseInt(stringValue);  
  });  
  if(splashintro==1)YAHOO.util.Cookie.remove("splashintro",{path: "/"}); 
  document.location.href=url;
}
function showResponse(originalRequest)
{
	//put returned XML in the textarea
	//alert(originalRequest.responseText);
}
function check_all(me,colkey,t)
{
   var records = t.getRecordSet().getRecords();
   for (i=0; i < records.length; i++) {        
        if(me.checked==true)t.getRecordSet().updateKey(records[i], colkey, "true");
        else t.getRecordSet().updateKey(records[i], colkey, "");  
    }
   t.refreshView();
   return false;
}
function doAjx(task,cmd,tbl,id,fn,v,fncb)
{       
    var url = './?action=ajxservice&task='+task+'&cmd='+cmd+'&tbl='+tbl;
    if(id!=null) {
    	url +='&id='+id;
    }
    
    var pars = '';
    if(fn){
      for(i=0;i<fn.length;i++)
      {
          if(i==0)
              pars+=fn[i]+'='+v[i];
          else pars+='&'+fn[i]+'='+v[i];
      }		
    }
   // alert(url+'&'+pars);
    if (fncb){   
  		var myAjax = new Ajax.Request(
  			url, 
  			{
  				method: 'get', 
  				parameters: pars, 
  				onComplete: fncb
  			});
			}
    else 
    var myAjax = new Ajax.Request(
  			url, 
  			{
  				method: 'get', 
  				parameters: pars  				
  			});
};