/**
 * MAIN METHODS
 */

/**
 * setLocale - Sets the user's prefered language into a cookie
 * @param String locale: String representing the language of choice for the user.
 * 
 * Note: Jeff (20110111) - Languages are English (en - default) and Dutch (nl) 
 */
function setlocale(locale)
{
    var exp = new Date(); 
    var oneYearFromNow = exp.getTime() + (10 * 365 * 24 * 60 * 60 * 1000);                                                    
    exp.setTime(oneYearFromNow);
    document.cookie = "locale="+locale+"; expires=" + exp.toGMTString();
    location.reload(true);
}

/**
 * displayPopupMessage - Displays a sub-modal popup message
 * @param Array message: Array of elements to be inserted into the body of the message 
 */
function displayPopupMessage(message, images, buttons) {
    var shadow = $('<div></div>').attr('id', 'popupShadow').css('display', 'block');
    var popup = $('<div></div>').attr('id', 'popupMessage');
    var popupTop = $('<div></div>').attr('id', 'top').css('display', 'block');
    var popupBottom = $('<div></div>').attr('id', 'bottom').css('display', 'block');
    var popupColMask = $('<div></div>').addClass('colmask').addClass('leftmenu');
    var popupColLeft = $('<div></div>').addClass('colleft');
    var popupColMessage = $('<div></div>').addClass('col1');
    var popupColImage = $('<div></div>').addClass('col2');

    // Append each message element
    $(message).each(function(i){
        popupColMessage.append($(this));
    });

    // Append each message element
    $(images).each(function(i){
        popupColImage.append($(this));
    });
    
    // Piece together the middle
    popupColLeft.append(popupColMessage).append(popupColImage);
    popupColMask.append(popupColLeft);

    // Append the popup pieces to the main popup
    popup.append(popupTop).append(popupColMask).append(popupBottom);
    
    // Append buttons (if any)
    if (buttons != null && buttons.length) {
        var popupButtons = $('<div></div>').attr('id', 'buttons').css('display', 'block');
        $(buttons).each(function(i){
            popupButtons.append($(this));
        });
        popupColMask.after(popupButtons);
    }
    
    // Append the shadow and popup to the body
    $('body').append(shadow).append(popup);
    
    // Calculate the positions for the content modal using the window size and scroll position
    var scrollPos = getScrollPositions();
    var windowSizes = getWindowSizes();
    
    // Grab the popup from the DOM again so it has the needed calculated height & width properties
    popup = $('#popupMessage');
    
    // Calculate the top & left positions for the popup and display
    var newLeft = (windowSizes.x - popup.width()) / 2;
    var newTop  = (windowSizes.y - popup.height()) / 2;
    $('#popupMessage').css('top', newTop).css('left', newLeft).css('display', 'block');
    
    // Add repositioning on window resize 
    $(window).resize(function() { repositionPopupMessage(); });
}

function closePopupMessage() {
    $("#popupMessage").remove();
    $("#popupShadow").remove();
}

/**
 * getWindowSizes - Gets the width and height of the current window
 * @return Array windowSizes
 */
function getWindowSizes() {
    var windowSizes = new Array();
    windowSizes['x'] = $(window).width();
    windowSizes['y'] = $(window).height();
    return windowSizes;
}

/**
 * getScrollPositions - Gets the window's scrollLeft & scrollTop positions
 * @return Array scrollPos
 */
function getScrollPositions() {
    var scrollPos = new Array();
    scrollPos['x'] = $(window).scrollLeft();
    scrollPos['y'] = $(window).scrollTop();
    return scrollPos;
}

/**
 * repositionPopupMessage - Calculates and animates the repositioning of the popup message
 */
function repositionPopupMessage() {
    var scrollPos = getScrollPositions();
    var windowSizes = getWindowSizes();
    
    var popup = $('#popupMessage');
    var newLeft = (windowSizes.x - popup.width()) / 2;
    var newTop  = (windowSizes.y - popup.height()) / 2;
    
    popup.animate({"top": newTop, "left": newLeft}, { duration: "slow" });
}

/**
 * WRAPPER METHODS
 */

function pleaseWaitMessage(message) {
    var img = $('<img/>').attr({'id':'loading', 'src':'/images/loading.gif'});
    var imgDiv = $('<div></div>').attr('id', 'image').append(img);
    var msg = $('<div></div>').attr('id', 'loadingText').html(message);
    
    var messages = new Array();
    messages[0] = msg;
    
    var images = new Array();
    images[0] = imgDiv;

    displayPopupMessage(messages, images);
}

function alertMessage(message) {
    var buttonClose = $("<input>").addClass('button').addClass('buttonSmall').attr({'id': 'close', 'type': 'button', 'value': 'OK'}).click(function(){closePopupMessage();});

    var img = $("<img/>").attr({'src': '/images/alert-55x60.png','alt':'Alert','title':'Alert'});
    var imgDiv = $('<div></div>').attr('id', 'image').append(img);
    var msg = $("<div></div>").attr('id', 'message').html(message);
    
    var messages = new Array();
    messages[0] = msg;
    
    var images = new Array();
    images[0] = imgDiv;
    
    var buttons = new Array();
    buttons[0] = buttonClose;
    
    displayPopupMessage(messages, images, buttons);
}
