﻿/*************************************************
* JQuery funktion för att implementera inläsning *
* av extern sida genom AJAX.                     *
**************************************************
* Copyright © H.Fogelberg, Cykelkraft AB, 2009   *
**************************************************/

jQuery.fn.AjaxClick = function(jwriterUrl, id, loadingtext) 
{
    try
    {
    $(this).click(function(event)
    {
        // hämta data
        if($(this).attr("rel") != null)
        {
            CreateWaitingLayer(loadingtext);
            
            var loc = window.location.toString();
            window.location = loc.replace('#top', '') + "#top";
            
            // hämta moduler som ska gömmas genom ajax.
            if(jwriterUrl != null && jwriterUrl != '')
            {
                //$.get(jwriterUrl, function(data) 
                $.ajax({ url: jwriterUrl, cache:false, success: function(data)
                {
                    hide_script = data;
                }});
            }

            //$.get($(this).attr("rel"), function(data)
            $.ajax({ url: $(this).attr("rel"), cache:false, success: function(data) {
                $('.contentPanel .ajaxloader').css({'display' : 'none'});
                $('.FaceBoxPopupBG').height(0);

                $(id).html(data + hide_script);
                $(id).css({'visibility' : 'visible'});
                
                $('.FaceBoxPopupBG').css({'visibility' : 'hidden'});
                $('a[rel*=facebox]').facebox();
            }});
        }
        
        if($(this).attr("href") == $(this).attr("rel"))
            event.preventDefault();
    });
    }
    
    catch(err) {};
}

jQuery.fn.AjaxPopupClick = function(jwriterUrl, id, loadingtext) 
{
    try
    {
    $(this).click(function(event)
    {
        var hide_script = '';
        
        // hämta data
        if($(this).attr("rel") != null)
        {
            CreateWaitingLayer(loadingtext);

            // hämta moduler som ska gömmas genom ajax.
            if(jwriterUrl != null && jwriterUrl != '')
            {
                $.ajax({ url: jwriterUrl, cache:false, success: function(data)
                {
                    hide_script = data;
                }});
            }

            //$.get($(this).attr("rel"), function(updateurl) 
            $.ajax({ url: $(this).attr("rel"), cache:false, success: function(updateurl)
            { 
                if(updateurl != null)
                {
                    //$.get(updateurl, function(data) 
                    $.ajax({ url: updateurl, cache:false, success: function(data)
                    {            
                        $('.contentPanel .ajaxloader').html(data); //.css({'display' : 'none'});
                        $('.FaceBoxPopupBG').height(0);

                        $(id).html(data + hide_script);
                        $(id).css({'visibility' : 'visible'});
                        
                        $('.FaceBoxPopupBG').css({'visibility' : 'hidden'});
                        $('a[rel*=facebox]').facebox();
                    }});
                 }
            }});
        }
        
        if(this.href == $(this).attr("rel"))
            event.preventDefault();
    });
    }
    
    catch(err) {};
}

jQuery.fn.AjaxClickBySearch = function(jwriterUrl, id, loadingtext) 
{
    try
    {
    $(this).click(function(event)
    {
        var hide_script = '';
        
        // hämta data
        if($(this).attr("rel") != null)
        {
            CreateWaitingLayer(loadingtext);
            
            var loc = window.location.toString();
            window.location = loc.replace('#top', '') + "#top";

            // hämta moduler som ska gömmas genom ajax.
            if(jwriterUrl != null && jwriterUrl != '')
            {
                $.ajax({ url: jwriterUrl, cache:false, success: function(data)
                {
                    hide_script = data;
                }});
            }

            //$.get($(this).attr("rel"), function(data) 
            $.ajax({ url: $(this).attr("rel"), cache:false, success: function(data)
            { 
                $('.contentPanel .ajaxloader').css({'display' : 'none'});
                $('.FaceBoxPopupBG').height(0);
                
                $(id).html(data + hide_script);
                $(id).css({'visibility' : 'visible'});
                
                $('.FaceBoxPopupBG').css({'visibility' : 'hidden'});
                $('a[rel*=facebox]').facebox();
            }});
        }
       
        event.preventDefault();
    });        
    }
    
    catch(err) {};
}

