/**
 *ITDAJAX AJAX FRAMEWORK
 *@author:ducduy.nguyen@gmail.com
*/

var ITDAJAX = {
    DOM:        Object,
    AJAX:       Object,
    Collection: Object
};

ITDAJAX.DOM.isInternetExplorer = (navigator.userAgent.indexOf("MSIE") >= 0);

ITDAJAX.DOM.isMozilla = (navigator.userAgent.indexOf("Gecko") >= 0);

ITDAJAX.DOM.isOpera = (navigator.userAgent.indexOf("Opera") >= 0);


ITDAJAX.Collection.Map = function(){
    var len = 0;
    var keys = new Array();
    var values = new Array();

    this.get = function(key){
        var val = null;
        for(var i=0; i<len; i++){
            if(keys[i] == key){
                val = values[i];
                break;
            }//end if
        }//end for

        return val;
    }//end get()

    this.put = function(key, value){
        keys[len] = key;
        values[len++] = value;
    }//end put()

    this.length = function(){
        return len;
    }//end length()

    this.contains = function(key){
	var con = false;
        for(var i=0; i<len; i++){
            if(keys[i] == key){
                con = true;
                break;
            }//end if
        }//end for

	return con;
    }//end contains()

    this.remove = function(key){
        var keyArr = new Array();
        var valArr = new Array();
        var l = 0;
        for(var i=0; i<len; i++){
            if(keys[i] != key){
                keyArr[l] = keys[i];
                valArr[l++] = values[i];
            }//end if
        }//end for

        keys = keyArr;
        values = valArr;
	len = l;
    }//end remove()        
    
}//end ITDAJAX.Collection.Map

ITDAJAX.AJAX = function(){

    var nameSpace = "http://tempuri.org/";
    var map = new ITDAJAX.Collection.Map();
    
    //private method for returning an ajax enabled
    //object specific to a browser
    var ajaxObject = function(){
        try{return new XMLHttpRequest();}catch(ex){};
        try{return new ActiveXObject("Microsoft.XMLHTTP");}catch(ex){};
        try{return new SOAPCall();}catch(ex){};
    }//end ajaxObject()
    
    this.onError = function(error){
        alert(error);
    }//end onError()

    this.callPage = function(url,param, callbackFunction){        
        try{
            var ao = ajaxObject();
            ao.onreadystatechange = function(){
                if(ao.readyState==4 || ao.readyState=="complete"){
                    callbackFunction(ao.responseText);
                }
            };
			ao.open("POST", url, true);
            ao.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			ao.send(param);
            //ao.send(null);
        }
        catch(ex){
            this.onError(ex);
        }//end tc
    }//end callPage()
	
    this.setNameSpace = function(ns){
        nameSpace = ns;
    }//end setNameSpace()
    this.getNameSpace = function(){
        return ns;
    }//end getNameSpace()
	
}//end ITDAJAX.AJAX()

var JSON = {
    //
    //Parse a JSON text to create a javascript
    //object
    //
    parse: function (text) {
        try {
            return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
                    text.replace(/"(\\.|[^"\\])*"/g, ''))) &&
                eval('(' + text + ')');
        } catch (e) {
            return false;
        }
    }
};