﻿$(document).ready(function () {
    BrandMenu();
    NormalizeBreadCrumbs();
    bindStylishSelectValidators();
    MakeNumericalFields();
});

/*Brand Menu*/
function BrandMenu() {
    if (CheckIfIsBrandPage() == false) {
        return;
    }
    var brand = getBrandNameFromUrl();
    var span = $('#brandMenuContainer span');
    $('#brandMenuContainer ul li').each(function (index, li) {
        if ($(li).data('param') == brand) {
            span.html($(li).text());
            return;
        }
    });
}

/*BreadCrumbs*/
function NormalizeBreadCrumbs() {
    var breadCrumbs = $('div.breadcrumbs ul li a');
    if (breadCrumbs.length > 3) {
        breadCrumbs.slice(2).each(function () {
            ElapseLongText(this, 16);
        });
        ElapseLongText('div.breadcrumbs ul li b', 22);
    }
}

function getBrandNameFromUrl() {
    return getBrandNameFromString(document.location.pathname);
}
function getBrandNameFromString(a) {
    var page = a.split("/");
    return page[page.length - 1].replace(".aspx", "");
}

function CheckIfIsBrandPage() {
    var regexp = /brands\/[^\.]*\.aspx/i;
    var result = regexp.test(document.location.pathname);
    return result;
}

/*Utils*/
function ElapseLongText(element, maxLength) {
    var text = $(element).text();
    if (text.length > maxLength + 2) {
        $(element).attr('title', text);
        text = text.slice(0, maxLength) + '...';
        $(element).text(text);
    }
}
/*----------*/
/*Validation*/
function bcIsValidatable(element) {
    var attr = $.trim($(element).attr('validatable'));
    return attr == 'true' || attr == '';
}
function bcValidateRequiredField(sender, args) {
    if (!bcCheckForValidField(sender)) return;
    bcRegexValidate(sender, args, /\S+/);
}
function bcValidateRequiredDualField(sender, args) {
    var relatedField = document.getElementById($(sender).attr("relatedfield"));
    if ((relatedField && !window.AllValidatorsValid(relatedField.Validators)) || !bcCheckForValidField(sender)) return;
    bcRegexValidate(sender, args, /\S+/);
}
function bcValidateEmailField(sender, args) {
    if (!bcCheckForValidField(sender)) return;
    bcRegexValidate(sender, args, /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/);
}
function bcValidateRequiredDropdownField(sender, args) {
    if (!bcIsValidatable(sender)) return;
    var select = document.getElementById($(sender).attr("ddltovalidate"));
    if (!select) return;
    args.Value = $(select).find(':selected').val();
    bcRegexValidate(sender, args, /\S+/);
}
function bcRegexValidate(sender, args, regex) {
    if (!regex.test(args.Value)) {
        args.IsValid = false;
        return;
    }
    var defaultValue = $.trim($(sender).data('default')).toUpperCase();
    args.IsValid = !defaultValue || $.trim(args.Value).toUpperCase() != defaultValue;
}
function bcCheckForValidField(validator) {
    if (!validator) return null;
    var control = document.getElementById(validator.controltovalidate);
    return control && bcIsValidatable(control) && window.AllValidatorsValid(control.Validators);
}
function cbRefreshValidators(containerSelector) {
    var validate = function (validators) {
        for (var i = 0; i < validators.length; i++) {
            window.ValidatorValidate(validators[i]);
        }
        return window.AllValidatorsValid(validators);
    };
    var isValid = true;
    $('input[validatable=true],select[validatable=true],textarea[validatable=true]', $(containerSelector)).each(function (index, field) {
        if (typeof (field.Validators) != 'undefined' && field.Validators != null) {
            if (!validate(field.Validators)) {
                isValid = false;
            }
        }
    });
    var customValiadtors = $('span[validatable=true]', $(containerSelector));
    if (customValiadtors.length > 0) {
        if (!validate(customValiadtors.toArray())) {
            isValid = false;
        }
    }

    window.ValidatorUpdateIsValid();
    return isValid;
}
function bindStylishSelectValidators() {
    var customValiadtors = $('span[validatable=true][ddltovalidate]');
    customValiadtors.each(function (index, validator) {
        var ddl = document.getElementById($(validator).attr('ddltovalidate'));
        if (ddl) {
            $(ddl).change(function () {
                window.ValidatorValidate(validator);
                window.ValidatorUpdateIsValid();
            });
        }
    });
}
/*-----*/
/*Popup*/
function showNotificationPopup(speedOverlay, speedPopup) {
    speedOverlay = typeof (speedOverlay) != 'undefined' ? speedOverlay : 500;
    speedPopup = typeof (speedPopup) != 'undefined' ? speedPopup : 300;
    $.fn.popup({
        popup: '#notificationPopup',
        action: 'show',
        speedOverlay: speedOverlay,
        speedPopup: speedPopup
    });
}
function closeNotificationPopup() {
    $.fn.popup({
        popup: '#notificationPopup',
        action: 'hide'
    });
}
function showTermsPopup() {
    speedOverlay = typeof (speedOverlay) != 'undefined' ? speedOverlay : 500;
    speedPopup = typeof (speedPopup) != 'undefined' ? speedPopup : 300;
    $.fn.popup({
        popup: '#termsPopup',
        action: 'show'
    });
}
function closeTermsPopup() {
    $.fn.popup({
        popup: '#termsPopup',
        action: 'hide'
    });
}
/*-----*/

function rebindStylishSelect(id) {
    $(function () {
        var select = document.getElementById(id);
        if (select) {
            $(select).sSelect({ ddMaxHeight: '150px' })
                     .parent('span.select').css('z-index', --stylishSelectIndexCounter);
        }
    });
}

function underlineContentLinks() {
    var allLinks = $(".wrap a");
    var neededLinks = allLinks.filter("[href$=pdf],[href$=doc],[href$=docx],[href$=zip],[href$=rar]");
    $(neededLinks).each(function () {
        $(this).css("text-decoration", "underline");
        $(this).addClass("contentLink");
    });
}

/*numerical textboxes*/
function MakeNumericalFields() {
    $('.numerical input').keydown(function (event) {
        if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 13 || event.keyCode == 9) {
        }
        else {
            if (!(event.keyCode >= 48 && event.keyCode <= 57) && !(event.keyCode >= 96 && event.keyCode <= 105)) {
                event.preventDefault();
            }
        }
    }).focus(function() {
        $(this).parent().addClass('focus');
    });
}
/*------------------*/
