// @cvs-id $Id: ajax.js,v 1.2 2006/06/20 13:46:04 nsadmin Exp $ $Name:  $
// global xml get begin 
var agt = navigator.userAgent.toLowerCase();
var is_mac = (agt.indexOf("mac") != -1);

var ad_host = ""
var cookie_name = "";
var counter = 1;

var post_ajax_command = "";
var pre_ajax_command = "";

var ajax_array = new Array();
var ajax_concurrent = true;
function AJAX (url, alt_url, div, message, forcerefresh, vars) {
	
	var req;
	if (window.XMLHttpRequest) {
                req = new XMLHttpRequest();
        } else if (window.ActiveXObject  && !is_mac) {
                req = new window.ActiveXObject("Msxml2.XMLHTTP");
        } else {
             if (alt_url != "") {
                location.replace(alt_url)
              }
        }
	this.req = req;
	this.div = div;
	this.url = url;
	this.message = message;
	this.forcerefresh = forcerefresh;
	this.vars = vars;
}
// global xml post begin 
var orig_height = "";
var vars2 = "";                                                                                                                                                            

function checkstate (ajax_id) {
	var req = ajax_array[ajax_id].req;
	
	var div = ajax_array[ajax_id].div;
	var url = ajax_array[ajax_id].url;
	var message = ajax_array[ajax_id].message;
	var forcerefresh = ajax_array[ajax_id].forcerefresh;
	var ajax_i;
	stats = getByID("output");

	if (stats) {
		stats.innerHTML = req.readyState;
	}
	if (req.readyState == 4) {
		var ua = navigator.userAgent.toLowerCase();
		isIE = ((ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1) && (ua.indexOf("webtv") == -1)); 
		isSafari = (ua.indexOf("safari") != -1);
		var use_xml = 0;
		if (isSafari) {
			x = document.createElement('div');
			x.innerHTML = req.responseText;

			var thedocument = x.getElementsByTagName('thedocument');
			if (thedocument[0]) {
				use_xml = 1;
			}
		}
		if ((isIE && req.responseXML.documentElement) || (isSafari && use_xml == 1)) {
			
				getByID('ajaxOutPutMessage').innerHTML="";
				var astring = req.responseText.replace(/[\n\r]+/g, " ");
				
				var bstring = astring.replace(/.*<message>/, "");
				var cstring = bstring.replace(/<\/message>.*/, "");
				if (astring != cstring) {
					getByID('ajaxOutPutMessage').innerHTML=cstring;
				}
			if (div != "") {
				getByID(div).innerHTML = "";
				var astring = req.responseText.replace(/[\n\r]+/g, " ");
				
				var bstring = astring.replace(/.*<thebody>/, "");
				var cstring = bstring.replace(/<\/thebody>.*/, "");
				if (astring == cstring) {
					getByID(div).innerHTML="";
				} else {	
					getByID(div).innerHTML=cstring;
				}
			}
			if (isIE) {
				var post_ajaxs = req.responseXML.getElementsByTagName('post_ajax');
				for (ajax_i= 0; ajax_i< post_ajaxs.length; ajax_i++) {
				//	alert(post_ajaxs[ajax_i]);
					var commands = post_ajaxs[ajax_i].firstChild.nodeValue;
					commands=commands.replace(/&amp;/g,"\&");
				//	alert(commands);
					commands=commands.replace(/&lt;/g,"\<");
					commands=commands.replace(/&gt;/g,"\>");
				//	alert(commands);
					eval(commands);
				}
			} else {
				x = document.createElement('div');
				x.innerHTML = req.responseText;
				var post_ajaxs = x.getElementsByTagName('post_ajax');
				for (ajax_i= 0; ajax_i< post_ajaxs.length; ajax_i++) {
					var commands = post_ajaxs[ajax_i].innerHTML;
					commands=commands.replace(/&amp;/g,"\&");
					commands=commands.replace(/&lt;/g,"\<");
					commands=commands.replace(/&gt;/g,"\>");
					eval(commands);
				} 

			}

		} else if (!isIE && req.responseXML) {

		//	alert(req.responseText);			
		var messages = req.responseXML.getElementsByTagName('message');
			getByID('ajaxOutPutMessage').innerHTML="";
			if (messages[0]) {
				x = document.createElement('xml');
				x.appendChild(messages[0]);
				getByID('ajaxOutPutMessage').appendChild(x);
				getByID('ajaxOutPutMessage').innerHTML += "";
			} else {
				getByID('ajaxOutPutMessage').innerHTML="";
			}
			if (div != "") {
				var body = req.responseXML.getElementsByTagName('thebody');
				getByID(div).style.height = orig_height;
				getByID(div).innerHTML = "";
				if (body[0]) {
					x = document.createElement('xml');
					// alert(x.canHaveHTML);
					x.appendChild(body[0]);
					getByID(div).appendChild(x);
					
					getByID(div).innerHTML += "";
				}
			}
			var post_ajaxs = req.responseXML.getElementsByTagName('post_ajax');
		
			var ajax_commands;
		//	alert('test');
			for (ajax_i= 0; ajax_i < post_ajaxs.length; ajax_i++) {
			//	alert('test');
				ajax_commands = post_ajaxs[ajax_i].firstChild.nodeValue;
				
				ajax_commands=ajax_commands.replace(/&amp;/g,"\&");
				ajax_commands=ajax_commands.replace(/&lt;/g,"\<");
				ajax_commands=ajax_commands.replace(/&gt;/g,"\>");
			//	alert(ajax_commands);
				eval(ajax_commands);
			//	alert('post eval')
			}
		} else {
		
			 if (div != "") {
		        	// getByID(div).style.height = orig_height;
	
		 		getByID(div).innerHTML = req.responseText;
				x = document.createElement('div');
				x.innerHTML = req.responseText;
				var post_ajaxs = x.getElementsByTagName('script');
				for (var ajax_i = 0; ajax_i < post_ajaxs.length; ajax_i++) {
					setTimeout(post_ajaxs[ajax_i].innerHTML, 0);
				}
				getByID('ajaxOutPutMessage').innerHTML = "";
        		}
                }                                                                                                                                             
	
		if (post_ajax_command) {
			eval(post_ajax_command);
		}
		setTimeout(from_response_javascript, 0);
	    return req.status;
	} else if (req.readyState == 0) {
		return "";
	} else {
		return "";
	}

}
if (!findPosY) {
function findPosY(obj)
{
    var curtop = 0;
    if (obj.offsetParent)
    {
	while (obj.offsetParent)
	{
	     curtop += obj.offsetTop
	     obj = obj.offsetParent;
	}
    }
    else if (obj.y)
	curtop += obj.y;
    return curtop;
}
}

