﻿dojo.require("dojo.cookie");

var CLOSEBTNLABEL = "";

GetPageContent = function(pageUrl) {
    window.location.href = pageUrl;
}

GetTextPageContent = function(pageUrl) {
    SpinningWheel();
    // call analytics
    try {
        pageTracker._trackPageview(pageUrl);
    } catch (e) { }
    dojo.xhrGet({
        iframeProxyUrl: createUrl("/Content/js/dojo-release-1.1.0rc2-src/dojox/io/proxy/xip_server.html", false),
        url: pageUrl,
        handleAs: "text",
        timeout: 100000, // Time in milliseconds
        preventCache: true,
        content: { "onlycontent": "true" },
        load:
				 	       						function(response, ioArgs) {
				 	       						    var element = dojo.byId('sfContentBlock');
				 	       						    onXhrLoad(response, ioArgs.url);
				 	       						    setMainMenuSelection();
				 	       						},
        error:
				 							         	function(response, ioArgs) {
				 							         	    removeNotifiers();
				 							         	    var body = document.getElementsByTagName("body")[0];
				 							         	    var error = document.createElement("div");
				 							         	    error.setAttribute("id", "error_div");
				 							         	    var closeButton = "<div id=\"errorClose\" class=\"errorClose\" onclick=\"this.parentNode.parentNode.removeChild(this.parentNode)\"></div>";
				 							         	    error.innerHTML = response.message + closeButton;
				 							         	    body.appendChild(error);
				 							         	    error.className = "error";
				 							         	    console.log("failed xhrGet");
				 							         	    return response;
				 							         	}

    });

}

SpinningWheel = function() {
    var loader = document.createElement("div");
    loader.setAttribute("id", "loader_div");
    var loaderCenter = document.createElement("div");
    loaderCenter.setAttribute("id", "loaderCenter_div");
    //loader.appendChild(loaderCenter);
    loaderCenter.className = "loadercenter";
    var body = document.getElementsByTagName("body")[0];
    body.appendChild(loader);
    //body.appendChild(loaderCenter);
    loader.className = "loader";
}


addNotifiers = function(message, ioArgs) {
    //removeNotifiers();
    var body = document.getElementsByTagName("body")[0];
    var error = document.createElement("div");
    error.setAttribute("id", "error_div");
    var closeButton = "<span id=\"errorClose\" class=\"errorClose\" onclick=\"removeNotifiers();\">" + CLOSEBTNLABEL + "</span>";
    error.innerHTML = message + closeButton;
    body.appendChild(error);
    error.className = "error";
    console.log("failed xhrGet");
    return message;
}

onXhrLoad = function(response, url) {
    swfCleanup();
    var element = dojo.byId('sfContentBlock');
    if (element) {
        var tagName = "script";
        element.innerHTML = response;
        if (element.innerHTML != response) {
            response = response.replace(/\<script/g, "<span");
            response = response.replace(/script\>/g, "span>");
            tagName = "span";
            element.innerHTML = response;
        }
        var scripts = element.getElementsByTagName(tagName);
        var widgetData = new Array();
        for (var i = 0; i < scripts.length; i++) {
            var script = scripts[i];
            var parent = script.parentNode;
            var scriptSource = script.getAttribute("src");
            var scriptArgs = (script.innerText) ? (script.innerText) : (script.textContent);
            if (scriptSource && scriptArgs) {
                cleanArgs(script);
                var swfPath = String(scriptSource).split(".").splice(0, (scriptSource.split(".").length - 1)).join(".") + ".swf";
                var json = parseJson(scriptArgs);
                var widgetType = json["type"];
                var data = { swfPath: swfPath, type: widgetType, args: json, parent: parent };
                widgetData.push(data);
            }
        }
        insertSwfs(widgetData);
    }
    removeNotifiers();
    if (url) {
        var location = window.location.toString();
        var hashIndex = location.lastIndexOf("#");
        if (hashIndex > -1) {
            location = location.substring(0, hashIndex);
        }
        var markIndex = url.indexOf("?");
        url = url.substring(0, markIndex);
        window.location = location + "#" + url;
    }
    scrollToTop();
}

// Cleanup function to prevent Flash memory leaks in IE:
swfCleanup = function() {
    var element = dojo.byId('sfContentBlock');
    if (element) {
        var swfs = element.getElementsByTagName("object");
        var il = swfs.length;
        while (swfs.length > 0) {
            swfobject.removeSWF(swfs[0].id);
        }
    }
    if (dojo.isIE) { CollectGarbage(); }
}

