var ErrorReported = false;
var AjaxRequest;

$(document).ready(function () {

    jQuery.error = console.error;
    window.onerror = function (msg, url, linenumber) {
     //   $("div[name='Loader']").fadeOut(100);
        trackError("JS window.onerror: " + msg, linenumber, url);
        return false;
    }

    $.ajaxSetup({
        evalScripts: true,
        error: Service_Error,
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        type: 'POST',
        timeout: (12 * 1000),
        xhr: function () {
            if ($.browser.msie && $.browser.version.substr(0, 1) <= 7)
                return new ActiveXObject("Microsoft.XMLHTTP");
            else
                return new XMLHttpRequest();
        }
    });

    $("a[name='lnkFBConnect']")
    .bind('click', function () {
        var FBloginWindow = window.open(FBauth, "Login", "status=0,toolbar=0,menubar=0,resizable=1,width=630,height=330");
        if (window.parent.length) {
            window.parent.reload();
        }
        return false;
    });

});

function GetNames() {
    wait2('#loader01');

    var DTO = new Object();
    DTO.snr = new Object();  
   
    DTO.snr.Hobbies = $('#txtHobbies').val();
    DTO.snr.ThingsILike = $('#txtThingsILike').val();
    DTO.snr.Name = $('#txtName').val();
    DTO.snr.Numbers = $('#txtNumbers').val();
    DTO.snr.WhatAreYouLike = $('#txtWhatAreYouLike').val();
    DTO.snr.Words = $('#txtWords').val();

    AjaxRequest = $.ajax({
        url: '/services/NameService.asmx/GetNames',
        data: JSON.stringify(DTO),
        success: processNameSearch
    });   

    pageTracker._trackPageview("/home/asyncpostback/ok");   
}

function processNameSearch(data) {
    $('#spnMessage').html(data.d.length + " name ideas generated. Click Spin to create more");

    var ul = document.createElement("ul");
    $(ul).attr("class","list01 clear");   

    for (var i = 0; i < data.d.length; i++) {
        var j = data.d[i];
        var li = GetNameNode(j);
        ul.appendChild(li);
    }

    $('#divNames').html(ul);
    stopwait('#loader01');
}

function GetNameNode(j) {
    var li = document.createElement("li");
    var link = document.createElement("a");  
    link.setAttribute('href', "http://www.shareasale.com/r.cfm?u=310092&b=170332&m=21886&afftrack=&urllink=knowem%2Ecom%2Fcheckusernames%2Ephp%3Fu%3D" + j); 
    link.setAttribute('name', 'lnkName');    
    link.setAttribute('target', 'blank');    
    link.appendChild(document.createTextNode(j));
    li.appendChild(link);
    return li;
}


function wait2(ref) {
    $(ref).append('<div class="loading01"></div><div class="loading02"></div>');   
}
function stopwait(ref) {
    $('.loading01, .loading02', ref).remove();
}



function trackError(msg, details, location) {
    ToggleVisibility(0);

    if (!ErrorReported) {
        if (location == "") location = window.location.href;
        _gaq.push(['_trackEvent', 'Error', msg, details + " " + location]);
        console.log('Exception reported');
        ErrorReported = true;
    }
}

function Service_Error(objAJAXRequest, status) {    

    if (status == "abort") {
        console.log("request aborted, no error logged");
        return;
    }   

    console.log("Service_Error status: " + status);
    console.log(objAJAXRequest);
    switch (status) {
        case 401:
            console.log("error 401");           
            break;
        case 500:
           // DisplayMessage('Error', 'We apologize, your request could not be completed', 'The administrator has been notified and this will be fixed soon. Please try again later.');
            trackError("Service_Error: " + status, "", "");
            break;
        case 'timeout':
          //  DisplayMessage('Error', 'Request timed out', 'NameStation may be over capacity or experiencing a momentary hiccup. Please try again');
            trackError("Service_Error: " + status, "", "");
            break;
        default:
          //  DisplayMessage('Error', 'We apologize, your request could not be completed', 'The administrator has been notified and this will be fixed soon. Please try again later.');
            trackError("Service_Error: " + status, "", "");
    }

    var message = "We apologize, your request has timed out. Please retry your last action.";
    alert(message);

}

