function createRequestObject(){
    var request_o; //declare the variable to hold the object.
    var browser = navigator.appName; //find the browser name
    //alert(browser);
    if(browser == "Microsoft Internet Explorer"){
	/* Create the object using MSIE's method */
	request_o = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
	/* Create the object using other browser's method */
	request_o = new XMLHttpRequest();
    }
    return request_o; //return the object
}



xmlrequest = createRequestObject();
xmlcaller = null;

function xmlget(params,handler) {
 xmlrequest = createRequestObject();
 var url = "xmlrequest.php?"+params;
 if (handler==null) { handler = xmlget_handler; }
 xmlrequest.onreadystatechange = handler;
 xmlrequest.open("GET",url,true);
 xmlrequest.send(null);
}
function xmlget_handler() {
  if ( xmlrequest.readyState == 4 ) {
      str = xmlrequest.responseText;
      if (str != "") {
         if (str.substring(0,3)=="ERR") {
	    Sexy.alert(str)
	 } else {
    	    Sexy.info(str);
    	 }
      }
  }
}

function selectOptions(field) {
 if (field.innerHTML != "") return false;
 xmlcaller = field;
 xmlget("type=options&name="+field.name,selectOptions_process);
}
function selectOptions_process() {
  if ( xmlrequest.readyState == 4 && xmlrequest.status == 200 ) {
    if (xmlrequest.responseText != "ERROR") {
      xmlcaller.innerHTML = xmlrequest.responseText;
      //xmlcaller.outerHTML = '<select name="+xmlcaller.name+">'+xmlrequest.responseText+"</select>";
    }
  }
}

function post_sexy_form(returnvalue) {
 xmlpost(returnvalue,null);
}

function xmlpost(returnvalue,handler) {
    if(returnvalue) {
	msg = "neotype=sexyform";
        for (var i = 0; i<returnvalue.length; i++) {
    	    var f = returnvalue[i];
	    //for each (var f in returnvalue) { // doesnt work in ie
	    if (f!=undefined) {
		if (f[0]!=undefined) { msg = msg+"&"+f[0]+"="+encodeURI(f[1]); }
	    }
	}
	// post data to php script
	if (handler == null) { handler = xmlget_handler; }
	xmlrequest.onreadystatechange = handler;
	xmlrequest.open("POST","xmlform.php",true);
	xmlrequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlrequest.setRequestHeader("Content-length", msg.length);
	xmlrequest.setRequestHeader("Connection", "close");
	xmlrequest.send(msg);
    }
}



function getFormFieldsById (id,table,keycol) {
            var frm = document.forms[0];
            var dat = Array();
            for (var i = 0; i<frm.length; i++) {
              var fld = frm[i];
              var fldname = fld.name;
              var cmp = String(id+"_");
              var fldstart = fldname.substring(0,String(id).length+1);
              if (fldstart == cmp) {
	       var val = fld.value;
	       if (fld.type=="checkbox") {
	        if (fld.checked) val = "1"; else val = "0";
	       }
               dat[i] = Array(fld.name,val);
              }
            }
            dat[i+1] = Array('table',table);
            dat[i+2] = Array('form_action','record_save');
            dat[i+3] = Array('key',keycol);
            dat[i+4] = Array('id',id);
            return dat; // return all form fields for the given id here!
}

function record_save(id,table,keycol) {
	xmlcaller = document.getElementById('row_'+id);
	xmlpost(getFormFieldsById(id,table,keycol),record_expand_process);
}

function record_info(id,table,keycol) {
	xmlget("type=record_info&table="+table+"&key="+keycol+"&id="+id,null);
}

function record_delete(id,table,keycol) {
      Sexy.confirm('<h1>Are you sure to delete the selected Record?</h1><br />'+table+'.'+keycol+'='+id, {onComplete: 
	function(returnvalue) { 
	    if (returnvalue) {
		xmlcaller = document.getElementById('row_'+id);
		xmlget("type=record_delete&table="+table+"&key="+keycol+"&id="+id,null);
		xmlcaller.innerHTML = "";
	    }
	}
      });
}

function record_showedit(id,table,keycol) {
	xmlcaller = document.getElementById('row_'+id);
	xmlget("type=record_get&table="+table+"&key="+keycol+"&id="+id+"&edit=1",record_expand_process);
}
function record_hideedit(id,table,keycol) {
	xmlcaller = document.getElementById('row_'+id);
	xmlget("type=record_get&table="+table+"&key="+keycol+"&id="+id+"&edit=0",record_expand_process);
}
function record_copy(id,table,keycol) {
	xmlget("type=record_copy&table="+table+"&key="+keycol+"&id="+id,null);
}
function record_paste(id,table,keycol) {
	xmlcaller = document.getElementById('row_'+id);
	xmlget("type=record_paste&table="+table+"&key="+keycol+"&id="+id,record_expand_process);
}
function record_expand_process() {
  if ( xmlrequest.readyState == 4 && xmlrequest.status == 200 ) {
      xmlcaller.innerHTML = xmlrequest.responseText;
  }
}



function reload_tables() {
    // reload the table cache
    xmlget("type=reload_tables",null);
}

function table_export(table) {
    window.open("export.php?table="+table,"_self","");
}


var tabs = new Array();
function init_mootab(container,height,tc,pc) {
    tabs[container] = new mootabs(container, { 
                        width:                          '100%',
                        height:                         height,
			changeTransition: 'none', 
                        duration:                       500,
                        mouseOverClass:         'active',
                        activateOnLoad:         'first',
                        useAjax:                        false,
                        ajaxUrl:                        '',
                        ajaxOptions:            { method:'get' },
                        ajaxLoadingText:        'Loading...',
                        panelclass: pc,
                        titleclass: tc
     });
}

function removefilters(table) {
    xmlget("type=remove_filters&table="+table,reload_window);
}

function reload_window() {
  if ( xmlrequest.readyState == 4 && xmlrequest.status == 200 ) {
    window.open(window.location,'_self');
  }
}