var Bingo={ver:"0.2.5",sustainer:"yoyo",website:"www.ajaxbingo.com"};
function AJAXCALL(url,handleResponse,param){
	var isXML=false;//false:html or true:xml
    var isCache=false;//false:no-cache or true:cache
    var method="GET";//GET or POST
	var attach;
	if(param && typeof param=="string"){
	   re = / /g; 
	   param=param.replace(re, "");
	   var tmp=param.split(",");
	   for(var i=0;i<tmp.length;i++){
		      var pa=tmp[i].substr(0,3);
			  var ct=tmp[i].split("=")[1];
		      switch (pa){
				  case "isX":if(ct=="true"){isXML= true;}else{isXML=false;}break;
				  case "isC":if(ct=="true"){isCache= true;}else{isCache= false;}break;
				  case "met":method=ct;break;
				  case "att":attach=ct;break;
			  }
	   }	
	}else if(param && typeof param=="object"){	
		if(param.isXml)isXML=param.isXml;
		if(param.isxml)isXML=param.isxml;
		if(param.isCache)isCache=param.isCache;
		if(param.iscache)isCache=param.iscache;
		if(param.method)method=param.method;
		if(param.attach)attach=param.attach;
	}
	if(!isCache){
		var t=new Date().getTime();
		if(url.indexOf("?")>0){url+="&t="+t;}else{url+="?t="+t;}
	}	
	var postdata=null;
	if(method=="POST"){
		purl=url.split("?");
		url=purl[0];
		postdata=purl[1];
	}
	RequestHTTP(url,handleResponse,method,isXML,postdata,attach);
}

function AJAXFORM(formID,handleResponse,param){
var isXML=false;
var attach="";
if(param && typeof param=="string"){
	   re = / /g; 
	   param=param.replace(re, "");
	   var tmp=param.split(",");
	   for(var i=0;i<tmp.length;i++){
		      var pa=tmp[i].substr(0,3);
			  var ct=tmp[i].split("=")[1];
		      switch (pa){
				  case "isX":if(ct=="true"){isXML= true;}else{isXML= false;}break;
				  case "att":attach=ct;break;
			  }
}}else if(param && typeof param=="object"){
	if(param.isXml)isXML=param.isXml;
	if(param.isxml)isXML=param.isxml;
	if(param.attach)attach=param.attach;
}
var url=$(formID).action;
var data=getForm(formID);
RequestHTTP(url,handleResponse,"POST",isXML,data,attach);
}

function getForm(theFormName){
   var form = document.forms[theFormName];
   if(typeof form.name == "undefined" || form.name=="")
	   form = $(theFormName);
   //form can not include "fieldset"
   var formData = "";
   var element;
  
   for (var i = 0; i < form.elements.length; i++) {
      element = form.elements[i];
      var type=element.type.toLowerCase();      
      if (type == "hidden" ||type == "text" || type == "password" || type == "textarea"){      	
       formData += element.name + "=" + $E(element.value) + "&";
	  }else if (element.type.indexOf("select") != -1) {
         for (var j = 0; j < element.options.length; j++) {
            if (element.options[j].selected == true) formData +=  element.name + "=" + $E(element.options[element.selectedIndex].value) + "&";
         }
      }
      else if (element.type == "checkbox") {
		 if (element.checked) formData += element.name + "=" + $E(element.value) + "&";
	  }
      else if (element.type == "radio") {
		  if (element.checked == true) formData += element.name + "=" + $E(element.value) + "&";
	  }
   }
   return formData.substring(0, formData.length - 1);
}

function RequestHTTP(burl,rdRandleResponse,bmethod,bXML,Formdata,attach){
var http_request = false;
function doHttpRequest()
{	
       if (window.XMLHttpRequest) {
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
            }
        } else if (window.ActiveXObject) {
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }
        if (!http_request) {
            alert('Cannot create an XMLHTTP instance');
            return false;
        }

    http_request.onreadystatechange=handleStateChange;	
    http_request.open(bmethod,burl,true);
	if(Formdata){
	http_request.setRequestHeader("Content-Length",Formdata.length);   
    http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	http_request.send(Formdata);
	}else{
		if(bXML){
	        http_request.setRequestHeader("Content-Type","text/xml");
	        //charset "text/xml;charset=utf-8";
	    }else{
	        http_request.setRequestHeader("Content-Type","text/html");
	    }
    http_request.send(null);
	}
	
}

function handleStateChange()
{
    if(http_request.readyState==4 && http_request.status==200){
		var response_content;
		if(bXML){
		response_content=http_request.responseXML;
		}else{
        response_content=http_request.responseText;	
		}		
		if(typeof rdRandleResponse == "function"){
             rdRandleResponse(response_content, attach);
		}else{
		     eval(rdRandleResponse+"(response_content,attach)");
	    }
    }
}
doHttpRequest();
}

//tools
function getTagValue(doc, tag){
     var elems = doc.getElementsByTagName(tag)[0].firstChild.nodeValue;
     return elems; 
}

function $(obj){
  return document.getElementById(obj);	
}

function $F(obj){
  return document.getElementById(obj).value;
}

function $U(str){
  return encodeURIComponent(escape(str));	
}

function $E(str){
  return encodeURIComponent(str);	
}

function $css(id,rule){
  for(var i=0;i<document.styleSheets.length;i++){
		var tmp=browser.IE?document.styleSheets[i].rules:document.styleSheets[i].cssRules;
		for(var k=0;k<tmp.length;k++){
			if(tmp[k].selectorText==id){
				if(rule){
					return tmp[k].style[rule];
				}else{
					return tmp[k].style;
				}			
			}
		}
  }
}

var browser={};
browser.IE=browser.FF=browser.MF=browser.firefox=browser.OT=browser.other=false;
if (window.navigator.userAgent.indexOf("MSIE")>=1){
   browser.IE=true;
}else if (window.navigator.userAgent.indexOf("Firefox")>=1){
   browser.FF=true;
   browser.firefox=true;
   browser.MF=true;
}else{
   browser.OT=true;
   browser.other=true;
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\s)"+searchClass+"(\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}