//Update by urmapapi@olemap.com 2009/6/29�U�� 04:46
var ULOG = function(){
	var defaultLogImage = "http://www.urmap.com/img/public.png?";
	function UUID(){this.id=this.createUUID()}UUID.prototype.valueOf=function(){return this.id};UUID.prototype.toString=function(){return this.id};UUID.prototype.createUUID=function(){var d=new Date(1582,10,15,0,0,0,0);var g=new Date();var j=g.getTime()-d.getTime();var b="-";var k=UUID.getIntegerBits(j,0,31);var i=UUID.getIntegerBits(j,32,47);var f=UUID.getIntegerBits(j,48,59)+"1";var c=UUID.getIntegerBits(UUID.rand(4095),0,7);var e=UUID.getIntegerBits(UUID.rand(4095),0,7);var a=UUID.getIntegerBits(UUID.rand(8191),0,7)+UUID.getIntegerBits(UUID.rand(8191),8,15)+UUID.getIntegerBits(UUID.rand(8191),0,7)+UUID.getIntegerBits(UUID.rand(8191),8,15)+UUID.getIntegerBits(UUID.rand(8191),0,15);return k+b+i+b+f+b+c+e+b+a};UUID.getIntegerBits=function(f,g,b){var a=UUID.returnBase(f,16);var d=new Array();var e="";var c=0;for(c=0;c<a.length;c++){d.push(a.substring(c,c+1))}for(c=Math.floor(g/4);c<=Math.floor(b/4);c++){if(!d[c]||d[c]==""){e+="0"}else{e+=d[c]}}return e};UUID.returnBase=function(a,b){return(a).toString(b).toUpperCase()};UUID.rand=function(a){return Math.floor(Math.random()*(a+1))};

    var newSession = new UUID().toString() + '';
    //log(newSession);
    var currentOptions = {u:newSession};
    //log(currentOptions);
    function shotLog(opts){
        var ar = [];
        //for(var i in opts){
        //    currentOptions[i] = opts[i];
        //}
        
        opts.u = currentOptions.u;
        opts._ts = (+new Date());
        for(var i in opts){
            ar.push(i + '=' + encodeURIComponent(opts[i]));
        }
        //log(ar);
        var imgsrc = defaultLogImage + ar.join('&');
        //log(imgsrc);
        //if(typeof console !== 'undefined'){
        //	console.log(imgsrc);
        //}
        var img = new Image();
        img.src = imgsrc;
    }

    function encodeUrLatlng(num){
        var str = num + '';
        var output = '';
        for(var i=0; i<str.length; i++){
            var cha = str.charCodeAt(i) + 49;
            cha = String.fromCharCode(cha);
            output += cha;
        }
        return (output);
    }
    this.moveend = function(latlng){
        var opts = {
            m : encodeUrLatlng(latlng.lat()) + ',' + encodeUrLatlng(latlng.lng()),
            a : 'm'
        };
        shotLog(opts);
    };
    this.zoomed = function(level){
        var opts = {
            z : encodeUrLatlng(level),
            a : 'z'
        };
        shotLog(opts);
    };
    this.start = function(){
        var opts = {a:1};
        shotLog(opts);
    };
    this.end = function(){
        var opts = {a:0};
        shotLog(opts);
    };
    this.log = shotLog;
};
UMap.prototype.ulog = function(opts){
	var _UMap = this;
    var ulog = new ULOG();
    var delayTime = 500;
    var delaySetTime = null;
	_UMap.addListener('moveend', function(){
        if(delaySetTime){
            clearTimeout(delaySetTime);
            delaySetTime = null;
        }
        delaySetTime = setTimeout(function(){
            ulog.moveend(_UMap.getCenter());
        }, delayTime);
    });
	_UMap.addListener('zoom', function(o,n){
        ulog.zoomed(n);
    });
    UEvent.addEvent(window, 'unload', function(){
        ulog.end();
        //alert('unload');
    });
    UEvent.addEvent(document.body, 'click', function(e){
        var e = UEvent.getEvent(e);
        var target = UEvent.getTarget(e);
        var tagName = target.tagName.toLowerCase();
        var value = target.innerHTML;
        //log(target.innerHTML);
        var data = target.getAttribute('data');
        
        
        if(data && data.indexOf('asp')>=0 && tagName === 'a' && value){
            ulog.log({a:'cat',cat:value});
        }
    });
    var idleTime = 30;//second
    var mouseoverSetTime = null;
    var isIdleing = false;
    var isMouseMoving = false;
    UEvent.addEvent(document.body, 'mousemove', function(e){
        var e = UEvent.getEvent(e);
        var target = UEvent.getTarget(e);
        isMouseMoving = true;
        //console.log('move');
        if(mouseoverSetTime){
        	clearTimeout(mouseoverSetTime);
        	mouseoverSetTime = null;
        }
        mouseoverSetTime = setTimeout(function(){
        	isMouseMoving
        	if(!isIdleing){
        		ulog.log({a:'idle',idle:1});
        		isIdleing = true;
        	}
        }, idleTime*1000);
        if( isIdleing){
        	ulog.log({a:'idle',idle:0});
        	isIdleing = false;
        }
    });
    if(window.doSearch){
		var tmp = doSearch;
		doSearch = function(){
			tmp();
			var kw = document.getElementById('queryString').value;
			if(kw){
				ulog.log({a:'kw',kw:kw});
			}
		}
    }
	ulog.start();

    return ulog;
};