// image preloader
jQuery.preloadImages = function() {
    for(var i = 0; i<arguments.length; i++) {
        jQuery("<img>").attr("src", arguments[i]);
    }
}

function MM_preloadImages() { //v3.0
    var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
        if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
    var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
    var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
        d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
    if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
    if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
    var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
        if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function openWindowCentred(link, window_name, width, height, resizable, scrollbars) {
    return window.open(link, window_name, 'toolbar=no,location=no,status=no,menubar=0,scrollbars=' + scrollbars + ',resizable='+resizable + ',height=' + height + ',width=' + width + ',top=' + (screen.height-height) / 2 + ',left='+(screen.width - width) / 2 + ',copyhistory=no');
}

// see http://stackoverflow.com/questions/979975/how-to-get-the-value-from-url-parameter
var QueryString = function () {
    // This function is anonymous, is executed immediately and 
    // the return value is assigned to QueryString!
    var query_string = {};
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    for (var i=0;i<vars.length;i++) {
        var pair = vars[i].split("=");
        // If first entry with this name
        if (typeof query_string[pair[0]] === "undefined") {
            query_string[pair[0]] = pair[1];
            // If second entry with this name
        } else if (typeof query_string[pair[0]] === "string") {
            var arr = [ query_string[pair[0]], pair[1] ];
            query_string[pair[0]] = arr;
            // If third or later entry with this name
        } else {
            query_string[pair[0]].push(pair[1]);
        }
    } 
    return query_string;
} ();

function showAjaxDivOverlay(selector) {
    $(selector).block({
        message: '<img src="/assets/images/ajax-loader.gif" alt="" />',
        css: {
            border: 'none',
            width: '32px',
            height: '32px',
            backgroundColor: 'transparent'
        },
        overlayCSS: {
            opacity: 0.1
        }
    });
}

function removeAjaxDivOverlay(selector) {
    $(selector).unblock();
}

function updateCart() {
    var formData = $('form[name="frmOrder"]').serialize();
    $.ajax({
        type: 'POST',
        async: true,
        url: '/fr/commander/commande/update-cart',
        cache: false,
        data: formData,
        dataType: 'text',
        success: function(retval) {
            updateSubtotal(retval);
        }
    });
}

function updateShowCart(callback) {
    showAjaxDivOverlay('#cart-display');
    var data = $('form[name="frmSommaire"]').serialize();
    $.ajax({
        type: 'POST',
        url: '/fr/commander/commande/update-cart',
        cache: false,
        dataType: 'html',
        data: data,
        async: true,
        success: function(retval) {
            $('#cart-display').html(retval);
            removeAjaxDivOverlay('#cart-display');
            if (callback != undefined) {
                callback();
            }
        }
    });
}

function goToPaymentPage() {
    var url = '/fr/commander/paiement';
    if (QueryString.fetes != undefined) {
        url += '?fetes=1';
    }
    location.href = url;
}

function updateSubtotal(subtotal) {
    if (subtotal === null) {
        // initialize display of subtotal
        $.get('/fr/commander/commande/update-cart', null, function(data) {
            updateSubtotal(data);
        }, 'text');
    }
    $('#commande-subtotal').html(subtotal);
}

function updateDeliveryAddressInfo() {
    showAjaxDivOverlay('#delivery-address-info');
    var data = $('form[name="frmDelivery"]').serialize();
    $.post('/fr/commander/livraison/update-delivery-address', data, function(data) {
        $('#delivery-address-info').html(data);
        removeAjaxDivOverlay('#delivery-address-info');
        $('#delivery-address-info').css('height','auto');
    }, 'html');
}

function updateBillingProvince()
{
    var country_code = $('#billing-country').val();
    $.getJSON('/fr/tools/get-provinces?code=' + country_code, function(data) {
        var options = '';
        $.each(data, function(i,j) {
            options += '<option value="' + j.province_code + '">' + j.province_name + '</option>';
        });
        $('select#billing-province').html(options);
    });
}

function initializeGMap()
{
    var latlng = new google.maps.LatLng(45.502345, -73.417381);
    var myOptions = {
        zoom: 15,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        mapTypeControl: true,
        mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}
    };
    var map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);
    
    var contentString = '<div id="content">' +
        '<strong>Jean Bouffe</strong><br />' +
        '5503, Chemin de Chambly<br />' +
        'St-Hubert, QC&nbsp;&nbsp;J3Y 3P4<br />' +
        '</div>';
    
    var infowindow = new google.maps.InfoWindow({
        content: contentString
    });
    
    var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        title: "Jean Bouffe"
    });
    
    google.maps.event.addListener(marker, 'click', function() {
        infowindow.open(map, marker);
    });
}

$(document).ready(function() {
    MM_preloadImages('/assets/images/nav_menu_over.gif','/assets/images/nav_commander_over.gif','/assets/images/nav_fonctionnement_over.gif','/assets/images/nav_entreprise_over.gif');

    // refresh CAPTCHA image
    $('#captcha-refresh').click(function() {
        var date = new Date();
        $('#captcha-image').attr('src', '/assets/other/securimage.php?sid=' + date.getTime());
        return false;
    });

    // manage "default texts" for header login form
    $('.default-text').focus(function() {
        if ($(this).val() == $(this)[0].title) {
            $(this).removeClass('default-text-active');
            $(this).val('');
        }
    });
    $('.default-text').blur(function() {
        if ($(this).val() == '') {
            $(this).addClass('default-text-active');
            $(this).val($(this)[0].title);
        }
    });
    $('.default-text').blur();

    $('#password-clear').show();
    $('#password-password').hide();
    $('#password-clear').focus(function() {
        $('#password-clear').hide();
        $('#password-password').show();
        $('#password-password').focus();
    });
    $('#password-password').blur(function() {
        if ($('#password-password').val() == '') {
            $('#password-clear').show();
            $('#password-password').hide();
        }
    });

    // update shopping cart subtotal
    $('.update-cart').bind('keyup', updateCart);
/*
    $('.qty').autotab({
        format: 'numeric'
    });
*/
    $('.postal-code').autotab({
        format: 'alphanumeric',
        maxlength: 6,
        uppercase: true,
        nospace: true
    });

    // error dialogs
    $('#error-dialog').dialog({
        bgiframe: true,
        modal: true,
        buttons: {
            OK: function() {
                $(this).dialog('close');
            }
        }
    });

    // initialize display of order subtotal
    updateSubtotal(null);
});
