/**
* @author Fredrik
*/

// target="_blank" function for valid xhtml
function externalLinks() {
    if (!document.getElementsByTagName) {
        return;
    }

    var anchors = document.getElementsByTagName("a");
    for (var i = 0; i < anchors.length; i++) {
        var anchor = anchors[i];
        if (anchor.getAttribute("href") &&
		anchor.getAttribute("rel") == "external")
            anchor.target = "_blank";
    }
}
window.onload = externalLinks;

/*********** Fullpost flikar *****************/
function CreateProductTabs(productTabs, options) {
    $(productTabs)
	 .cycle({
	     fx: 'fade', //fade
	     speed: 0,
	     timeout: options.timeout != null ? options.timeout : 0,
	     pager: '.tabs',
	     slideExpr: 'div',
	     pagerEvent: 'click',
	     height: 'auto',
	     cleartype: true,
	     cleartypeNoBg: true,
	     pagerAnchorBuilder: function(idx, slide) {
	         //return selector string for existing anchor
	         return '.tabs a:eq(' + idx + ')';
	     }
	 });
};


// Image hover || Sprite function vertical image.



function ShowFancybox(headline, text, cssclass, showOverlay) {
    $h3 = $('<h3/>').append(headline);
    $cont = $('<div/>').append($h3).append(text);
    $('#fancybox_content').empty().css('display', 'block').addClass(cssclass).append($cont);
    var showOverlay = (showOverlay == null || showOverlay == undefined) ? true : showOverlay;
    $('#fancybox_trigger').fancybox({
        'hideOnContentClick': false,
        'overlayShow': showOverlay,
        onComplete: function() {
            setTimeout('ResizeFancybox()', 0);
        },
        onClosed: function() {
            $('#fancybox_content').hide().removeClass();
        }
    }).trigger('click');

}
function ResizeFancybox() {
    $.fancybox.resize();
}
function ShowFancyboxNotification(headline, text, cssclass) {
    $h3 = $('<h3/>').append(headline);
    $cont = $('<div/>').append($h3).append(text);
    $('#fancybox_content').empty().css('display', 'block').addClass(cssclass).append($cont);
    $('#fancybox_trigger').fancybox({
        'hideOnContentClick': false,
        onClosed: function() {
            $('#fancybox_content').hide().removeClass();
        }
    }).trigger('click');
}

function ShowFancyboxAddedProduct(url, cssclass, selector, callback) {
    $fancyBoxContent = null;

    $.ajax({
        url: url,
        xhr: function() {
            if ($.browser.msie && $.browser.version.substr(0, 1) <= 7)
                return new ActiveXObject("Microsoft.XMLHTTP");
            else
                return new XMLHttpRequest();
        },
        beforeSend: function() {
            $fancyBoxContent = PrepareFancybox('popup-product-added');
        },
        success: function(result) {
            $content = $(result).find('#popup_product_added');

            $psa_opt_country = $content.find('div#pap_select_wrapper ul#pap_select_wrapper_ul li select.pap_select_country');

            $pap_input_email = $content.find('div#pap_select_wrapper ul#pap_select_wrapper_ul li input#pap_get_customer_by_email');
            var exclude = $pap_input_email.val();
            $a_confirm = $content.find('div#pap_select_wrapper ul#pap_confirm_wrapper_ul li a#pap_confirm'); // note: a_confirm pap_confirm

            var errorCallback = function(errorHeadline, errorList) {
                $('#errorMsgContainer').empty().append($('<h3/>').text(errorHeadline)).append(errorList).show();
                $.fancybox.resize();
                $("#fancybox-wrap").width(600);
                $("#fancybox-inner").width(580);
                $.fancybox.center();
            }

            var callback = function() {
                var emailExists = $pap_input_email.val().length > 0 && $pap_input_email.val() != exclude;
                var countrySelected = !$psa_opt_country.find('option[value="0"]').attr('selected');
                if (emailExists) {
                    $.fn.FetchCustomerByEmailProductAdded($pap_input_email.val(), errorCallback);
                } else if (countrySelected) {
                    var countryID = $psa_opt_country.find('option:selected').attr('value');
                    if ($(opt_country_cart) != null) {
                        $(opt_country_cart).SetInitialSelectedCountry(countryID);
                        var callback = function() {
                            var pageTypeID = $(val_pageTypeID).selector;
                            if (pageTypeID == 1 || pageTypeID == 2) {
                                $.fn.UpdatePage();
                            }
                        };
                        $.fn.SetSelectedCountry(countryID, callback);
                        $.fancybox.close();
                    }
                } else {
                    // todo: show error
                }
            };
            var reqs = [
			    { "Elements": [{ "Element": "#pap_get_customer_by_email"}], "Requirements": [{ "Type": "RegEx", "Requirement": $.fn.EmailPattern()}] },
			    { "Elements": [{ "Element": $psa_opt_country.selector}], "Requirements": [{ "Type": "OptInvalidValue", "Requirement": '0'}] }
			];
            $a_confirm.HasRequirements(reqs, callback, true);

            $a_close = $content.find('div#pap_select_wrapper ul#pap_confirm_wrapper_ul li a#pap_close');
            $a_close.bind('click', function() {
                $.fancybox.close();
            });

            $fancyBoxContent.empty().append($content);
            $.fancybox.resize();
            $("#fancybox-wrap").width(600);
            $("#fancybox-inner").width(580);
            $.fancybox.center();
        },
        error: function(err) {
            if (err.statusText == "abort") { return; }
        },
        complete: function() {
            if (callback != null) {
                callback.call();
            }
        }
    });
}