jQuery.fn.AjaxClickByFragmentButton = function(defaultpagepath, modulename, id, urlprefix, externalmoduleurl, externalmoduleid, openbypopup, loadingtext, isshowbypaymentmodule, paymentFunctionErrorCheckUrl, type)
{
    try
    {
    $(this).click(function(event)
    {
        var value = '0';
        var popupdisplayprop = $('#facebox').css('display');
        
        if(id != '')
        {
            type = type | 0;
            
            if(type == 0)
            {
                value = $('#' + id).val();
                
                if(isNaN(value))
                {
                    alert("Felaktigt angivet antal, försök igen.");
                    return false;
                }
            }
                
            else if(type == 1)
            {
                var val = $('#' + id).val();
                value =  parseInt(val) + 1;
            }
                
            else if(type == 2)
            {
                var val = $('#' + id).val();
                
                if(val != '0')
                    value =  parseInt(val) - 1;
                    
                else
                    value =  parseInt(val);
            }

            if(isshowbypaymentmodule == "true")
                value += "&isshowbypaymentmodule=true"; 
        }
        
        if(openbypopup == "false")
            CreateWaitingLayer(loadingtext);
        
        $('.popupPanel .' + modulename + 'Panel').attr('disabled', 'disabled');
        
        $.ajax({ url: urlprefix + '?Value=' + value + '&popupProp=' + popupdisplayprop, cache:false, success: function(data)
        {
            if(data.indexOf('%NO_ITEMS_IN_BASKET%') != -1)
            {
                var split = data.split('|');
                window.location = split[1];
            }
            
            else
            {
                $('.popupPanel .' + modulename + 'Panel').attr('disabled', '');
            
                if(openbypopup == "true")
                    $('.popupPanel .' + modulename + 'Panel').html(data);
                
                else
                {
                    var parentName = $('.' + modulename).parent().attr("class");
                   
                    if(parentName != modulename + 'Panel')
                        $('.' + modulename + '_ref_module').html(data);
                    
                    else
                        $('.' + modulename + 'Panel').html(data);
                    
                    if(paymentFunctionErrorCheckUrl != '')
                    {
                        //$.get(paymentFunctionErrorCheckUrl, function(errortext)
                        $.ajax({ url: paymentFunctionErrorCheckUrl, cache:false, success: function(errortext)
                        {
                            if(errortext.length > 0)
                            {
                                $('.PaymentFunctionContainer .ErrorContainer').html(errortext);
                                $('.PaymentFunctionContainer .ErrorContainer').css({'display':'block'});
                            }
                            
                            else
                            {
                                $('.PaymentFunctionContainer .ErrorContainer').css({'display':'none'});
                            }
                            
                            var checkedPaymentFunction = $('.PaymentFunctions INPUT[type=radio]:checked').attr('value');
                            
                            $.ajax({ url: defaultpagepath + 'GetValidPaymentFunctions.do?PaymentFunction=' + checkedPaymentFunction, cache:false, success: function(script)
                            {
                                $('.PaymentFunctionContainer .ScriptPanel').html(script);
                                $('.contentPanel .ajaxloader').css({'display' : 'none'});
                                
                                $('.FaceBoxPopupBG').css({'visibility' : 'hidden'});
                                $('.FaceBoxPopupBG').height(0);
                                
                                $('a[rel*=facebox]').facebox();
                                
                            }});
                        }});
                    }
                    
                    else
                    {
                        $('.contentPanel .ajaxloader').css({'display' : 'none'});
                        
                        $('.FaceBoxPopupBG').css({'visibility' : 'hidden'});
                        $('.FaceBoxPopupBG').height(0);
                        
                        $('a[rel*=facebox]').facebox();
                    }
                }
                    
                if(externalmoduleurl != '')
                {
                    $.ajax({ url: externalmoduleurl, cache:false, success: function(externaldata)
                    {
                        $('.' + externalmoduleid + 'Panel').html(externaldata);
                    }});
                }
            }
        }});

        event.preventDefault();
    });
    }
    
    catch(err) {};
}


