var Gabriel = {
    ValidationMessage: {}
}

$(function() {

    Gabriel.Uri = new parseUri(document.location);
    Gabriel.Domain = Gabriel.Uri.protocol + '://' + Gabriel.Uri.host;

    $('.search_gri input', '#header').keyup(function(e) {
        if (e.keyCode == 13) {
            $('input.search_red', '#header').click();
        }
    });

    $('input.search_red', '#header').click(function(e) {
        e.preventDefault();

        var keywords = $(this).prev().children('input:first').val();
        doSearch(keywords);
    });

    $('.input270_gri input', '.search_left').keyup(function(e) {
        if (e.keyCode == 13) {
            $('input.button_result', '.menu_left').click();
        }
    });

    $('input.button_result', '.menu_left').click(function(e) {
        e.preventDefault();

        var keywords = $('.input270_gri input', '.search_left').val();
        doSearch(keywords);
    });


    $('.basket_button a').click(function(e) {
        e.preventDefault();

        var productId = $(this).next().val();
        if (productId != '') {
            jQuery.ajax({
                url: "/ajax.aspx?m=Gabriel.Basket.QuickBasket&la=" + Gabriel.Page.LangId + "&_r=" + Math.random(),
                data: "Action=add&ProductID=" + productId + ($('.color_big input').val() != undefined && $('.color_big input').val() != '' ? "&ColorID=" + $('.color_big input').val() : ""),
                type: "POST",
                dataType: 'xml',
                success: function(xmlResponse) {
                    var Response = jQuery(xmlResponse).find("Response");
                    if (Response.attr("Type").toString() != "Error") {

                        var loc = Gabriel.Domain + Gabriel.Links.Basket.url;
                        var returnUrl = escape(Gabriel.Uri.source.replace(Gabriel.Domain, ''));
                        if (returnUrl != '/' && returnUrl != '')
                            loc += "?return=" + returnUrl;

                        document.location = loc;

                    }
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    alert('Could not update cart!');
                }
            });
        }
    });


    if (Gabriel.Uri.queryKey.s) {
        $('input.search_red', '#header').focus();
    }

});


String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, "");
}
String.prototype.ltrim = function() {
    return this.replace(/^\s+/, "");
}
String.prototype.rtrim = function() {
    return this.replace(/\s+$/, "");
}

function markValid(item) {
    item.parent().removeClass().addClass('input270_white');
}
function markInvalid(item) {
    item.parent().removeClass().addClass('input270_gri');
}

function RefreshCaptcha(imgSelector, inputSelector) {
    var baseSrc = "/ajax.aspx?m=Gabriel.Common.Captcha&w=112&h=45&t=1&la=1";
    jQuery(imgSelector).attr("src", baseSrc + "&_r=" + Math.random());
    jQuery(inputSelector).val('');
    markInvalid(jQuery(inputSelector));
}

function doSearch(keywords) {
    if (keywords != Gabriel.Uri.queryKey.s) {
        var newLoc = Gabriel.Domain + Gabriel.Links.Search.url + "?s=" + escape(keywords);
        if (Gabriel.Uri.queryKey.ct)
            newLoc += "&ct=" + Gabriel.Uri.queryKey.ct;
        document.location = newLoc;
    }
}

function hideInputText(item, defaultText) {
    if ($(item).val() == defaultText) {
        $(item).val('');
    }
}
function fetchInputText(item, defaultText) {
    if ($(item).val() == '')
        $(item).val(defaultText);
}

function refreshTopBasket(scroll) {
    jQuery.ajax({
        url: "/ajax.aspx?m=Nv.SqlModule&name=BasketBox&la=" + Gabriel.Page.LangId + "&_r=" + Math.random(),
        data: [],
        type: "GET",
        success: function(responseHtml) {
            $('#header .basket_top').remove();
            $('#header .searchTop').after(responseHtml);

            if (Gabriel.Uri.queryKey.js) {
                if (Gabriel.Uri.queryKey.js.toLowerCase() == 'true') {
                    $('#header .basket_top').show();
                }
            }
        },
        error: function() {
            document.location = document.location;
        }
    });
}

function json2xml(o, tab) {
    var toXml = function(v, name, ind) {
        var xml = "";
        if (v instanceof Array) {
            for (var i = 0, n = v.length; i < n; i++)
                xml += ind + toXml(v[i], name, ind + "\t") + "\n";
        }
        else if (typeof (v) == "object") {
            var hasChild = false;
            xml += ind + "<" + name;
            for (var m in v) {
                if (m.charAt(0) == "@")
                    xml += " " + m.substr(1) + "=\"" + v[m].toString() + "\"";
                else
                    hasChild = true;
            }
            xml += hasChild ? ">" : "/>";
            if (hasChild) {
                for (var m in v) {
                    if (m == "#text")
                        xml += v[m];
                    else if (m == "#cdata")
                        xml += "<![CDATA[" + v[m] + "]]>";
                    else if (m.charAt(0) != "@")
                        xml += toXml(v[m], m, ind + "\t");
                }
                xml += (xml.charAt(xml.length - 1) == "\n" ? ind : "") + "</" + name + ">";
            }
        }
        else {
            xml += ind + "<" + name + ">" + v.toString() + "</" + name + ">";
        }
        return xml;
    }, xml = "";
    for (var m in o)
        xml += toXml(o[m], m, "");
    return tab ? xml.replace(/\t/g, tab) : xml.replace(/\t|\n/g, "");
}

