/*
nDeviX Javascript / XMLHTTP Master Function File
Written by Admin (dot_txt)

This file is availiable and licenced for unlimited use within all nDeviX projects 
and any projects/developments containing an active licence to this function set. 
Please contact the nDeviX Support Department with any questions or concerns at 
[312] 962-0424 Opt 1 or support@ndevix.com.

Btw, why are you even reading this??
*/

function Browser() {

  var ua, s, i;

  this.isIE    = false;
  this.isNS    = false;
  this.version = null;

  ua = navigator.userAgent;

  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }
}

var browser = new Browser();


function addslashes(str) {
str=str.replace(/&/g, 'ndx_replace_and');
str=str.replace(/\\/g,'\\\\');
str=str.replace(/\'/g,'\\\'');
str=str.replace(/\"/g,'\\\"');
str=str.replace(/\0/g,'\\0');
return str;
}

function stripslashes(str) {
str=str.replace(/\\'/g,'\'');
str=str.replace(/\\"/g,'"');
str=str.replace(/\\\\/g,'\\');
str=str.replace(/\\0/g,'\0');
return str;
}

function createRequestObject() {
	var ro = null;
    if (window.XMLHttpRequest) {
        ro = new XMLHttpRequest();
    } else if(window.ActiveXObject) {
        var msp = new Array('Msxml2.XMLHTTP','Microsoft.XMLHTTP');
        for (var i = 0; i < msp.length; i = i + 1) {
            try { ro = new ActiveXObject(msp[i]); } catch (e){};
        };
    };
    return ro;
}

var http = createRequestObject();
var httpko = createRequestObject();
var koso = 0;

window.onbeforeunload = killko;

function killko() {
	if(httpko) {
		httpko.abort();
		koso=1;
	}
}

function sndReq(action,element,todiv,ev) {
if(!todiv) {
	var todiv = 1;	
}
if(!ev) {
	var ev = 1;	
}

if (!http) {
	//var http = createRequestObject();
	//alert('req');
}

if(http.readyState !== 0) {
//	http.abort();
}
//alert(http.readyState);
if(http.readyState == '4' || http.readyState == '0') {
    http.open('get', action);
    http.onreadystatechange = function() {
    
	if(http.readyState == 4){
		var response = http.responseText;
			if(response=='ERROR') {
				window.location='?page=error';
			}
			response=response.replace(/ndx_replace_and/g, '&');
			if(todiv == 1) {
				
				response=stripslashes(response);
				
				if(element !== null) {
					document.getElementById(element).innerHTML = response;
					//alert(document.getElementById(element).getElementsByTagName("script").length);
					evalhtml(element);
				} else {
					return response;
				}    
			} else {
				if(ev == 1) {
					eval(response);
				} else {
					return response;
				}
			} 	
		}
	}
	http.send(null);
	} else {
	setTimeout('sndReq(\''+action+'\',\''+element+'\',\''+todiv+'\',\''+ev+'\')',500);
	}
}

function sndPst(action,url,element,todiv,ev) {
if(!todiv) {
	var todiv = 1;	
}
if(!ev) {
	var ev = 0;	
}	


if (!http) {
//	var http = createRequestObject();
}

if(http.readyState == 1) {
	http.abort();
}

if(http.readyState == 4 || http.readyState == 0) {
    http.open('post', url);
	http.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    http.onreadystatechange = function() {
	if(http.readyState == 4){
    	var response = http.responseText;
			if(response=='ERROR') {
				window.location='?page=error';
			}
			response=response.replace(/ndx_replace_and/g, '&');
			if(todiv == 1) {
				
				response=stripslashes(response);
				
				if(element !== null) {
					document.getElementById(element).innerHTML = response;
					//alert(document.getElementById(element).getElementsByTagName("script").length);
					evalhtml(element);
				} else {
					return response;
				}    
			} else {
				if(ev == 1) {
					eval(response);
				} else {
					return response;
				}
			} 	
			}
	}
	http.send(action);	
	} else {
	setTimeout('sndPst(\''+action+'\',\''+url+'\',\''+element+'\')',500);
	}
}

function keepopen(action,url,element,todiv,ev) {
if(koso==0) {
if(!todiv) {
	var todiv = 1;	
}
if(!ev) {
	var ev = 0;	
}	
/*
Ideas = Request priorities.. DNK on high priority requests
*/

if (!httpko) {
//	var http = createRequestObject();
}

if(httpko.readyState == 1) {
	httpko.abort();
}

if(httpko.readyState == 4 || httpko.readyState == 0) {
    httpko.open('post', url);
	httpko.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    httpko.onreadystatechange = function() {
    
	if(httpko.readyState == 4){
    	var response = httpko.responseText;
			if(response=='ERROR') {
				window.location='?page=error';
			}
			response=response.replace(/ndx_replace_and/g, '&');
			if(todiv == 1) {
				
				response=stripslashes(response);
				
				if(element !== null) {
					document.getElementById(element).innerHTML = response;
				} else {
					return response;
				}    
			} else {
				if(ev == 1) {
					eval(response);
				} else {
					return response;
				}
			} 
			
			//keepopen(null,url,element,todiv,ev);
			setTimeout('keepopen(\''+action+'\',\''+url+'\',\''+element+'\',\''+todiv+'\',\''+ev+'\')',1);
			
			}
	}
	httpko.send(action);	
	} else {
	setTimeout('keepopen(\''+action+'\',\''+url+'\',\''+element+'\',\''+todiv+'\',\''+ev+'\')',500);
	}
}
}

function evalhtml(element) {
	var script = document.getElementById(element).getElementsByTagName("script");
	for (var i = 0; i < script.length; i++) {
		eval(script[i].innerHTML);	
	}
	
}


var content = new Object();

function findPosY(obj)
{
var curtop = 0;
 if(obj.offsetParent)
     while(1)
       {
       curtop += obj.offsetTop;
       if(!obj.offsetParent)
         break;
       obj = obj.offsetParent;
     }
 else if(obj.y)
    curtop += obj.y;
return curtop;
}

function findPosX(obj)
  {
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
}


function saveformdata(act,div,data,todiv,ev) {
	var req='';
	data = data.split(',');
	for(var i=0; i<data.length; i++) {
		if(i==0) {
		var sep = '';
		} else {
		var sep = '&';
		}
		if(document.getElementById(data[i])) {
		switch(document.getElementById(data[i]).type)
       {
           		case "text":
                req += sep+data[i] +
                "=" + addslashes(document.getElementById(data[i]).value);
                break;

           		case "password":
                req += sep+data[i] +
                "=" + addslashes(document.getElementById(data[i]).value);
                break;
			
			    case "textarea":
                req += sep+data[i] +
                "=" + addslashes(document.getElementById(data[i]).value);
                break;
				 
				case "hidden":
                req += sep+data[i] +
                "=" + addslashes(document.getElementById(data[i]).value);
                break;
				 
				case "checkbox":
                if(document.getElementById(data[i]).checked) {
				req += sep+data[i] +
                "=" + addslashes(document.getElementById(data[i]).value);
				} else {
				req += sep+data[i] +
                "=";
				}
                break;
				 
				case "select-one":
                req += sep+data[i] +
                "=" + document.getElementById(data[i]).options[document.getElementById(data[i]).selectedIndex].value;
                break;
       }
	
	   //check if its a form
	    
	   if(document.getElementById(data[i]).tagName=='FORM') {
		   
			var fobj = document.getElementById(data[i]);
			if(sep=='' || sep == null) {
				var sep = '&';
			}
			for(var x=0; x<fobj.elements.length; x++) {
				switch(fobj.elements[x].type)
			   {
				 
					case "text":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
	
					case "password":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
				
					case "textarea":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
					 
					case "hidden":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
					 
					case "checkbox":
					if(fobj.elements[x].checked) {
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					} else {
					req += sep+fobj.elements[x].name +
					"=";
					}
					break;
					 
					case "select-one":
					req += sep+fobj.elements[x].name +
					"=" + fobj.elements[x].options[fobj.elements[x].selectedIndex].value;
					break;
					
					case "radio":
					if(fobj.elements[x].checked) {
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					}
					break;
				}
				
			}
			
		} 
	   //End Forms Section
	   
	   }
	}
	
	sndPst(''+req+'',''+act+'',div,todiv,ev);
}

function loaddd() {
if (http == undefined)
{
var http = createRequestObject();
}

if(http.readyState == 4 || http.readyState == 0) {
    http.open('get', 'vars.php');
    http.onreadystatechange = function() {
    
	if(http.readyState == 4){
		var response = http.responseText;
			if(response=='ERROR') {
				window.location='?page=error';
			}
			eval(response);
		}
	}
	http.send(null);
	}
}

function replace_all(str, sym, rep) {
while(str.indexOf(sym)>=0) {
str = str.replace(sym, rep);
}
return str;
}

function gbid(obj) {
	if(document.getElementById(obj)) {
		return document.getElementById(obj);
	} else {
		return false;	
	}
}

function checkall(formid,checkboxid) {
	var fobj = document.getElementById(formid);
	var tmp='';
	for(var i=0; i<fobj.elements.length; i++) {
		switch(fobj.elements[i].type)
       {
           case "checkbox":
			   if(document.getElementById(checkboxid).checked == false) {
				   fobj.elements[i].checked = false;
			   } else {
				   fobj.elements[i].checked = true;
			   }
		   break;
	   }
	}
}

function keycode(event, code){
if(event.keyCode==code){
return true;	
} else {
return false;	
}
}

function returnkey(event){
return event.keyCode;
}

function loading() {
	gbid('loading_header').innerHTML='<img src="images/loading.gif" style="width:12px;" />';	
}

function rmelement(obj) {
gbid(obj).parentNode.removeChild(gbid(obj));	
}

function show(obj) {
	if(gbid(obj)) {
		gbid(obj).style.display='block';
	}
}

function hide(obj) {
	if(gbid(obj)) {
		gbid(obj).style.display='none';
	}
}

function inputinvalid(obj) {
	gbid(obj).style.backgroundColor='#F11D22';
}

function inputvalid(obj) {
	gbid(obj).style.backgroundColor='#E5F0F6';
}

function stoppropogation(e) {
	if (!e) var e = window.event;
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
}

function preload(images) {
	//images = array
	var image = Array();
	for (var i = 0; i <= images.length-1; ++i) {
		image[i] = new Image();
		image[i].src = images[i];
	}

}