jQuery.fn.AjaxClickByUrl = function(url, id, loadingtext, value) 
{
    try
    {
    $('.SelectList').each(function() {
        $(this).val(value);
    });        

    $(this).change(function(event)
    {
        // hämta moduler som ska gömmas genom ajax.
        if(url != null && url != '')
        {
            CreateWaitingLayer(loadingtext);
            var value = $(this).val();
            
            //$.get(url + '&value=' + $(this).val(), function(updateurl) 
            $.ajax({ url: url + '&value=' + $(this).val(), cache:false, success: function(updateurl)
            {
                if(updateurl != null)
                {
                    //$.get(updateurl, function(data) 
                    $.ajax({ url: updateurl, cache:false, success: function(data)
                    {
                        $('.contentPanel .ajaxloader').css({'display' : 'none'});
                        
                        $(id).html(data);
                        $(id).css({'visibility' : 'visible'});
                        
                        $('.FaceBoxPopupBG').css({'visibility' : 'hidden'});
                        $('.FaceBoxPopupBG').height(0);

                        $('a[rel*=facebox]').facebox();
                        $('.SelectList').each(function() {
                            $(this).val(value);
                        });        
                    }});
                }
            }});
        }
        
        event.preventDefault();
    });
    }
    
    catch(err) {};
}

jQuery.fn.AjaxClickByButton = function(jwriterUrl, urlprefix, urlsuffix, id, loadingtext, errormessage) 
{
    try
    {
    $(this).click(function(event)
    {
        var hide_script = '';
        
        // hämta moduler som ska gömmas genom ajax.
        //$.get(jwriterUrl, function(data) 
        $.ajax({ url: jwriterUrl, cache:false, success: function(data)
        {
            hide_script = data;
        }});
        
        CreateWaitingLayer(loadingtext);
        var data = GetWebFormUrl();
       
        data = data.replace(/\//g, '$SLASH$');
        data = data.replace(/\*/g, '$STAR$');
        data = data.replace(/\"/g, '$QUOTE$');
        data = data.replace(/\>/g, '$BIGGERTHAN$');
        data = data.replace(/\</g, '$LESSTHAN$');
        data = data.replace(/\./g, '$DOT$');
       
        if(data.indexOf('%') == -1 && data.indexOf('/') == -1 && data.indexOf('?') == -1 && data.indexOf('*') == -1 && data.indexOf('|') == -1 && data.indexOf('<') == -1 && data.indexOf('>') == -1)
        {
            // hämta data
            //$.get(urlprefix + data + urlsuffix, function(data) 
            $.ajax({ url: urlprefix + data + urlsuffix, cache:false, success: function(data)
            { 
                $('.contentPanel .ajaxloader').css({'display' : 'none'});
                $(id).html(data + hide_script);
                
                $(id).css({'visibility' : 'visible'});
                //$(id).css({'height' : 'auto'});
                
                $('.FaceBoxPopupBG').css({'visibility' : 'hidden'});
                $('.FaceBoxPopupBG').height(0);

                $('a[rel*=facebox]').facebox();
            }});
        }
        
        else
        {
            // hämta moduler som ska gömmas genom ajax.
            //$.get(jwriterUrl, function(data) 
            $.ajax({ url: jwriterUrl, cache:false, success: function(data)
            {
                $('.contentPanel .ajaxloader').css({'display' : 'none'});
                
                $(id).html(errormessage + data);
                $(id).css({'visibility' : 'visible'});
                //$(id).css({'height' : 'auto'});
                
                $('.FaceBoxPopupBG').css({'visibility' : 'hidden'});
                $('.FaceBoxPopupBG').height(0);

                $('a[rel*=facebox]').facebox();
            }});
        }
        
        event.preventDefault();
    });
    }
    
    catch(err) {};
}

function CreateWaitingLayer(loadingtext)
{
    $('.contentPanel').append('<div id="ajaxloader" class="ajaxloader"><span>' + loadingtext + '</span></div>');
    
    var pageWidth = getPageWidth() + 'px';
    var D = document;

    var pageHeight = Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );
    
    pageHeight = pageHeight + 'px';
    var ajaxloaderwidth = $('.contentPanel .ajaxloader span').css("width");
    
    /*if(ajaxloaderwidth == null || ajaxloaderwidth == undefined || ajaxloaderwidth == 'auto' || ajaxloaderwidth == 'inherit')
        ajaxloaderwidth = $('.contentPanel .ajaxloader span').css("width");*/
        
    if(ajaxloaderwidth == null || ajaxloaderwidth == undefined || ajaxloaderwidth == 'auto' || ajaxloaderwidth == 'inherit')
        ajaxloaderwidth = 0;
    
    $('.FaceBoxPopupBG').css({'width':pageWidth,'height':pageHeight, 'visibility' : 'visible'});
    $('.contentPanel .ajaxloader').css({'left' : (getPageWidth() / 2) - parseInt(ajaxloaderwidth) });
}

function CreateTextLayerByUrl(url)
{
    //$.get(url, function(data) 
    $.ajax({ url: url, cache:false, success: function(data)
    {
        CreateWaitingLayer(data);
    }});
}

function CreateTextLayer(loadingtext)
{
    $('.MessageLayer').append('<div id="ajaxloader" class="ajaxtext"><span>' + loadingtext + '</span></div>');

    var pageWidth = getPageWidth() + 'px';
    var D = document;

    var pageHeight = Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );
    
    pageHeight = pageHeight + 'px';
    var ajaxloaderwidth = $('.MessageLayer .ajaxtext span').width();
    
    if(ajaxloaderwidth == null || ajaxloaderwidth == undefined || ajaxloaderwidth == 'auto' || ajaxloaderwidth == 'inherit')
        ajaxloaderwidth = 6 * loadingtext.length;
    
    $('.FaceBoxPopupBG').css({'width':pageWidth,'height':pageHeight, 'visibility' : 'visible'});
    $('.MessageLayer .ajaxtext').css({'left' : (getPageWidth() / 2) - parseInt(ajaxloaderwidth) / 2 });
    
    $('.FaceBoxPopupBG').click(function() {
        $('.FaceBoxPopupBG').css({'visibility' : 'hidden'});
        $('.MessageLayer .ajaxtext').html('&nbsp;');
        $('.MessageLayer .ajaxtext').css({'visibility' : 'hidden'});
    });
}

