// ajaxUtil.js

var debug = true;

function sendHttpRequest(method, url, params, callback) {
    var request;
    if (window.XMLHttpRequest)
        request = new XMLHttpRequest();
    else if (window.ActiveXObject)
        request = new ActiveXObject("Microsoft.XMLHTTP");
    else
        return null;
        
    if (method)
        method = method.toUpperCase();
    else
        method = "GET";
    var fullURL = url;
    if (params && method == "GET")
        fullURL += "?" + buildQueryString(params);
    var async = false;
    if (callback)
        async = true;
    request.open(method, fullURL, async);
    
    function calbackWrapper() {
        if (async && request.readyState == 4) {
            if (request.status == 200)
                callback(request);
            else
            {
            	 alert("AJAX ERROR");
                reportError(request, url, params);
            }
        }
    }
    if (async)
        request.onreadystatechange = calbackWrapper;

    var body = null;
    if (method == "POST") {
        request.setRequestHeader("Content-Type",
            "application/x-www-form-urlencoded");
        if (params)
            body = buildQueryString(params);
    }
    request.send(body);
    if (!async && (request.readyState != 4
            || request.status != 200)) {
            alert("AJAX ERROR");
        reportError(request, url, params);
        return null;
    }
    return request;
}

function buildQueryString(params) {
    var query = "";
    for (var i = 0; i < params.length; i++) {
        query += (i > 0 ? "&" : "")
            + escape(params[i].name) + "="
            + escape(params[i].value);
    }
    return query;
}

function reportError(request, url, params) {
    if (debug) {
        if (request.status != 200) {
            if (request.statusText)
                alert(request.statusText);
            else
                alert("HTTP Status: " + request.status);
        } else
            alert("Response Error");
        if (params)
            url += "?" + buildQueryString(params);
        document.location = url;
    }
}

function abortRequest(request) {
    function doNothing() {
    }
    request.onreadystatechange = doNothing;
    request.abort();
    delete feedRequest;
}

function escapeXML(content) {
    if (content == undefined)
        return "";
    if (!content.length || !content.charAt)
        content = new String(content);
    var result = "";
    var length = content.length;
    for (var i = 0; i < length; i++) {
        var ch = content.charAt(i);
        switch (ch) {
            case '&':
                result += "&amp;";
                break;
            case '<':
                result += "&lt;";
                break;
            case '>':
                result += "&gt;";
                break;
            case '"':
                result += "&quot;";
                break;
            case '\'':
                result += "&apos;";
                break;
            default:
                result += ch;
        }
    }
    return result;
}

function parse(xml) {
    var dom;
if (window.ActiveXObject)
  {
 	 try {
        dom = new ActiveXObject("Microsoft.XMLDOM");
        dom.async = false;
        dom.loadXML(xml);
         } catch (error1) {
            if (debug)
                alert("XML parsing is not supported.");
        }
    } else
     {
        try {
            var parser = new DOMParser();
            dom = parser.parseFromString(xml, "text/xml");
            delete parser;
        } catch (error2) {
            if (debug)
                alert("XML parsing is not supported.");
        }
    }
    return dom;
}

function serialize(dom) {
    var xml = dom.xml;
    if (xml == undefined) {
        try {
            var serializer = new XMLSerializer();
            xml = serializer.serializeToString(dom);
            delete serializer;
        } catch (error) {
            if (debug)
                alert("DOM serialization is not supported.");
        }
    }
    return xml;
}

function LoadJS(theScript)
{
if(navigator.appName == "Microsoft Internet Explorer")
{
		dinamicJScontainer.innerHTML=dinamicJScontainer.innerHTML+"<input type='hidden'><script DEFER> "+theScript+"</script>";
//		alert("Load JS. The script: "+dinamicJScontainer.innerHTML);
}
else
{
	var newElem = document.createElement("script");
	var elemJS = document.getElementById("dinamicJScontainer");
	newElem.setAttribute("language","JavaScript");
	newElem.innerHTML = theScript;
	elemJS.appendChild(newElem);
//	alert("Load JS. The script: "+theScript);		
}
}

function splitAjaxAnswer(xmlHttp)
{
///---- splite html from javascript
	var text=xmlHttp.responseText;
	var html="";
	var script="";
	while(text.length >0)
	{
		if(text.indexOf("<script")>=0)
		{
			html=html+text.substring(0,text.indexOf("<script"));
			text=text.substring(text.indexOf("<script"));
			script=script+text.substring(text.indexOf(">")+1,text.indexOf("</script"))
			text=text.substring(text.indexOf("</script"));
			text=text.substring(text.indexOf(">")+1);
		}
		else
		{
			html=html+text.substring(0,text.length);
			text="";
		}
	}
	LoadJS(script);
	return html;
}
