﻿
function Load() {

    /*
    var container = document.getElementById("container");

    var height = document.body.offsetHeight - container.offsetHeight;

    if (height > 203) {
    container.style.height = height - 203 + "px";
    }
    */
}

function SetFocus(obj, val) {
    if (obj.value == val) {
        obj.value = "";
    }
}

function SetBlur(obj, val) {
    if (obj.value == "") {
        obj.value = val;
    }
}

function SetBg(id, image) {
    var id = document.getElementById(id);
    id.style.backgroundImage = image;
}

var isValidatorAppears = 0;
var isValidatorInitialized = true;
var IE6 = (navigator.userAgent.toLowerCase().indexOf('msie 6') != -1) && (navigator.userAgent.toLowerCase().indexOf('msie 7') == -1);

function LoadIFrame(frame, message, id) {

    frame.style.width = 70 + (message.length * 6) + "px";

    var f = frame.contentWindow.document.getElementById('inner');
    var c = frame.contentWindow.document.getElementById('close');

    c.onclick = function () {
        parent.document.getElementById(id).style.display = "none";
    };

    f.innerHTML = message;
}

function ExtendedValidator_Validate(source, args) {

    var control = document.getElementById(source.controltovalidate);

    var defaultValue = document.all ? document.all[source.id + "_default"] : document.getElementById(source.id + "_default");
    var defaultValue = defaultValue.value;

    source.style.zIndex = "10";
    source.style.color = "#212021";
    source.style.position = "absolute";

    var innerHTML = '';

    if (IE6) {
        innerHTML += '<iframe scrolling="NO" id="i" style="width: 250px; height: 60px;" onload="LoadIFrame(this, \'' + source.errormessage + '\', \'' + source.id + '\')" src="Message.htm" frameborder="0"></iframe>';
    }
    else {
        innerHTML += '<div class="message-content">';
        innerHTML += '<div class="close" onclick="HideMessage(\'' + source.id + '\')"></div>';
        innerHTML += '<div class="bottom">';
        innerHTML += '<div class="inner">' + source.errormessage + '</div>';
        innerHTML += '<div class="left"></div>';
        innerHTML += '</div>';
    }

    source.innerHTML = innerHTML;

    switch (source.className) {

        case "Required":
            {
                if (control.value == defaultValue || isHasWrongChars(control.value)) { args.IsValid = false; }
                break;
            }
        case "Zip":
            {
                if (control.value == defaultValue || !isZip(control.value)) { args.IsValid = false; }
                break;
            }
        case "Email":
            {
                if (control.value == defaultValue || !isEmail(control.value)) { args.IsValid = false; }
                break;
            }
        case "Cvv":
            {
                if (control.value == defaultValue || !isCvv(control.value)) { args.IsValid = false; }
                break;
            }
        case "NameOnCard":
            {
                if (control.value == defaultValue || !isNameOnCard(control.value)) { args.IsValid = false; }
                break;
            }
        case "CardNumber":
            {
                if (control.value == defaultValue || !isCardNumber(control.value)) { args.IsValid = false; }
                break;
            }
        case "Phone":
            {
                if (control.value == defaultValue || !isPhone(control.value)) { args.IsValid = false; }
                break;
            }
        case "Coupon":
            {
                if (control.value.length > 20 || isHasWrongChars(control.value)) { args.IsValid = false; }
                break;
            }
        default:
            {
                args.IsValid = false;
                break;
            }
    }

    var label = source.id + "_label";
    var labelControlName = document.getElementById(label);
    var labelControl = document.getElementById(labelControlName.value);

    if (!args.IsValid) {
        control.style.border = "solid 1px #FF0000";
        if (labelControl != null) {
            labelControl.style.color = "#FF0000";
        }

        if (isValidatorAppears == 0) isValidatorAppears = 1;
    }
    else {
        control.style.border = "solid 1px #BBBBBB";
        if (labelControl != null) {
            labelControl.style.color = "#565656";
        }

        isValidatorAppears = 0;
    }

    if (source.style.left != null && source.style.left == "") {
        source.style.display = "block";
        var blockWidth = source.clientWidth;
        source.style.display = "none";

        source.style.top = $(control).offset().top - 61 + "px";
        source.style.left = $(control).offset().left - blockWidth + 70 + "px";
    }
}

function isHasWrongChars(s) {

    if (s.indexOf("'") > -1) return true;
    else if (s.indexOf(">") > -1) return true;
    else if (s.indexOf("<") > -1) return true;

    return false;
}

function HideMessage(source) {
    document.getElementById(source).style.display = "none";
}

function isNameOnCard(s) {
    re = new RegExp(/^\w+\s\w+$/);
    if (!re.test(s)) { return false; }
    return true;
}

