// AJAX / WEB2.0

/* AJAXConnection class  */
function AJAXConnection(name) {
    this.className = 'AJAXConnection';
    //alert(this.className + ' ' + name);
    
    /** Default construtor
	 *
	 * name - div name
	 */
    {    
        this.name = name;
    }

    this.xmlhttpPost = function (strURL, strFunc, strParams, functionObj) {
        var xmlHttpReq = false;
        var self = this;
		var parameters = 'httprequest=' + strFunc + '&' + strParams

        // Mozilla/Safari
        if (window.XMLHttpRequest) {
            self.xmlHttpReq = new XMLHttpRequest();
            if (self.xmlHttpReq.overrideMimeType) {
                self.xmlHttpReq.overrideMimeType('text/xml'); //orig
 				//self.xmlHttpReq.overrideMimeType('text/html');
               // See note below about this line
            }
        // IE
        } else if (window.ActiveXObject) { // IE
            try {
                self.xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
            }
        }
        if (!self.xmlHttpReq) {
            alert('ERROR AJAX:( Cannot create an XMLHTTP instance');
            return false;
        }

        self.xmlHttpReq.onreadystatechange = function() { 
            _callBackFunction(self.xmlHttpReq, functionObj); 
        };
        self.xmlHttpReq.open('POST', strURL, true);
        self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		//alert(strURL + ', ' +parameters.length + ':' + parameters);
		self.xmlHttpReq.setRequestHeader('Content-length', parameters.length);
		self.xmlHttpReq.setRequestHeader('Connection', 'close');
        self.xmlHttpReq.send(parameters);
    }
    
    _callBackFunction = function (http_request, functionObj) {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                functionObj.callBackFunction(http_request.responseText);
            } else {
                alert('ERROR: AJAX request status=' + http_request.status + ", " + http_request.responseText.length);
            }
        }
	}
}


/* handle htmlvalue response class */
function HandleHTMLValueResponse() {
    this.className = 'HandleHTMLValueResponse';
    
    /** Call Back Function - called by AJAXAdaptor
	 *
	 * str - string from XMLHttpRequest
	 */    
    this.callBackFunction = function(response) {
		//alert(response.length + ':' + response);
		if (response.indexOf('|') != -1) {
			var update = new Array();
			var i
			update = response.split('_||_');
			for (i=0; i<update.length/3; i++) {
				if (update[i*3+1] != 'value') {
					document.getElementById(update[i*3]).innerHTML = sethtml(update[i*3+2]);
				} else {
					document.getElementById(update[i*3]).value = update[i*3+2];
				}
			}
		}
    }
}

function sethtml(content)
	{
	var search = content;
	var script;
	
	//alert(content);
	while( script = search.match(/(<script[^>]+javascript[^>]+>\s*(<!--)?)/i))	{
		search = search.substr(search.indexOf(RegExp.$1) + RegExp.$1.length);

		if (!(endscript = search.match(/((-->)?\s*<\/script>)/))) break;

		block = search.substr(0, search.indexOf(RegExp.$1));
		search = search.substring(block.length + RegExp.$1.length);

		var oScript = document.createElement('script');
		oScript.text = block;
		document.getElementsByTagName("head").item(0).appendChild(oScript);
	}

	//document.getElementById(div).innerHTML=content;
	//alert(content);
	return zapshit(content);
}


function zapshit(str){
	var aStr = str.split('');
	var i = aStr.length;

	while (--i >= 0) {
		var iC = aStr[i].charCodeAt();
		if (iC == 65533) {
			aStr[i] = "'";
		}
	}
	return aStr.join('');
}

