;
if ('undefined' == typeof(pageTracker))
{
    var pageTracker = 0;
}

var log_container = {
    current_time: 1283999066,
    visitor_id: 0,
    ip: '38.107.191.106',
    url: document.URL,
    refer: document.referrer || '',
    entry_time: 0,
    ref_code: '-',
    in_code: '-',
    source_type: '-',
    source: '-',
    keyword: '',
    page_type: 0,
    is_landing: 0,
    is_old_visit: 1,
    last_visit_time: 0,
    medium: '-',
    uid: $.cookie('uchome_uid') || 0,
    d_source_type: '-',
    d_source: '-',
    d_keyword: '-',
    d_medium: '-',
    d_ref_code: '-',
    d_in_code: '-',
    current_page_type: 0,
    guid: "F699207AE9"};
var _separator = '|>';

function _kx_log(page_type)
{
    page_type = page_type || 0;
    log_container.page_type = page_type;

    log_container.current_page_type = page_type;

    var utmkx  = _kx_cookie('__utmkx');
    var utmkxc = _kx_cookie('__utmkxc');
    
    var utmguid= _kx_cookie('__utmguid');

    if (! utmkxc || ! utmkx || ! utmguid)
    {
        log_container.entry_time = log_container.current_time;
        log_container.is_landing = 1;
    }
    else
    {
        var _refer = parse_url(log_container.refer) 
        log_container.is_landing = 0;
        var utmkx_splic = utmkx.split(_separator);
        if (utmkx_splic && utmkx_splic.length)
        {
            log_container.entry_time = utmkx_splic[0];
            log_container.source_type= utmkx_splic[1];
            log_container.ref_code   = utmkx_splic[2];
            log_container.in_code    = utmkx_splic[3];
            log_container.keyword    = utmkx_splic[4];
            log_container.source     = utmkx_splic[5];
            log_container.page_type  = utmkx_splic[8] || 0;

            log_container.guid = utmkx_splic[9] || 0;
        }

    }

    _kx_cookie('__utmguid', log_container.guid, {path: '/', domain: '.kuxun.cn', secure: 0, expires:365});

   _kx_trackPageview();

    /** instance google tracker*/
    pageTracker = _gat._getTracker("UA-5254304-1");
    pageTracker._setDomainName(".kuxun.cn");

    /** add several search engine.*/
    pageTracker._addOrganic("baidu","word");
    pageTracker._addOrganic("soso","w");
    pageTracker._addOrganic("sogou","query");

    pageTracker._trackPageview();
}

function _kx_trackPageview()
{
    var result = _kx_getCampaign(log_container.refer, log_container.url);
    log_container.d_source = result.source;
    log_container.d_keyword = result.keyword;
    log_container.d_medium = result.medium;

    /** add visitor id logic#2010.08.05*/
    var utma = _kx_cookie('__utma');
    if (utma)
    {
        var utma_splic = utma.split('.');
        log_container.visitor_id = utma_splic[1];
    }

    log_container.d_ref_code = parse_serialize_str(log_container.url, 'fromid=', '&');
    log_container.d_in_code  = parse_serialize_str(log_container.url, 'ifid=', '&');

    var source_type = '';
    var _refer = log_container.refer.toLowerCase();
    _refer = parse_url(_refer);
    var utmcmd = log_container.d_medium;
    if ('cpc' == utmcmd || -1 !== _refer.indexOf('fromid=sem-') || -1 !== log_container.url.indexOf('fromid=sem-'))
    {
        source_type = 'sem';
    }
    else if ('organic' == utmcmd) 
    {
        source_type = 'seo';
    }
    else if (-1 !== log_container.url.indexOf('fromid='))
    {
        source_type = 'bdreferral';
    }
    else if ('' == _refer || '#' == _refer)
    {
        if ('popup' == log_container.medium)
        {
            source_type = 'bdreferal';
        }
        else
        {
            source_type = 'direct';
        }
    }
    else if (-1 !== _refer.indexOf('/www.kuxun.cn/'))
    {
        //source_type = 'kxhome';
        source_type = 'direct';
    }
    else if (-1 !== _refer.indexOf('/hotel.kuxun.cn/'))
    {
        source_type = 'kxhotel';
    }
    else if (-1 !== _refer.indexOf('/skb.kuxun.cn/') || -1 !== _refer.indexOf('/huoche.kuxun.cn/') || 'hcpresult' == log_container.d_in_code)
    {
        source_type = 'kxskb';
    }
    else if (-1 !== _refer.indexOf('/piao.kuxun.cn/'))
    {
        source_type = 'kxpiao';
    }
    else if (-1 !== _refer.indexOf('/dujia.kuxun.cn/'))
    {
        source_type = 'kxdujia';
    }
    else if (-1 !== _refer.indexOf('/jipiao.kuxun.cn/') || -1 !== _refer.indexOf('.jipiao.kuxun.cn/'))
    {
        source_type = 'direct';
    }
    else if (-1 !== _refer.indexOf('.kuxun.cn'))
    {
        source_type = 'kxother'; 
    }
    else
    {
        source_type = 'referral';
    }

    log_container.d_source_type = source_type;

    if (log_container.is_landing && 1 == log_container.is_landing)
    {
        log_container.source_type = log_container.d_source_type;
        log_container.source = log_container.d_source;
        log_container.keyword = log_container.d_keyword;
        log_container.medium = log_container.d_medium;
        log_container.ref_code = log_container.d_ref_code;
        log_container.in_code = log_container.d_in_code;
    }

    var cookie_str = '';
    cookie_str += log_container.entry_time + _separator;
    cookie_str += log_container.source_type + _separator;
    cookie_str += log_container.ref_code + _separator;
    cookie_str += log_container.in_code  + _separator;
    cookie_str += log_container.keyword + _separator;
    cookie_str += log_container.source + _separator;
    cookie_str += encodeURIComponent(log_container.refer) + _separator;
    cookie_str += encodeURIComponent(log_container.url) + _separator;
    cookie_str += log_container.page_type + _separator;
    cookie_str += log_container.guid;

    _kx_cookie('__utmkxc', log_container.visitor_id, { path: '/', domain: '.kuxun.cn', secure: 0, expires: 0.0208333 });
    _kx_cookie('__utmkx', cookie_str, { path: '/', domain: '.kuxun.cn', secure: 0 });

    var post_url = '/internal/ajax.php?action=kxbdlog'; 
    var log = '';
    log_container.refer = encodeURIComponent(log_container.refer);
    log_container.url   = encodeURIComponent(log_container.url);
    for (var index in log_container)
    {
        //js_debug(index + ' => ' + log_container[index]);
        if ('' == log)
        {
            log += index + '=' + log_container[index]; 
        }
        else
        {
            log += '&' + index + '=' + log_container[index];
        }
    }
    $.post(post_url, log, function(){
        //in_code
    });
}