function isZip(s) {
    reZip = new RegExp(/(^\d{5}$)|(^\d{5}-\d{4}$)/);
    if (!reZip.test(s)) { return false; }
    return true;
}

function isCardNumber(s) {

    regexStrVisa = new RegExp(/^4\d{15}$/);
    regexStrMasterCard = new RegExp(/^5[1-5]\d{14}$/);
    regexStrDiscover = new RegExp(/^6011\d{12}$/);
    regexStrAmex = new RegExp(/^3[47]\d{13}$/);

    if (regexStrVisa.test(s)) { return true; }
    else if (regexStrMasterCard.test(s)) { return true; }
    else if (regexStrDiscover.test(s)) { return true; }
    else if (regexStrAmex.test(s)) { return true; }

    return false;
}

function isCvv(s) {
    reZip = new RegExp(/^\d{3,4}$/);
    if (!reZip.test(s)) { return false; }
    return true;
}

function isPhone(s) {
    rePhone = new RegExp(/^(1\s*[-\/\.]?)?(\((\d{3})\)|(\d{3}))\s*[-\/\.]?\s*(\d{3})\s*[-\/\.]?\s*(\d{4})\s*(([xX]|[eE][xX][tT])\.?\s*(\d+))*$/);
    if (!rePhone.test(s)) { return false; }
    return true;
}

function isEmail(s) {
    reEmail = new RegExp(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/);
    if (!reEmail.test(s)) { return false; }
    return true;
}

function googleAnalytics(name_of_page) {
    try {
        pageTracker._trackPageview(name_of_page);
    } catch (err) { }
}

function TrackEvent(name, value, path) {
    try {
        pageTracker._trackEvent(name, value, path);
    } catch (err) { }
}

//*** Deamond search ****

if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function (elt /*, from*/) {
        var len = this.length >>> 0;

        var from = Number(arguments[1]) || 0;
        from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
        if (from < 0)
            from += len;

        for (; from < len; from++) {
            if (from in this &&
          this[from] === elt)
                return from;
        }
        return -1;
    };
}

function GetTopOffset(element) {
    var top = 0;
    try {
        if (element.offsetParent) {
            while (1) {
                top += element.offsetTop;
                if (!element.offsetParent) break;
                element = element.offsetParent;
            }
        } else if (element.y) { top += element.y; }
    }
    catch (ex) {
        return 0;
    }

    return top;
}

function GetLeftOffset(element) {
    var left = 0;
    try {
        if (element.offsetParent) {
            while (1) {
                left += element.offsetLeft;
                if (!element.offsetParent) break;
                element = element.offsetParent;
            }
        } else if (element.x) { left += element.x; }
    }
    catch (ex) {
        return 0;
    }
    return left;
}

var activeRow = 1;
var table = null;

function RowMouseOver(elem, arrowPointer, active) {
    try {
        if (elem == undefined) return;

        if (elem.rows) {
            table = elem;
            if (activeRow > elem.rows.length) {
                activeRow = elem.rows.length - 1;
            }
            elem = elem.rows[activeRow];
        }

        if (table != null) {
            try {
                for (var x = 0; x < table.rows.length; x++) {
                    if (table.rows[x].getAttribute('id') == elem.getAttribute('id')) {
                        activeRow = x;
                    }
                }
            } catch (err) { activeRow = 1; }
        }

        if (active) elem.style.backgroundColor = '#EAEAEA';

        var DetailsContainer = $get(DetailsContainerID);

        if (document.all) {
            DetailsContainer.innerHTML = elem.cells[8].childNodes[2].innerHTML;
        }
        else {
            DetailsContainer.innerHTML = elem.cells[8].childNodes[3].innerHTML;
        }

        var arrow = $get(arrowPointer);

        var containerTop = GetTopOffset(DetailsContainer) + DetailsContainer.offsetHeight + 28;
        var arrowTop = GetTopOffset(elem);
        var arrowBottom = arrowTop + arrow.offsetParent.offsetHeight;

        if (arrowBottom > containerTop) arrowTop = containerTop - (arrow.offsetParent.offsetHeight / 2) - 20;

        arrow.offsetParent.style.top = arrowTop + "px";
    }
    catch (Error) { }
}

function RowMouseOut(elem) {
    elem.style.backgroundColor = '#FFFFFF';
}

function RSRowMouseOver(event, elem, divRelativeId, divDetailsId) {
    try {
        if (elem == undefined) return;

        var detailsContainer = $("#" + divDetailsId);
        var divRelative = $("#" + divRelativeId);
        $("#" + divDetailsId + " #diamonddetails").html($('#' + elem.id + ' .DiamondDetails').html());

        var y = 0;
        var x = 0;

        var offset = divRelative.offset();

        if (document.attachEvent != null) { // Internet Explorer & Opera
            y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
            x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
        }
        if (!document.attachEvent && document.addEventListener) { // Gecko
            y = event.clientY + window.scrollY;
            x = event.clientX + window.scrollX;
        }

        var left = x - offset.left + 20;

        if (left + 274 > divRelative.width())
            left = divRelative.width() - 280;

        $("#" + divDetailsId).css({ top: y - offset.top + 10, left: left });
    }
    catch (Error) { }
}