function format_form_element_for_ajax(obj) {
	var str = "";
	if (obj.type=='checkbox') {
		if (obj.checked) {
			str += obj.name + "=" + escape(obj.value) + "&";
		} else {
			str += obj.name + "=&";
		}
	} else {
		str += obj.name + "=" + escape(obj.value) + "&";
	}
	return str;
}

function format_form_for_ajax (form) {
	var str = "";
	for (var i =0 ; i < form.length; i++) {
		if (form[i].type=='checkbox') {
			if (form[i].checked) {
				str += form[i].name + "=" + escape(form[i].value) + "&";
			} else {
				str += form[i].name + "=&";
			}
		} else {
			str += form[i].name + "=" + escape(form[i].value) + "&";
		}
	}
	str += "from_ajax=true";
	return str;
}

function xmlpostform(form, div, message, forcerefresh) {
	var str = format_form_for_ajax (form);
	xmlpost (form.action, '', div, message, forcerefresh, str);
//	alert(str);
	return false;
}

function xmlquick (url, div) {
	return xmlpost (url, "", div, "", 0, "")
}

function xmlget (url, alt_url, div, message, forcerefresh) {
	return xmlpost (url, alt_url, div, message, forcerefresh, "")
}

function xmlpost (url, alt_url, div, message, forcerefresh, vars) {
	
	var ajax_id = ajax_array.length;
	ajax_array[ajax_array.length]= new AJAX(url, alt_url, div, message, forcerefresh, vars);
	xmlprepost(ajax_id)
}