function ShowFancyboxSelectAddress(url, cssclass, selector, callback) {
    $fancyBoxContent = null;

    $.ajax({
        url: url,
        xhr: function() {
            if ($.browser.msie && $.browser.version.substr(0, 1) <= 7)
                return new ActiveXObject("Microsoft.XMLHTTP");
            else
                return new XMLHttpRequest();
        },
        beforeSend: function() {
            $fancyBoxContent = PrepareFancybox('popup-product-added');
        },
        success: function(result) {
            $content = $(result).find('#popup_select_address');

            $a_confirm = $content.find('div#select_address_wrapper ul#psa_confirm_wrapper_ul li a#psa_confirm');
            $content.find('#ul_select_address li:first input').attr('checked', true);

            var callback = function() {
                $input = $content.find('#select_address_wrapper ul#ul_select_address li input:checked');
                $.fn.SetAddressInformation($input.attr('rel'), false);
                $.fancybox.close();
            };
            var reqs2 = [
    			{
    			    "Elements":
    			        [{ "Element": '#ul_select_address', "AnimateElement": "#ul_select_address li label", "OrgBackgroundColor": "#808080"}],
    			    "Requirements":
    			        [{ "Type": "RadioButtons", "Requirement": true, "Selector": "li input"}]
    			}
			];
            $a_confirm.HasRequirements(reqs2, callback, false);


            $a_close = $content.find('div#select_address_wrapper ul#psa_confirm_wrapper_ul li a#psa_close');
            $a_close.bind('click', function() {
                $.fancybox.close();
            });

            $fancyBoxContent.empty().append($content);

            $.fancybox.resize();
            $("#fancybox-wrap").width(600);
            $("#fancybox-inner").width(580);
            $.fancybox.center();
            setTimeout('$.fancybox.resize();', 300);
        },
        error: function(err) {
            if (err.statusText == "abort") { return; }
        },
        complete: function() {
            if (callback != null) {
                callback.call();
            }
        }
    });
}

function PrepareFancybox(cssclass) {
    $cont = $('<div/>').append($('<img/>').attr('alt', 'loading').attr('src', '/resources/img/ajax-loader-big-product.gif'));
    $('#fancybox_content').empty().css('display', 'block').addClass(cssclass).append($cont);
    $('#fancybox_trigger').fancybox({
        'hideOnContentClick': false,
        onClosed: function() {
            $('#fancybox_content').hide().removeClass();
        }
    }).trigger('click');
    $("#fancybox-wrap").width(70);
    $("#fancybox-wrap").height(50);
    $("#fancybox-inner").width(50);
    return $('#fancybox_content');
}

function ShowFancyboxAndFade(headline, text, delay, cssclass, showOverlay) {
    ShowFancybox(headline, text, cssclass, showOverlay);
    setTimeout('HideFancyboxText();', delay);
}

function HideFancyboxText() {
    $.fancybox.close();
}

function CreateULErrorList(ulclass, liclass, errors) {
    var list = $('<ul/>').addClass(ulclass);

    $.each(errors, function() {
        list.append($('<li/>').addClass(liclass).append(this.toString()));
    });

    return list;
}

function CreateULList(ulclass, liclass, listOfStringItems) {
    var list = $('<ul/>').addClass(ulclass);

    $.each(listOfStringItems, function() {
        list.append($('<li/>').addClass(liclass).append(this.toString()));
    });

    return list;
}