function RSRowMouseOut(divDetailsId) {
    $("#" + divDetailsId).css({ top: 0, left: -99999 });
    $("#" + divDetailsId + " #diamonddetails").html("");
}

function ShowQuickLook(element, control, src) {
    if (src != undefined)
        $('#' + element.id + ' img').attr('src', src);

    if ($(".quicklook").length == 0) {
        var post = 'javascript:__doPostBack("' + control + '","@' + element.id + '"); return false;';
        var parent = element.parentNode;
        var str = "<a id='quicklook' class='quicklook' alt='Quicklook' onclick='" + post + "'>quick look</a>";

        if (document.all)
            $(element).after(str);
        else
            $(parent).append(str);

        $(".quicklook").show("slow");
    }
}

function HideQuickLook(element, event, src) {
    if (src != undefined)
        $('#' + element.id + ' img').attr('src', src);

    var parent = element.parentNode;

    var ev = $.event.fix(event);
    var offset = $(parent).offset();

    if (ev.pageX <= offset.left || ev.pageX >= (offset.left + 218)
    || ev.pageY <= offset.top || ev.pageY >= (offset.top + 235))
        $(".quicklook").remove();
}

function ClosePopup(pnl) {
    $('#' + pnl).empty();
}

function ExecuteHelpContentService(helptype, elem, x, y) {
    if (elem == undefined) {
        var offsetParent = $('#flashContent').offset();

        var elemleft = x + offsetParent.left - 10;
        var elemtop = y + offsetParent.top - 10;

        var parentLeft = offsetParent.left;
        var parentTop = offsetParent.top;
    }
    else {
        $(elem).html('<img style="padding: 3px; background: white;" src="/images/zoomloader.gif"></img>');
                
        var offset = $(elem).offset();
        var offsetParent = $(elem).offsetParent().offset();

        var elemleft = offset.left;
        var elemtop = offset.top;

        var parentLeft = offsetParent.left;
        var parentTop = offsetParent.top;
    }

    $.ajax({
        type: "POST",
        url: "/WebServices/ContentService.asmx/GetHelpContent",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: "{ type: '" + helptype + "' }",
        success: function (data) { LoadHelpPopup(data, elemleft, elemtop, parentLeft, parentTop); }
    });

    if (elem != undefined) $(elem).html('');

    return false;
}

function LoadHelpPopup(data, elemleft, elemtop, parentLeft, parentTop) {
    data = eval('(' + data.d + ')');

    $('#helppopup').show();
    $('#helppopup .pnlcon').html(data.HelpText);
    $('#helppopup .title').text(data.Title);
    $('#helppopup #pnlHMain').css('width', data.Width);
    $('#helppopup #pnlHMain').css('height', data.Height);

    var left = elemleft - parentLeft - 20;
    var top = elemtop - parentTop + 20;

    if ($('#helppopup .arrow-righttop').length != 0) {
        left = left - data.Width - 48;

        if (data.Height + 90 > $(window).height()) {
            top = $(window).scrollTop() - parentTop - 20;
        } else if (elemtop - $(window).scrollTop() + data.Height + 90 > $(window).height()) {
            top = $(window).height() + $(window).scrollTop() - data.Height - 100 - parentTop;
        } else
            top = top - 50;

        var arrowTop = elemtop - parentTop - top + 10;

        if ($('#helppopup #pnlHelpContainer').height() > arrowTop + 50)
            $('#helppopup .arrow-righttop').css({ 'top': arrowTop + 'px' })
        else
            $('#helppopup .arrow-righttop').css({ 'top': '-9999em' })
    }
    else if ($('#helppopup .arrow-topleft').length != 0) {

        if (elemleft - window.scrollX + data.Width + 120 > $(window).width()) {
            left = $(window).width() + window.scrollX - data.Width - 120 - parentLeft;
        }

        var arrowLeft = elemleft - parentLeft - left - 5;

        $('#helppopup .arrow-topleft').css({ 'left': arrowLeft + 'px' })
    }

    $('#helppopup #pnlHelpContainer').css({ 'left': left + 'px', 'top': top + 'px' });

    if ($('#helppopup .scroll-pane').length != 0)
        $('#helppopup .scroll-pane').jScrollPane({ showArrows: false, scrollbarWidth: 10, dragMaxHeight: 55 });
}

function HideHelpPopup() {
    $('#helppopup').hide();
    $('#helppopup .pnlcon').empty();
    $('#helppopup .title').empty();

    return false;
}
