var gUser = new clsUser();
function clsUser()
{
    var me = this;
    me.data = {debug:0};
    this.load = function()
    {
        json = {};

        if(glParseQuery("token"))
        {
            me.get(glParseQuery("token"),true);
            return;
        }
        if(json.cnu)
        {
            me.loadDataFromJason(json);
            
        }
        me.data.ip = '38.107.191.97'; 
        if((!me.data.cnu) && (glReadCookie("cnu")))
        {
            me.get(glReadCookie("cnu"),true);
        }
    }
    
    this.get = function(cnu,remember,callback)
    {
        if(!cnu)
            cnu = me.data.cnu 
        var sPost = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wef="http://wefi.com/services/wefiServices"><soapenv:Header/><soapenv:Body><wef:getUserProfileRequest><wef:CNUID>' + cnu + '</wef:CNUID></wef:getUserProfileRequest></soapenv:Body></soapenv:Envelope>'
        $.glPostSoapRequest(null,sPost,function(data){
            me.onGetCallback(data,remember,cnu);
            if(callback)
                callback();
        },false,"GetUserProfile");
    }

    $.getText2 = function(item)
    {
        var s = "";
        $.each(item.childNodes,function(i){
            var split = this.nodeName.split(":");
            var sVal = (split.length>1)?split[1]:split[0];

            s = (s)?s+",":s;
            if((this.childNodes.length == 1) && (this.childNodes[0].childNodes.length == 0))
            {
                s+= "\"" + sVal + "\":";
                s+= "\"" + this.childNodes[0].nodeValue + "\"";
            }
            else
            {
                if(this.childNodes.length)
                {
                    s+= "\"" + sVal + "\":";
                    s+= $.toJSON($.getText2(this));
                }
            }
        })
        return $.parseJSON("{" + s + "}");
     }


    this.onGetCallback = function(data,remember,cnu)
    {
        if(!$.getNode(data,"userProfile"))
        {
            me.logout()
            return;
        }
        var o = $.getText2(data);
        var myO = {};
        myO.cnu = cnu;
        myO.isLoggedIn = myO.cnu?true:false 
        myO.email = o.userProfile.userName
        myO.cnrid = o.cnrId;
        myO.ss_id = (myO.cnrid == "104453")?"Lan":o.ss_id;
        myO.lat = me.setLat(o.lat);
        myO.lng = me.setLng(o.long);
        myO.located = me.data.located;

        myO.connectionStatus = o.connectionStatus;
        myO.nickName = o.userProfile.nickName;
        myO.phonePrefix = o.userProfile.phonePrefix?o.userProfile.phonePrefix:"";
        myO.phoneNum = o.userProfile.phoneNum?o.userProfile.phoneNum:"";
        if(myO.phoneNum.length)
        {
            if(myO.phoneNum.substr(0,1) == "0")
                myO.phoneNum = myO.phoneNum.substr(1,myO.phoneNum.length);
        }
        //myO.phoneNum = "0" + myO.phoneNum;
        myO.phone = myO.phonePrefix + (myO.phonePrefix?"-":"") + myO.phoneNum;
        myO.remember = remember;
        myO.connected = o.connectionStatus=="eUserConnected"?true:false;
        var x = $.getNode(data,"userProfile")[0];
        var sPost = $.toJSON(myO)
        $.ajax({type:'post',url:"/global/master/login/set.html.php",data:"jason="+sPost,async:false,success:function(res)
        {
            me.loadDataFromJason($.parseJSON(res));
        }})
    }

    function remChr(s)
    {
        return s.replace(/"/g,"''").replace(/,/g,".").replace(/:/g,"|"); 
    }

    this.loadDataFromJason = function(sjson)
    {
        var d = me.data.debug;
        me.data = sjson
        me.data.debug = d;

        if(me.data.cnu)
            me.createCookie("cnu",me.data.cnu,sjson.remember?100:null);

        if((me.data.located)&&(me.onLocated))
            lunchEvents(arronLocated);
        lunchEvents(arrOnLoggin);
    }

    this.createCookie = function(c_name,value,expiredays)
    {
        if(glReadCookie(c_name) + "" == value + "") return;
        var exdate=new Date();
        exdate.setDate(exdate.getDate()+expiredays);
        var s = c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString())+ ";path=/"
        document.cookie=s;
    }

    this.logout = function()
    {
        me.createCookie("cnu","",null);
        me.loadDataFromJason({});
        var sPost = 'jason={}';
        $.ajax({type:'post',url:"/global/master/login/set.html.php",data:sPost,async:false});
        lunchEvents(arrOnLogout);
    }

    this.setLat = function(lat)
    {
        var v = ((lat)&&(lat!=90)&&((lat > -90) && (lat < 90)))?1:0;
        v = (lat == "0")?0:v;
        v = (lat == "0.0")?0:v;
        me.data.located = v;
        me.data.lat = v?lat:'40.75390543733001';
        return v?lat:'40.75390543733001'; 
    }

    this.setLng = function(lng)
    {
        var v = ((lng)&&(lng!=180) &&  ((lng > -180) && (lng < 180)))?1:0;
        v = (lng == "0")?0:v;
        v = (lng == "0.0")?0:v;
        me.data.lng = v?lng:'-73.98367166519165';
        return v?lng:'-73.98367166519165';
    }

    var arrOnLoggin = new Array();
    this.onLoggin = function(f)
    {
        addToArray(arrOnLoggin,f)
    }

    var arrOnLogout = new Array();
    this.onLogout = function(f)
    {
        addToArray(arrOnLogout,f)
    }

    var arronLocated = new Array();
    this.onLocated = function(f)
    {
        addToArray(arronLocated,f)
    }

    function lunchEvents(arr)
    {
        $(arr).each(function(i){
            var ff = arr[i]
            ff();
        })
    }

    function addToArray(arr,ff)
    {
        var flag = false;
        $(arr).each(function(i){
            if(ff==arr[i])
            {
                flag=true;
            }
        })
        if(!flag)
            arr[arr.length] = ff;
    }

    me.load();
}

