﻿var ajaxStopToggle = 1;
var translationId = 0;

function CleanHTML(str) {
    str = str.replace(/(<([^>]+)>)/ig, "");
    str = str.replace(/^\s+|\s+$/g, "");
    return str;
}




function Try(Element) {
    var Locale = $.cookie("NRLocale");
    if (Locale == "en") {
        return
    }

    //final translates



    $("h3").removeClass("NR_NOtranslation");
    $(".getCodeBtn > *").removeClass("NR_NOtranslation");
    $(".replyMessage").removeClass("NR_NOtranslation"); //.addClass("translatable");
    $(".notice > * ").removeClass("NR_NOtranslation"); //.addClass("translatable");

    //$(".tipContent").removeClass("NR_NOtranslation").addClass("translatable");





    var currentPage = $(location).attr("href").substring($(location).attr("href").lastIndexOf('/') + 1);
    $(Element).each(function () {

        var cleanHTML = CleanHTML($(this).html());
        var alphanumeric = /[\?\d\w\s,.]+$/;
        var numericOnly = /\d+$/;
        var key = cleanHTML.replace(/\W*/gi, '').replace(" ", "_"); ;

        if ($(this).children()[0] == null && cleanHTML != "" && cleanHTML.match(alphanumeric) != null && cleanHTML.match(numericOnly) == null) {
            $(this).addClass("translatable");
            $(this).attr("translationId", key);
        }
        else {
            //$(this).addClass("NR_NOtranslation");
        }
    });

}

function Translate(Locale) {
    if (Locale == "en" || Locale == "EN") {
        return
    }
    var dataToSend = "";
    var CachedStr = $.DOMCached.get(Locale);

    if (CachedStr == null) CachedStr = "[]";

    var j = $.evalJSON(CachedStr);
    var x = {};
    $.each(j, function () {
        x[$(this)[0].translationId] = $(this)[0].textId;
    });

    $(".translatable:not(.NRtranslated,.NR_NOtranslation)").each(function () {
        if (x[$(this).attr("translationid")]) {
            $(this).html(x[$(this).attr("translationid")]);
            $(this).removeClass("translatable");
            $(this).addClass("NRtranslated");
        } else {
            dataToSend = dataToSend + "{\"translationId\":\"" + $(this).attr("translationId") + "\",\"textId\":\"" + CleanHTML($(this).text()) + "\"},";
            $(this).removeClass("translatable");
            $(this).addClass("NRtranslated");
        }
    });

    dataToSend = "[" + dataToSend.substring(0, dataToSend.length - 1) + "]";
    //console.log(dataToSend);
    if (dataToSend == "[]") return;

    $.post("/GenericHandlers/handlerAffiliates_Generic_Translations.Generic.ashx", { translations: dataToSend, L: Locale }, function (data) {

        if (data == "") return;

        var j = $.evalJSON(data);

        $.each(j, function () {
            $("[translationid=" + $(this)[0].translationId + "]").html($(this)[0].textId);
            //console.log($(this)[0].textId);
            $("[translationid=" + $(this)[0].translationId + "]").addClass("NRtranslated");
        });
        CachedStr = "[" + (CachedStr.replace("]", "").replace("[", "") + (CachedStr == "[]" ? "" : ",") + data.toString().replace("]", "").replace("[", "")) + "]";
        $.DOMCached.set(Locale, CachedStr);
        ajaxStopToggle = -1;
    });

    ajaxStopToggle = 1;

}

$(document).ajaxStop(function () {
    // if (ajaxStopToggle == -1) return;
    //alert("test.X");
    if (this.id == "_firebugConsole") return;

    //if (toggle == 1) return;

    if ($.cookie("NRLocale") == null) {

        $.cookie("NRLocale", "EN")
    }


    var Locale = $.cookie("NRLocale");
    if (Locale == "EN") {
        return
    }

    //console.log(this);
    //console.log("ajaxStop");
    FilterNO();

    Try("*:not(.NRtranslated,.NR_NOtranslation,.translatable)");
    Translate(Locale);
});


$("div:not(.NRtranslated,.NR_NOtranslation,.translatable)").ajaxComplete(function (event, request, settings) {

    if (this.id == "_firebugConsole") return;
    if (settings.url.indexOf("handlerAffiliates_Generic_Translations.Generic.ashx") > 0) return;

    if ($.cookie("NRLocale") == null) {
        $.cookie("NRLocale", "EN")
    }


    var Locale = $.cookie("NRLocale");
    if (Locale == "EN") {
        return
    }
    console.log(this);
    console.log("ajaxComplete");
    FilterNO();
    Try("*:not(.NRtranslated,.NR_NOtranslation,.translatable)", this);
    Translate(Locale);
});


function FilterNO() {
    var string = " > *";
    for (var i = 1; i < 10; i++) {


        $(".NR_NOtranslation" + string).addClass("NR_NOtranslation");

        //all jquery grids no translation
        $(".jqd" + string).addClass("NR_NOtranslation");
        $(".paymentMethodID" + string).addClass("NR_NOtranslation");
        string += "> *";
    }
}



$(document).ready(function () {

    //if language bug persistist plz comment out the following
    //    if ($.cookie("NRLocale") == null) {
    //      $.cookie("NRLocale", "")
    //  }


    var Locale = $.cookie("NRLocale");
    FilterNO();
    Try("*:not(.NRtranslated,.NR_NOtranslation,.translatable)");

    Translate(Locale);

    SortDropDowns()
});


function SortDropDowns() {
    $.each($("select"), function () {
        if (!($(this).hasClass("NoAlphaSort"))) {
            var opt = true;
            if ($(this).hasClass("SortByValues")) {
                opt = false;
            }
            var selectedValue = $(this).val();
            $(this).html($("option", $(this)).sort(function (a, b) {
                if (opt) {
                    return a.text == b.text ? 0 : a.text < b.text ? -1 : 1
                } else {
                    return a - b
                }
            }));
            $(this).val(selectedValue);
        }
    })

}