function xmlprepost (ajax_id) {
	var message = ajax_array[ajax_id].message;
	var div = ajax_array[ajax_id].div;
	var ajaxOutPutMessage = getByID('ajaxOutPutMessage');
	if (!ajaxOutPutMessage) {
		ajaxOutPutMessagex = document.createElement('div');
		ajaxOutPutMessagex.id='ajaxOutPutMessage'
		ajaxOutPutMessagex.style.position='absolute'; 
		ajaxOutPutMessagex.style.top=0; 
		ajaxOutPutMessagex.style.left=0; 
		ajaxOutPutMessagex.style.textAlign="left";
		//ajaxOutPutMessagex.style.padding="5px";
		ajaxOutPutMessagex.style.filter="alpha(opacity=75)";
		ajaxOutPutMessagex.style.opacity=.75;
		ajaxOutPutMessagex.style.background="#FFFFFF";
		ajaxOutPutMessagex.innerHTML = message
		document.body.insertBefore(ajaxOutPutMessagex, document.body.childNodes[0]);
	} else {
		ajaxOutPutMessage.innerHTML = message
	}	
	var change_heights = 0;
	if (change_heights) {
		if (div != "") {
			orig_height = getByID(div).style.height;
		}
	}
        if (div != "" && message != "") {
		if (change_heights) {	
			var top_height_div = div + "_top_height_div";
			var bottom_height_div = div + "_bottom_height_div";
			if (!getByID(top_height_div)) {
				getByID(div).innerHTML = "<div id='" + top_height_div + "'></div>" + getByID(div).innerHTML + "<div id='" + bottom_height_div + "'></div>";
        		        setTimeout('xmlprepost(' + ajax_id + ')', 0);
				return;
			} else {
				getByID(div).style.height = findPosY(getByID(bottom_height_div)) - findPosY(getByID(top_height_div));
			}	
		}
		
	    	getByID(div).innerHTML = message;
		setTimeout('xmlpost2(' + ajax_id + ')', 0);
        } else {
               	xmlpost2(ajax_id);
        }
}
function xmlpost2(ajax_id) {
	var req = ajax_array[ajax_id].req;
	var div = ajax_array[ajax_id].div;
	var url = ajax_array[ajax_id].url;

	var message = ajax_array[ajax_id].message;
	var forcerefresh = ajax_array[ajax_id].forcerefresh;
	var vars = ajax_array[ajax_id].vars;
	if (pre_ajax_command) {
		eval(pre_ajax_command);
	}
//	var pattern = new RegExp ("&", 'gi');
//	alert(vars.replace(pattern, "\n"));

	if (!ajax_concurrent) {
		if (ajax_id > 0) {
			if (ajax_array[ajax_id - 1].req.readyState < 4) {
				setTimeout('xmlpost2(' + ajax_id + ')', 0);
				return;
			}
		}
        } 
        if (forcerefresh) {
                document.cookie = cookie_name + "=1; domain=." + ad_host + "; path=/";
//                document.cookie = cookie_name + "; expires=Thu, 01-Jan-1970 00:00:01 GMT; domain=." + ad_host + "; path=/";
        }	
        
	if (vars == "") {
		req.open("GET", url, true);
	} else {
    		req.open("POST", url, true);
	}

    req.send(vars);
    checkstate(ajax_id);
    req.onreadystatechange=function () {checkstate(ajax_id)};
	
    return;
		
}

function from_response_javascript() {
	var obj = getByID('post_ajax');
	if (obj) {
		if (obj.innerHTML != "") {
			
			var commands = obj.innerHTML;
			commands=commands.replace(/&amp;/g,"\&");
			commands=commands.replace(/&lt;/g,"\<");
			commands=commands.replace(/&gt;/g,"\>");
			
			eval(commands);
			
			obj.innerHTML = "";
			obj.id = '';
			setTimeout(from_response_javascript, 0);
		}
	}
	
}

function readCookie(name)
{
  var ca = document.cookie.split(';');
  var nameEQ = name + "=";
  for(var i=0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1, c.length); //delete spaces
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
  }
  return null;
}
// global xml get end 