﻿var g_ajaxRequest = null;
var g_track_response_guid = null; 
var const_ready_state = 4 ;
var const_http_ok = 200; 
var cookie_tracker = "BLS_GUID_COOKIE";
var cookie_referrer = "BLS_REF_COOKIE";
var ajax_op_get = "GET";
var ajax_op_post = "POST";
var ajax_key_form = "deadbeef";
var ajax_hit_service = "http://www.bettercoverage.com/hittracker.aspx?key=" + ajax_key_form + "&action=reg";
var ajax_reg_service = "http://www.bettercoverage.com/hittracker.aspx?key=" + ajax_key_form + "&action=hit";
//for debug
//var ajax_hit_service = "http://localhost:1266/BetterCoverage.Web/hittracker.aspx?key=" + ajax_key_form + "&action=hit";
//var ajax_reg_service = "http://localhost:1266/BetterCoverage.Web/hittracker.aspx?key=" + ajax_key_form + "&action=reg";
var debug_mode = false;

function track() {
    /*if (document.URL.indexOf("quote") > 0)
        init_ajax_object(ajax_hit_service);
    else*/
        init_ajax_object( null );
}

function init_ajax_object( action_url ) {
    try {
        if (action_url == null) action_url = ajax_reg_service;
        write_log('in init_ajax_object');
        g_ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
        write_log('created MS XML HTTP');
    }
    catch (e) {
        g_ajaxRequest = new XMLHttpRequest();
        write_log('created XMLHTTPRequest');
    }

    try {
        g_ajaxRequest.onreadystatechange = function() {
            if (g_ajaxRequest.readyState == const_ready_state)
                if (g_ajaxRequest.status == const_http_ok) {
                    write_track_data(g_ajaxRequest.responseText, cookie_tracker);                    
                    write_referrer_data(document.referrer, cookie_referrer); 
            }
        }
        write_log('about to send ajax request');
        g_ajaxRequest.open(ajax_op_get, action_url, true);
        g_ajaxRequest.send( null );
    }
    catch (e) {
        write_log('error in init: ' + e.description); 
    }
}

function write_track_data(guid, cookie_name) {
    if ( cookie_exists("BLS_GUID_COOKIE") ) // one machine_id cookie only
        write_cookie(guid, cookie_name, 1);
}

function write_referrer_data(referrer, cookie_name) {
    if( cookie_exists("BLS_REF_COOKIE") ) // one ref cookie only
        write_cookie(referrer, cookie_name, 1);
}

function write_cookie(data, name, expiredays) {
    try {        
        var exdate = new Date(); 
        exdate.setDate(exdate.getDate() + expiredays);
        document.cookie = name + "=" + escape(data) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
        write_log( 'wrote cookie data: ' + data + ' name: ' + name  + '; exp=' + exdate.toGMTString());
    }
    catch (e) {
        write_log(e.description);
    }
}

function cookie_exists(cookie_name) {
    return false; /*document.cookie.indexOf(cookie_name) == -1;*/
}

function write_log(message) {
    if (debug_mode)
        alert(message);        
}

setTimeout("track()", 3000);