insertSwfs = function(widgetData) {
    for (var i = 0; i < widgetData.length; i++) {
        var widget = widgetData[i];
        var swfPath = widget["swfPath"];
        var type = widget["type"];
        var args = widget["args"];
        var parent = widget["parent"];
        var random = Math.floor(Math.random() * 10001);
        var id = "id_" + random;
        var xmlPath = args["xmlPath"];
        var xmlByVal = args["xmlByVal"];
        var xmlByRef = args["xmlByRef"];
        var langCode = args["langCode"];

        switch (type) {
            case "carousel":
                var sizerDiv = document.createElement("div");
                var newDiv = document.createElement("div");
                newDiv.setAttribute("id", id);
                sizerDiv.appendChild(newDiv);
                sizerDiv.className = "carousel";
                parent.appendChild(sizerDiv);
                var poop = swfobject.embedSWF(swfPath, id, "734", "400", "9.0.0", null, { xmlPath: escape(xmlPath), xmlByVal: xmlByVal, xmlByRef: xmlByRef, lang: langCode }, { wmode: "transparent" });
                break;
            default:
                var newDiv = document.createElement("div");
                newDiv.setAttribute("id", id);
                parent.appendChild(newDiv);
                swfobject.embedSWF(swfPath, id, "100%", "100%", "9.0.0", null, { xmlPath: escape(xmlPath), xmlByVal: xmlByVal, xmlByRef: xmlByRef, lang: langCode, type: type }, { wmode: "opaque" });
                break;
        }
    }
}

cleanArgs = function(parent) {
    var text = (parent.innerText) ? (parent.innerText) : (parent.textContent);
    if (text) {
        var newText = text.replace(/\{.*\}?/g, "");
        (parent.innerText) ? (parent.innerText = newText) : (parent.textContent = newText);
    }
}

parseJson = function(json) {
    if (typeof json !== 'string') {
        return { "err": "trying to parse a non-string JSON object" };
    }
    try {
        var f = Function(['var document,top,self,window,parent,Number,Date,Object,Function,',
                        'Array,String,Math,RegExp,Image,ActiveXObject;',
                        'return (', json.replace(/<\!--.+-->/gim, '').replace(/\bfunction\b/g, 'function­'), ');'].join(''));
        return f();
    }
    catch (e) {
        return { "err": "trouble parsing JSON object" };
    }
}

scrollToTop = function() {
    window.scrollTo(0, 0);
}

removeNotifiers = function() {
    var loader = dojo.byId("loader_div");
    if (loader) {
        loader.parentNode.removeChild(loader);
    }
    var loaderCenter = dojo.byId("loaderCenter_div");
    if (loaderCenter) {
        loaderCenter.parentNode.removeChild(loaderCenter);
    }
    var error = dojo.byId("error_div");
    if (error) {
        error.parentNode.removeChild(error);
    }
}


searchKeyPressed = function(e) {
    //13 is the ASCII standard code for enter/return
    if (e.keyCode == 13) {
        var searchBox = dojo.byId("searchInput");
        if (searchBox.value && searchBox.value.replace(/ /g, "")) {
            searchClicked();
        }
    }
}

dropdownChanged = function(url, newValue) {
    url = url.replace("{selected}", newValue);
    //GetPageContent(url);
    window.location.href = url;
}

_onXhrPostError = function(response, ioArgs) {
    addNotifiers(response.message, ioArgs);
}

toggleIsTechnical = function(status) {
    if(status)
        dojo.byId("divFirewall").style.display = "block";
    else
        dojo.byId("divFirewall").style.display = "none";

    var isTechnical = dojo.byId("isTechnical");
    if (isTechnical) {
        isTechnical.value = status.toString();
    }
}

getRadioValue = function(group) {
    for (var i = 0; i < group.length; i++) {
        var radio = group[i];
        if (radio.checked) {
            return radio.value;
        }
    }
}

checkMail = function(email) {
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return filter.test(email);
}

checkPhoneNumber = function(phone) {
    var filter = /^[0-9]{6,15}$/;
    return filter.test(phone);
}

