/*
 * AJAX namespace to retrieve information
 *
 * 
 */

var ajax = {
  xmlHttp: null,
  userFunc: null,
  
  init: function() {
	if(window.XMLHttpRequest) {
		ajax.xmlHttp = new XMLHttpRequest();
	} else {
		if(window.ActiveXObject) {
			ajax.xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
		}
	}

	if (ajax.xmlHttp == null)
        ajax.xmlHttp.abort();

    ajax.xmlHttp.onreadystatechange = ajax.processRequest;
  },
  
  setUserFunc: function(f) {
    ajax.userFunc = f;
  },
  
  request: function(url) {
	if (ajax.xmlHttp == null)
		ajax.xmlHttp.abort();
	ajax.xmlHttp.onreadystatechange = ajax.processRequest;
	ajax.xmlHttp.open("GET", url+"&random="+(Math.random()*99999),true); // random for IE to stop caching...stupid ie
	ajax.xmlHttp.send(null);
  },
  
  processRequest: function() {

	if (ajax.xmlHttp.readyState == 4 && ajax.xmlHttp.status == 200) {
		returnFunc = ajax.userFunc+"(ajax.xmlHttp.responseText, 1)";
		eval(returnFunc);
	}
	if (ajax.xmlHttp.readyState == 4 && ajax.xmlHttp.status != 200) {
		returnFunc = ajax.userFunc+"('', 0)";
		eval(returnFunc);
	}		
  }  

}

function callURL (url) {
	window.location.href=url ;
}

function isEMail(s)
{
 var a = false;
 var res = false;
 if(typeof(RegExp) == 'function')
 {
  var b = new RegExp('abc');
  if(b.test('abc') == true){a = true;}
  }

 if(a == true)
 {
  reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+
                   '(\\@)([a-zA-Z0-9\\-\\.]+)'+
                   '(\\.)([a-zA-Z]{2,4})$');
  res = (reg.test(s));
 }
 else
 {
  res = (s.search('@') >= 1 &&
         s.lastIndexOf('.') > s.search('@') &&
         s.lastIndexOf('.') >= s.length-5)
 }
 return(res);
}

function isPWDchar(s) {
	var code = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789#-_%?."
	var ret = true ;
		for (i=0; i < s.length; i++) {
			var se = s.substring(i,i+1) ;
			var ergebnis = code.search(se) ;
			if (ergebnis == -1)
				return false ;
		}
	return ret ;
}

function isAliasChar(s) {
	var code = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
	var ret = true ;
		for (i=0; i < s.length; i++) {
			var se = s.substring(i,i+1) ;
			var ergebnis = code.search(se) ;
			if (ergebnis == -1)
				return false ;
		}
	return ret ;
}


var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

function encode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }

      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + 
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);
   
   return output;
}

function decode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);

   return output;
}

function checkNumbers(e) {
	var keycode;
	var ret = 0 ;
	var allow = "48,49,50,51,52,53,54,55,56,57,8,0" ;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	
	allows = allow.split(",") ;
	for (i=0; i< allows.length;i++){
		if (keycode == allows[i]){
			ret = 1 ;
			break ;
		}
	}

	if (!ret){
		if (e && e.preventDefault)
		   e.preventDefault();
		else if (window.event)
		   window.event.returnValue = false;
	} else {
		if (window.event)
			   window.event.returnValue = true;   	
	}
}	


function PageQuery(q) {
	if(q.length > 1) this.q = q.substring(1, q.length);
	else this.q = null;
	this.keyValuePairs = new Array();
	if(q) {
	for(var i=0; i < this.q.split("&").length; i++) {
		this.keyValuePairs[i] = this.q.split("&")[i];
		}
	}
	this.getKeyValuePairs = function() { return this.keyValuePairs; }
	this.getValue = function(s) {
		for(var j=0; j < this.keyValuePairs.length; j++) {
			if(this.keyValuePairs[j].split("=")[0] == s)
				return this.keyValuePairs[j].split("=")[1];
		}
		return false;
	}
	this.getParameters = function() {
		var a = new Array(this.getLength());
		for(var j=0; j < this.keyValuePairs.length; j++) {
			a[j] = this.keyValuePairs[j].split("=")[0];
		}
		return a;
	}
	this.getLength = function() { return this.keyValuePairs.length; }
}

function queryString(key){
	var page = new PageQuery(window.location.search);
	return unescape(page.getValue(key));
}

function queryParams(){
	var page = new PageQuery(window.location.search);
	return unescape(page.getParameters());
}

