// Ajax support
var AJAX_STATUS_SUCCESS = 0;
var AJAX_STATUS_REDIRECT = 1;
var AJAX_STATUS_FAILURE = -1;
var AJAX_STATUS_HALT = -2;
var AJAX_STATUS_NO_RESULTS = -3;
var AJAX_STATUS_FAILURE_NO_MSG = -4;

var gTimerAjax;



// Process the Ajax response
function e_processAjaxResponse() {
	try {
		var status = false;
		///alert(http.responseText);
		eval("var response = ("+http.responseText+")");	
		
		switch (response.status)
		{
			case 	AJAX_STATUS_SUCCESS:	
					status = true;
					break;
					
			case AJAX_STATUS_REDIRECT:
					window.location = SITE_URL+"/"+response.redirect;
					break;
					
			case AJAX_STATUS_NO_RESULTS:
					//alert("No results returned.");
					break;
					
			case AJAX_STATUS_FAILURE:
			case AJAX_STATUS_HALT:
					alert(response.errormsg);
					status = false;
					break;					
			
			default: 
				alert("Error: Internal error in Ajax response.");
				break;
		}
		
	} catch (err) {
		updateStatus("Server Error:  " +err,"f50c07");
		eval("var response = ({status:"+AJAX_STATUS_FAILURE_NO_MSG+"})");
	}
	endAjaxCmd();

	return response;	
}
		

// Create an Ajax request object
function CreateAjaxRequest()
{
	var request = null;

	try {
		request = new XMLHttpRequest();
	} catch (trymicrosoft) {
	 	try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
	  	} catch (othermicrosoft) {
			try {
		  		request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (failed) {
		  		request = null;
			}
	  	}
	}
	
	if (request == null)
	  alert("Error creating Ajax request object!");
	else {
		return request;
	}	 
}


// Url.encode(x):  Encode a string for passing to php from javascript
// Url.decode(x):  Decode a string

var Url = {

    // public method for url encoding
    encode : function (string) {
        return escape(this._utf8_encode(string));
    },

    // public method for url decoding
    decode : function (string) {
        return this._utf8_decode(unescape(string));
    },

    // private method for UTF-8 encoding
    _utf8_encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

}