getFormData = function() {
    removeNotifiers();
    var form = document.forms[0];
    var formData = {};
    formData["isTechnical"] = form.isTechnical.value.toString();
    if (formData["isTechnical"] == "true") {
        formData["hasFirewall"] = getRadioValue(form.firewall);
        formData["firewallType"] = form.firewallType.value;
    }

    if ((form.email.value == "") && (form.phone.value == "")) {
        addNotifiers(dojo.byId("HiddenErrorEmailOrPhone").innerText, null);
        return;
    }

    if ((form.email.value != "") && !checkMail(form.email.value)) {
        addNotifiers(dojo.byId("HiddenErrorEmail").innerText, null);
        return;
    }

    if ((form.phone.value != "") && !checkPhoneNumber(form.phone.value)) {
        addNotifiers(dojo.byId("HiddenErrorPhone").innerText, null);
        return;
    }

    if (form.userName.value == "") {
        addNotifiers(dojo.byId("HiddenErrorName").innerText, null);
        return;
    }

    formData["description"] = form.txtDescription.value;
    formData["userName"] = form.userName.value;
    formData["email"] = form.email.value;
    formData["phone"] = form.phone.value;
    formData["availableOnPhone"] = form.availableOnPhone.value;
    submitSupportForm(formData);
}

var onClickIsWorking = true;
submitSupportForm = function(formData) {
    if (onClickIsWorking != true)
        return;
        
    var submitBtn = dojo.byId("btnSupportSubmit");
    submitBtn.style.display = "none";

    var timeout = 60000;
    var func = function(response, ioArgs) {
        if (onClickIsWorking == true)
            onClickIsWorking = false;
        submitBtn.style.display = "block";
        showFormMessage(response, ioArgs);
    };

    var funcErr = function(response, ioArgs) {
        submitBtn.style.display = "block";
        var message = dojo.isFF ? response.message : response.description;
        addNotifiers(message, ioArgs);
    };

    var serviceUrl = createUrl("/services/Email.svc/json/SendToSupport", false);
    dojo.xhrPost
                    (
                        {
                            iframeProxyUrl: createUrl("/Content/js/dojo-release-1.1.0rc2-src/dojox/io/proxy/xip_server.html", false),
                            url: serviceUrl,
                            handleAs: "json",
                            timeout: timeout,
                            content: formData,
                            load: func,
                            error: funcErr
                        }
                    );
    //window.location = "/help.mvc";
}

showFormMessage = function(response, ioArgs) {
    var message = response.d;
    addNotifiers(message, ioArgs);
}            

HideSubscribeResponse = function() {
    var responseDiv = document.getElementById("SubscribeResponse");
    responseDiv.style.visibility = "hidden";
}
changeMenuClassName = function(element, oldName, newName) {
    if (!element)
        return;
    if (element.className && element.className.length > 0) {
        var nameMask = new RegExp(' *' + oldName);
        var newClassName = element.className.replace(nameMask, ' ' + newName);
        if (newClassName != element.className)
            element.className = newClassName;
    }
}
setFooterMenuItemText = function(menuItem) {
    var menuContainer = document.getElementById("MainFooter");
    if (menuContainer) {
        for (i = 0; i < menuContainer.childNodes.length; i++)
            if (menuContainer.childNodes[i]) {
            for (j = 0; j < menuContainer.childNodes[i].childNodes.length; j++) {
                var currentMenuItem = menuContainer.childNodes[i].childNodes[j];
                if (currentMenuItem.firstChild && currentMenuItem.firstChild.nodeValue == menuItem)
                    changeMenuClassName(currentMenuItem, "sfFootSingleLink", "sfFootSingleSelectedLink");
                else
                    changeMenuClassName(currentMenuItem, "sfFootSingleSelectedLink", "sfFootSingleLink");
            }
        }
    }
}
setMainMenuSelection = function() {
    var genreName = "";
    var hiddenGenreHame = dojo.byId("HiddenFooterName");
    if (hiddenGenreHame && hiddenGenreHame.firstChild)
        genreName = hiddenGenreHame.firstChild.nodeValue;
    setFooterMenuItemText(genreName);
}

clearMainMenuSelection = function() {
    setFooterMenuItemText("");
}

swapClassName = function(element, oldName, newName) {
    if (!element)
        return;
    if (element.className && element.className.length > 0) {
        var nameMask = new RegExp(' *' + oldName);
        var nameReplacement = newName;
        if (element.className.search(nameMask) == -1) {
            nameMask = new RegExp(' *' + newName);
            nameReplacement = oldName;
        }
        var newClassName = element.className.replace(nameMask, ' ' + nameReplacement);
        if (newClassName != element.className)
            element.className = newClassName;
    }
}

