(function () {
    var a='_dht', T = {};
    
    T.tracker = function() {
        var t = this;
        var customVar={} , useVar=0, ep=0,_qs;
        var optype;
        var _fields=new Array("cid", "pid","itemcode", "rfxid", "searchkey","searchtype", "p","content");
        
        t.setVar = function (k,v){
            customVar[k]=v;
            useVar=1;
            if('ep' == k ){ep=1;}
        }
        
        t.pageview = function (ot){

            _qs="http://" + window.location.host + "/track/clicklognew.jsp?t=1";

            //only when never call setVar function, then use input hidden to get value, for compatible with v2
            if(0==useVar){
                for(i=0;i<_fields.length; i++){
                    n="_" + _fields[i];
                    v=ge(n);

                    if (v==null || typeof(v)=='undefined'){
                        _qs+=p(_fields[i],''); 
                    }else{
                        _qs+=p(_fields[i],trim(v.value)); 
                    }
               }
            }

            for (var n in customVar) {
                if (customVar.hasOwnProperty(n)) {
                    _qs+=p(n,trim(customVar[n]));
                }
            }

            if(ot){
                _setOt(ot);
            }
            dhOt();
            dhVisitor();
            
            dhTrack();
            dhAdfrom();
            dhUserid();
            dhSid();
            dhLot();
            dhImg(_qs);

        }
        
        
        function randomString() {
            var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
            var string_length = 20;
            var randomstring = '';
            for (var i=0; i<string_length; i++) {
                var rnum = Math.floor(Math.random() * chars.length);
                randomstring += chars.substring(rnum,rnum+1);
            }
            return randomstring;
        }

        function dhGetCookie(name){
            var pos=document.cookie.indexOf(name + "=");
            if (pos!=-1){
                var start=pos+name.length+1;
                var end=document.cookie.indexOf(";", start);
                if (end==-1){
                    end=document.cookie.length;
                }
                return unescape(document.cookie.substring(start,end));
            }
            return null;
        }

        function dhSetCookie (n,v,expiredays){
            var exdate=new Date();
            exdate.setDate(exdate.getDate()+expiredays);
            document.cookie=n+ "=" +escape(v)+((expiredays==null) ? "" : "; path=/; expires="+exdate.toGMTString());
        }

        function p (n,v){
            return "&"+n +"=" + escape(v);
        }

        function trim (v){
            if(v==null || typeof(v)=='undefined') {
                return '';
            }else{
                return v;
            }
        }

        function ge (id){
            return document.getElementById(id);
        }

        
        function dhUserid(){
            var f=dhGetCookie('b2b_buyerid');
            _qs +=p('userid',trim(f));
        }

        function dhSid(){
            var f=dhGetCookie('B2BCookie');
            _qs +=p('sid',trim(f));
        }

        function dhLot(){
            var f=dhGetCookie('dht_lot');
            _qs +=p('lot',trim(f));
            //dhSetCookie('dht_lot', optype, 2);
        }

        function dhAdfrom(){
            //get from cookie
            var f=dhGetCookie('ref_f');
            var d=dhGetCookie('ref_d');
            if(f==null){
                //get from request
                var qs=new Querystring();
                f=qs.get('ref_f');
                d=qs.get('ref_d');
                if(f==null){
                    f=qs.get('f');
                    d=qs.get('d');
                }
                if(f != null){
                    //set to cookie
                    dhSetCookie('ref_f',f);
                    dhSetCookie('ref_d',d);
                }
            }
            if(f!=null){
                _qs += p('f',trim(f));
                _qs +=p('d',trim(d));
            }
        }

        function dhVisitor(){
            var v=dhGetCookie('vid');
            if(v==null){
                v = randomString();
                //20years expire
                dhSetCookie('vid', v , 7300);
            }
            _qs+= p('visitorid',v);
        }

        
        function dhTrack(){
            _qs+=p('tid',trim(dhGetCookie('tid')));
        }

        function dhOt(){
            id='_optype';
            if(optype){
                _qs+= p('optype',optype);
            }else{
                v=ge(id);
                if (v==null || typeof(v)=='undefined'){
                    _qs+=p('optype','');
                    optype='';
                }else{
                    _qs+=p('optype',trim(v.value));
                    optype=trim(v.value);
                }
            }
        }
        
        function dhImg(src){
            var d = new Image(1, 1);
            d.src = src;
            d.onload = function () {
                d.onload = null;
            }
        }
        
        function _setOt(ot){
            optype = ot;
        }
        
        function Querystring(qs) { // optionally pass a querystring to parse
            this.params = {};

            if (qs == null) qs = location.search.substring(1, location.search.length);
            if (qs.length == 0) return;
            qs = qs.replace(/\+/g, ' ');
            var args = qs.split('&');

            for (var i = 0; i < args.length; i++) {
                var pair = args[i].split('=');
                var name = decodeURIComponent(pair[0]);

                var value = (pair.length==2)
                ? decodeURIComponent(pair[1])
                : name;

                this.params[name] = value;
            }
        }

        Querystring.prototype.get = function(key, default_) {
            var value = this.params[key];
            return (value != null) ? value : default_;
        }

        Querystring.prototype.contains = function(key) {
            var value = this.params[key];
            return (value != null);
        }
        
    };

    T.getTracker=function(){
          return new T.tracker();
    };

    window[a] = T;
})()