/**
separate
*/
function parse_serialize_str(L, n, s)
{
    if(!L || L == ''  || !n || n == '' || !s || s == '')
    {
        return '-';
    }
    
    var i, i2, i3, c = '-';
    i = L.indexOf('#');
    if (i > -1) {
        L = L.substr(0, i);
    }
    i  = L.indexOf(n);
    i3 = n.indexOf('=') + 1;

    if(i > -1)
    {
        i2 = L.indexOf(s, i);
        if (i2 < 0)
        {
            i2 = L.length;
        }
        c = L.substr((i + i3), i2 - i - i3);
    }

    return c;
}

function parse_url(url)
{
    var res = '';
    if (! url)
    {
        return res;
    }
    var i = url.indexOf('#');
    if (i > -1) {
        url = url.substr(0, i);
    }
    var pos = url.indexOf('?');
    if (pos > -1)
    {
        res = url.substr(0, pos);
    }
    else
    {
        res = url;
    }

    return res;
}

function _kx_cookie(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {}; 
        if (value === null) {
            value = ''; 
            options.expires = -1; 
        }   
        var expires = ''; 
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }   
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }   
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : ''; 
        var domain = options.domain ? '; domain=' + (options.domain) : ''; 
        var secure = options.secure ? '; secure' : ''; 
        document.cookie = [name, '=', value, expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = cookie.substring(name.length + 1);
                    break;
                }   
            }   
        }   
        return cookieValue;
    }   
};

function _kx_getCampaign(refer, url) {
    var result = {
        'source': '-',
        'keyword': '-',
        'medium': '-'
    };
    if (("" == refer || 'undefined' == typeof(refer)) && '' != url) {
        if (-1 != url.indexOf('utm_medium=') && 'cpc' == parse_serialize_str(url, 'utm_medium=', '&')) {
            result['source'] = 'OtherSE';
            result['medium'] = parse_serialize_str(url, 'utm_medium=', '&');
        }
        return result;
    }
    if ("" == url || 'undefined' == typeof(url)) {
        return result;
    }

    var seSourceMap = [
        ['Google', '.google.com/search', 'q='],
        ['Google', '.google.com.hk/search', 'q='],
        ['Baidu', '.baidu.com/', 'wd='],
        ['Baidu', '.baidu.com/', 'word='],
        ['Soso', '.soso.com/q', 'w='],
        ['Sogou', '.sogou.com/web', 'query='],
        ['Bing', '.bing.com/search', 'q=']
    ];
    var i = 0;
    for (i = 0; i < seSourceMap.length; i ++) {
        if (-1 != refer.indexOf(seSourceMap[i][1])) {
            result['source'] = seSourceMap[i][0];
            result['keyword'] = parse_serialize_str(refer, seSourceMap[i][2], '&');
            if (-1 != url.indexOf('utm_medium=')) {
                result['medium'] = parse_serialize_str(url, 'utm_medium=', '&');
            }
            else {
                result['medium'] = 'organic';
            }
            break;
        }
    }
    if (i == seSourceMap.length && -1 != url.indexOf('utm_medium=') && 'cpc' == parse_serialize_str(url, 'utm_medium=', '&')) {
            result['source'] = 'OtherSE';
            result['medium'] = parse_serialize_str(url, 'utm_medium=', '&');
        }
    return result;
};