sortDropDownClick = function() {
    var menuItem = dojo.byId("sortDropDownMenu");
    swapClassName(menuItem, "invisibleItem", "visibleItem");
}

sortItemsClick = function(elem, sortDropDownText, selectedSortValue, dropdownUrl) {
    var textItem = dojo.byId(sortDropDownText);
    if (textItem && textItem.firstChild) {
        if (elem && elem.firstChild)
            textItem.firstChild.nodeValue = elem.firstChild.nodeValue;
        else
            textItem.firstChild.nodeValue = '';
    }
    var hiddenDivText = "";
    try {
        hiddenDivText = elem.childNodes[1].firstChild.nodeValue;
    }
    catch (e) { }
    var textValue = dojo.byId(selectedSortValue);
    textValue.value = hiddenDivText;
    if (elem && elem.parentNode && elem.parentNode.parentNode)
        changeMenuClassName(elem.parentNode.parentNode, "visibleItem", "invisibleItem");
    try {
        dropdownChanged(dropdownUrl, hiddenDivText);
    }
    catch (e) { }
}
getEventSource = function(event) {
    if (!event)
        return null;
    var eventSource;
    if (typeof (event.target) != "undefined")
        eventSource = event.target;
    else if (typeof (event.srcElement) != "undefined")
        eventSource = event.srcElement;
    return eventSource;
}
sortListBoxBlur = function(event) {
    if (!event)
        return;
    var hiddenName = dojo.byId("hiddenDropDownLabelName");
    var spaceField = new RegExp(" ");
    var hiddenId1;
    var hiddenId2;
    if (hiddenName && hiddenName.firstChild && hiddenName.firstChild.nodeValue &&
			            spaceField.test(hiddenName.firstChild.nodeValue)) {
        hiddenId1 = RegExp.leftContext;
        hiddenId2 = RegExp.rightContext;
    }
    var eventSource = getEventSource(event);
    if (eventSource &&
			            (eventSource.id == "sortDropDownArrow" || eventSource.id == "sortDropDownTextWrapper" ||
			            eventSource.id == hiddenId1 || eventSource.id == hiddenId2))
        return;
    var menuItem = dojo.byId("sortDropDownMenu");
    if (menuItem)
        changeMenuClassName(menuItem, "visibleItem", "invisibleItem");
}
isUserLoggedIn = function() {
var cookieString = dojo.cookie("SessionId");
    return (cookieString != null && cookieString.length > 0);
}
showPromoBorder = function(parent, className, showMode) {
    if (parent.className && parent.className.indexOf(className, 0) >= 0) {
        var newShowMode = (showMode) ? "block" : "none";
        if (parent.style.display != newShowMode) {
            parent.style.display = newShowMode;
        }
        return true;
    }
    for (var i = 0; i < parent.childNodes.length; i++) {
        if (showPromoBorder(parent.childNodes[i], className, showMode))
            return true;
    }
    return false;
}
setStarRating = function(parent, rating, yellowClass, grayClass, whiteClass, halfWhiteClass) {
    if (!isUserLoggedIn())
        return;
    var starCount = 0;
    for (var i = 0; i < parent.childNodes.length; i++)
        if (parent.childNodes[i].tagName == "DIV") {
        if (rating >= 100) {
            var tempRating = rating - 100;
            parent.childNodes[i].className = (starCount < tempRating) ? yellowClass : grayClass;
        }
        else
            parent.childNodes[i].className = (starCount + 1 < rating) ? whiteClass :
                (starCount < rating) ? halfWhiteClass : grayClass;
        starCount++;
    }
}
storeStarRating = function(parent, rating) {
    if (!isUserLoggedIn())
        return false;
    for (var i = 0; i < parent.childNodes.length; i++)
        if (parent.childNodes[i].tagName == "INPUT") {
        parent.childNodes[i].value = rating;
        return true;
    }
    return true;
}
restoreStarRating = function(parent, yellowClass, grayClass, whiteClass, halfWhiteClass) {
    var storedRating = 0;
    for (var i = 0; i < parent.childNodes.length; i++)
        if (parent.childNodes[i].tagName == "INPUT") {
        storedRating = parseFloat(parent.childNodes[i].value);
    }
    setStarRating(parent, storedRating, yellowClass, grayClass, whiteClass, halfWhiteClass);
}
carouselRemoveItem = function(elem, pageSize) {
    try {
        var topMostParent = jQuery(elem).parents('.jcarousel-container');
        var removeDest = jQuery(elem).parents('.jcarousel-item').empty().toggleClass('jcarousel-item-placeholder', true);
        topMostParent.find('.jcarousel-item:last').after(removeDest.clone());
        removeDest.remove();
        var emptyItems = topMostParent.find('.jcarousel-item-placeholder');
        if (emptyItems.length < pageSize)
            return false;
        var dataItems = topMostParent.find('.jcarousel-item:not(.jcarousel-item-placeholder)');
        if (dataItems.length <= pageSize)
            topMostParent.find('.jcarousel-navigation').remove();
        else
            topMostParent.find('.jcarousel-control-element:last').remove();
        if (dataItems.length > 0) {
            var childWidth = topMostParent.find('.jcarousel-item').outerWidth(true);
            var itemHolder = topMostParent.find('.jcarousel-content-holder');
            itemHolder.width(dataItems.length * childWidth);
            if (topMostParent.find('.jcarousel-control-element-selected').length == 0) {
                topMostParent.find('.jcarousel-control-element:last').toggleClass('jcarousel-control-element-selected', true);
                var startPage = topMostParent.find('.jcarousel-control-element').length - 1;
                if (startPage < 0)
                    startPage = 0;
                emptyItems.remove();
                itemHolder.animate({ left: (-startPage * pageSize * childWidth) + 'px' }, "fast");
                return false;
            }
        }
        emptyItems.remove();
        return false;
    }
    catch (e) {
        return false;
    }
}
jQueryCarouselNext = function(elem, pageSize) {
    try {
        if (jQuery(elem).hasClass('jcarousel-next-disabled'))
            return false;
        elem.className = "jcarousel-next-disabled";
        var topMostParent = jQuery(elem).parents('.jcarousel-container');
        var childWidth = topMostParent.find('.jcarousel-item').outerWidth(true);
        var itemHolder = topMostParent.find('.jcarousel-content-holder');
        var newPosition = itemHolder.position().left;
        if (itemHolder.width() >= -newPosition + childWidth * pageSize) {
            var prevNav = topMostParent.find('.jcarousel-prev-disabled').get(0);
            if (prevNav)
                prevNav.className = "jcarousel-prev";
            topMostParent.find('.jcarousel-control-element-selected').
                toggleClass('jcarousel-control-element-selected', false);
            newPosition -= childWidth * pageSize;
            topMostParent.find('.jcarousel-control-element:eq(' + (-newPosition / (childWidth * pageSize)) + ')').toggleClass('jcarousel-control-element-selected', true);
            itemHolder.animate({ left: newPosition + 'px' }, "fast");
        }
        if (itemHolder.width() > -newPosition + childWidth * pageSize)
            elem.className = "jcarousel-next";
        return false;
    }
    catch (e) {
        return false;
    }
}
jQueryCarouselPrev = function(elem, pageSize) {
    try {
        if (jQuery(elem).hasClass('jcarousel-prev-disabled'))
            return false;
        elem.className = "jcarousel-prev-disabled";
        var topMostParent = jQuery(elem).parents('.jcarousel-container');
        var childWidth = topMostParent.find('.jcarousel-item').outerWidth(true);
        var itemHolder = topMostParent.find('.jcarousel-content-holder');
        var newPosition = itemHolder.position().left;
        if (-newPosition >= childWidth * pageSize) {
            var prevNav = topMostParent.find('.jcarousel-next-disabled').get(0);
            if (prevNav)
                prevNav.className = "jcarousel-next";
            topMostParent.find('.jcarousel-control-element-selected').
                toggleClass('jcarousel-control-element-selected', false);
            newPosition += childWidth * pageSize;
            topMostParent.find('.jcarousel-control-element:eq(' + (-newPosition / (childWidth * pageSize)) + ')').toggleClass('jcarousel-control-element-selected', true);
            itemHolder.animate({ left: newPosition + 'px' }, "fast");
        }
        if (-newPosition >= childWidth * pageSize)
            elem.className = "jcarousel-prev";
        return false;
    }
    catch (e) { return false; }
}
jCarouselSetPage = function(elem, pageId, pageSize) {
    try {
        var topMostParent = jQuery(elem).parents('.jcarousel-container');
        var childWidth = topMostParent.find('.jcarousel-item').outerWidth(true);
        var itemHolder = topMostParent.find('.jcarousel-content-holder');
        var newPosition = -childWidth * pageId;
        topMostParent.find('.jcarousel-control-element-selected').
                toggleClass('jcarousel-control-element-selected', false);
        jQuery(elem).toggleClass('jcarousel-control-element-selected', true);
        var prevElement = topMostParent.find('.jcarousel-prev-disabled,.jcarousel-prev').get(0);
        if (prevElement)
            prevElement.className = (-newPosition < childWidth * pageSize) ? "jcarousel-prev-disabled" : "jcarousel-prev";
        var nextElement = topMostParent.find('.jcarousel-next-disabled,.jcarousel-next').get(0);
        if (nextElement)
            nextElement.className = (itemHolder.width() <= -newPosition + childWidth * pageSize) ?
                "jcarousel-next-disabled" : "jcarousel-next";
        itemHolder.animate({ left: newPosition + 'px' }, "fast");
        return false;
    }
    catch (e) { return false; }
}
initJQueryCarousel = function(id) {
    try {
        var parentElement = jQuery('#' + id);
        var controlContent = parentElement.find('.jcarousel-control-content');
        if (controlContent.length > 0) {
            var contentElement = controlContent.find('.jcarousel-control-element');
            controlContent.css("width", (contentElement.outerWidth(true) * contentElement.length) + "px");
        }
        var contentHolder = parentElement.find('.jcarousel-content-holder');
        var contentItems = contentHolder.find('.jcarousel-item');
        contentHolder.css("width", (contentItems.outerWidth(true) * contentItems.length) + "px");
        contentHolder.css("height", contentItems.outerHeight(true) + "px");
        parentElement.find('.jcarousel-clip').css("height", contentHolder.outerHeight(true) + "px");
    }
    catch (e) { }
}
multyimageNext = function(elem) {
    try {
        var topDiv = jQuery(elem.parentNode.parentNode);
        var selectedImage = topDiv.find('.multyimageSelectedItem');
        var nextImage = selectedImage.next().filter('.multyimageItem');
        if (nextImage.length > 0) {
            if (nextImage.next().filter('.multyimageItem').length == 0)
                jQuery(elem).toggleClass('jcarousel-next-disabled', true);
            topDiv.find(".jcarousel-control-element").filter('.jcarousel-control-element-selected').toggleClass('jcarousel-control-element-selected', false).
                next().filter(".jcarousel-control-element").toggleClass('jcarousel-control-element-selected', true);
            topDiv.find('.multyimage-prev').toggleClass('jcarousel-prev-disabled', false);
            selectedImage.fadeOut("slow");
            nextImage.fadeIn("slow");
            selectedImage.toggleClass('multyimageSelectedItem', false);
            nextImage.toggleClass('multyimageSelectedItem', true);
        }
    }
    catch (e) { }
}
multyimagePrev = function(elem) {
    try {
        var topDiv = jQuery(elem.parentNode.parentNode);
        var selectedImage = topDiv.find('.multyimageSelectedItem');
        var nextImage = selectedImage.prev().filter('.multyimageItem');
        if (nextImage.length > 0) {
            if (nextImage.prev().filter('.multyimageItem').length == 0)
                jQuery(elem).toggleClass('jcarousel-prev-disabled', true);
            topDiv.find(".jcarousel-control-element").filter('.jcarousel-control-element-selected').toggleClass('jcarousel-control-element-selected', false).
                prev().filter(".jcarousel-control-element").toggleClass('jcarousel-control-element-selected', true);
            topDiv.find('.multyimage-next').toggleClass('jcarousel-next-disabled', false);
            selectedImage.fadeOut("slow");
            nextImage.fadeIn("slow");
            selectedImage.toggleClass('multyimageSelectedItem', false);
            nextImage.toggleClass('multyimageSelectedItem', true);
        }
    }
    catch (e) { }
}
multyImageSelect = function(elem, destNdx) {
    try {
        var topDiv = jQuery(elem.parentNode.parentNode.parentNode.parentNode);
        var imageList = topDiv.find('.multyimageItem');
        var controlList = topDiv.find('.jcarousel-control-element');
        if (controlList.length > destNdx && controlList.eq(destNdx).hasClass('jcarousel-control-element-selected'))
            return;
        var selectedImage = topDiv.find('.multyimageSelectedItem');
        for (var i = 0; i < controlList.length; i++) {
            var currentImage = imageList.eq(i);
            var currentControl = controlList.eq(i);
            if (i == destNdx) {
                currentImage.toggleClass('multyimageSelectedItem', true);
                currentControl.toggleClass('jcarousel-control-element-selected', true);
                selectedImage.fadeOut("slow");
                currentImage.fadeIn("slow");
            }
            else {
                currentImage.toggleClass('multyimageSelectedItem', false);
                currentControl.toggleClass('jcarousel-control-element-selected', false);
            }
        }
        topDiv.find('.multyimage-prev').toggleClass('jcarousel-prev-disabled', (destNdx == 0));
        topDiv.find('.multyimage-next').toggleClass('jcarousel-next-disabled', (destNdx >= controlList.length - 1));
    }
    catch (e) { }
}
multyImageLoadImage = function(elem, doCheckSize) {
    try {
        var multyimageItem = jQuery(elem.parentNode);
        if (!multyimageItem.hasClass('multyimageItem'))
            multyimageItem = multyimageItem.parent();
        if (doCheckSize) {
            try {
                if (elem.complete) {
                    var tempImage = new Image();
                    tempImage.src = elem.src;
                    if (tempImage.width != multyimageItem.width() || tempImage.height != multyimageItem.height()) {
                        return;
                    }
                }
                else {
                    window.setTimeout(function() {
                        multyImageLoadImage(elem, doCheckSize);
                    }, 500);
                    return;
                }
            }
            catch (e) { }
        }
        multyimageItem.hide();
        jQuery(elem).toggleClass('transparentImage');
        if (multyimageItem.hasClass('multyimageSelectedItem'))
            multyimageItem.fadeIn('slow');
    }
    catch (e) { }
}
downloadParamClick = function(elem) {
    try {
        var topParent = jQuery(elem).parents('.thumbContainer');
        var submenu = topParent.find('.downloadParamSubmenu');
        if (submenu.is(':visible'))
            submenu.fadeOut("fast");
        else {
            var upperMenu = topParent.find('.downloadParamMenu');
            var upperMenuPosition = upperMenu.offset();
            var containerOffset = topParent.offset();
            submenu.css({ "left": (upperMenuPosition.left - containerOffset.left) + "px", "top": (upperMenuPosition.top - containerOffset.top) + upperMenu.outerHeight() + "px" });
            submenu.fadeIn("fast");
        }
    }
    catch (e) { }
}
selectDownloadParamClick = function(elem) {
    try {
        var parentMenu = jQuery(elem).parents('.downloadParamSubmenu');
        var mostParent = parentMenu.parents('.thumbContainer');
        var prevMenu = mostParent.find('.downloadParamMenuSelected');
        var prevMenuElem = prevMenu.get(0);
        if (prevMenuElem)
            prevMenu.find('.downloadParamMenuSelectedText').text(jQuery(elem).text());
        parentMenu.fadeOut("fast");
    }
    catch (e) { }
}
containsPoint = function(event, elem) {
    var posX = 0;
    var posY = 0;
    if (event.pageX || event.pageY) {
        posX = event.pageX;
        posY = event.pageY;
    }
    else if (event.clientX || event.clientY) {
        posX = event.clientX + document.body.scrollLeft
            + document.documentElement.scrollLeft;
        posY = event.clientY + document.body.scrollTop
            + document.documentElement.scrollTop;
    }
    var elemOffset = elem.offset();
    if (posX < elemOffset.left || posX >= elemOffset.left + elem.width())
        return false;
    if (posY < elemOffset.top || posY >= elemOffset.top + elem.height())
        return false;
    return true;
}
hideDownloadParam = function(elem, event) {
    try {
        event = window.event || event;
        var parentElement = jQuery(elem);
        if (parentElement.find('.downloadParamSubmenu:visible').length > 0) {
            var paramMenu = parentElement.find('.downloadParamMenu');
            var paramSubMenu = parentElement.find('.downloadParamSubmenu');
            if (!containsPoint(event, paramSubMenu) && !containsPoint(event, paramMenu))
                parentElement.find('.downloadParamSubmenu:visible').fadeOut("fast");
        }
    }
    catch (e) { }
}