function AnimateBackground(element, fadeColor, fadeTime, fadeBackColor, fadeBackTime) {
    $(element).animate({ backgroundColor: fadeColor }, fadeTime, 0, function() { $(element).animate({ backgroundColor: fadeBackColor }, fadeBackTime); });
}

function ShowHideCart() {
    $cart = $('#cart_wrapper');
    if ($cart.is(':hidden')) {
        $cart.slideDown('medium');
    }
    else {
        $cart.slideUp('medium');
    }
}

function ShowHideElement(element, sender, textWhileOpen, textWhileClosed) {
    $content = $(element);
    if ($(element).is(':hidden')) {
        $content.slideDown('medium');
        if (sender != null && textWhileOpen != null) {
            $(sender).text(textWhileOpen);
        }
    }
    else {
        $content.slideUp('medium');
        if (sender != null && textWhileOpen != null) {
            $(sender).text(textWhileClosed);
        }
    }
}

function OverrideEnterKeypress(input, anchor) {
    $(input).keypress(function(e) {
        if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
            setTimeout('$(\'' + $(anchor).selector + '\').click();', 10);
            return false;
        } else {
            return true;
        }
    });
}

function SetSwapValue() {
    swapValues = [];
    $(".swap_value").each(function(i) {
        swapValues[i] = $(this).val();
        $(this).focus(function() {
            if ($(this).val() == swapValues[i]) {
                $(this).val("");
            }
        }).blur(function() {
            if ($.trim($(this).val()) == "") {
                $(this).val(swapValues[i]);
            }
        });
    });
}

function IsDefined(variable) {
    return (typeof (window[variable]) == "undefined") ? false : true;
}

function ReplaceIllegalChars(str) {
    str = str.replace(/\n/g, "<br />");
    str = str.replace(/\"/g, "");
    return str;
}

function EnterToTab(wrapperSelector) {
    $(wrapperSelector + ' input').live("keypress", function(e) {
        //ENTER PRESSED
        if (e.keyCode == 13) {
            //return false;
            //FOCUS ELEMENT
            var inputs = $(this).parents(wrapperSelector).eq(0).find(":input");
            var idx = inputs.index(this);

            if (idx == inputs.length - 1) {
                inputs[0].select();
            } else {
                try {
                    inputs[idx + 1].focus(); //  handles submit buttons
                    inputs[idx + 1].select();
                }
                catch (err) {
                    //                alert(err);
                }
            }
            return false;
        }
    });
}
/*$('input').live("keypress", function(e) {
//ENTER PRESSED
if (e.keyCode == 13) {
//FOCUS ELEMENT
var inputs = $(this).parents("form").eq(0).find(":input");
var idx = inputs.index(this);

if (idx == inputs.length - 1) {
inputs[0].select()
} else {
inputs[idx + 1].focus(); //  handles submit buttons
inputs[idx + 1].select();
}
return false;
}
});*/

String.prototype.format = function() {
    var formatted = this;
    for (var i = 0; i < arguments.length; i++) {
        var regexp = new RegExp('\\{' + i + '\\}', 'gi');
        formatted = formatted.replace(regexp, arguments[i]);
    }
    return formatted;
};

function CreateZebra(container, evenCss, oddCss) {
    $(container).removeClass(evenCss).removeClass(oddCss);
    $(container + ':even').addClass(evenCss);
    $(container + ':odd').addClass(oddCss);
};

function ShowFancyboxWithLinks(headline, text, delay, cssclass, showOverlay, linkText, linkUrl) {
    $h1 = $('<h1/>').append(headline);
    $par = $('<p/>').append(text);
    $cont = $('<div/>').append($h1).append($par);

    $links = $('<ul/>').addClass('links clearfix');
    $links.append($('<li/>').addClass('left back').append($('<a/>').attr('href', 'javascript:HideFancyboxText();').addClass('button left green').html('Forts&auml;tt handla<span></span>')));
    $links.append($('<li/>').addClass('right to-checkout').append($('<a/>').attr('href', linkUrl).addClass('button right green').html(linkText + '<span></span>')));
    $cont.append($links);

    $('#fancybox_content').empty().css('display', 'block').addClass(cssclass).append($cont);

    $("#fancybox_trigger").fancybox({
        'hideOnContentClick': false,
        'hideOnOverlayClick': false,
        onClosed: function() {
            $('#fancybox_content').hide();
        }
    }).trigger('click');
    setTimeout('HideFancyboxText();', delay);
}