function CreateTextLayerAndGoToUrl(loadingtext, url)
{
    $('.MessageLayer .Popup').html('<div id="ajaxloader" class="ajaxtext"><span>' + loadingtext + '</span></div>');

    var pageWidth = getPageWidth() + 'px';
    var D = document;

    var pageHeight = Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );
    
    pageHeight = pageHeight + 'px';
    var ajaxloaderwidth = $('.MessageLayer .ajaxtext span').width();
    
    if(ajaxloaderwidth == null || ajaxloaderwidth == undefined || ajaxloaderwidth == 'auto' || ajaxloaderwidth == 'inherit')
        ajaxloaderwidth = 6 * loadingtext.length;
    
    $('.FaceBoxPopupBG').css({'width':pageWidth,'height':pageHeight, 'visibility' : 'visible'});
    $('.MessageLayer .Popup .ajaxtext').css({'left' : (getPageWidth() / 2) - parseInt(ajaxloaderwidth) / 2 });
    
    $('.FaceBoxPopupBG').click(function() {
        $('.FaceBoxPopupBG').unbind('click');
        window.location = url;
    });
}

function CloseTextLayer()
{
    $('.FaceBoxPopupBG').css({'visibility' : 'hidden'});
    $('.MessageLayer .ajaxtext').html('&nbsp;');
    $('.MessageLayer .ajaxtext').css({'visibility' : 'hidden'});
}

function OpenInfoLayer(classname, text)
{
    $('.' + classname).html(text);
    $('.' + classname).css({'display':'block'});
    
    $('.contentPanel').click(function() {
        $('.' + classname).css({'display':'none'});
    });
}

function getPageWidth() 
{
    var windowWidth;

    if (self.innerWidth) 
        windowWidth = self.innerWidth;

    else if (document.documentElement && document.documentElement.clientWidth)
        windowWidth = document.documentElement.clientWidth;

    else if (document.body)
        windowWidth = document.body.clientWidth;

    return windowWidth - 2;
}



