﻿if (ADom == undefined) {
    var ADom = {};
}

//Initialize common component
$().ready(function() {
    ADom.ClientUtils.init();
});

ADom.ClientUtils = {

    init: function() {
        ADom.ClientUtils.setBlockUIDefaults();
    },

    getSelectedItems: function(selector, fieldId, addText, fieldName) {
        var text = "";
        var value = "";
        var element;
        var result = [];
        var controls = $(selector + " input:checked");
        var label;
        var i;

        if (fieldId == null) fieldId = "value";
        if (fieldName == null) fieldName = "text";
        if (addText == null) addText = true;

        for (i = 0; i < controls.length; i++) {
            element = {};
            element[fieldId] = controls[i].value;
            if (addText) {
                label = $(selector + " label[for = '" + controls[i].id + "']");
                if (label.length > 0)
                    element[fieldName] = label[0].innerHTML;
                else
                    element[fieldName] = "";
            }
            //Add result element
            result.push(element);
        }
        return result;
    },

    getSelectValue: function(selector) {
        var control = $(selector);
        var option;
        var result = {};
        if (control.length == 1) {
            option = control[0].options[control[0].selectedIndex];
            result = { text: option.text, value: option.value };
        }
        return result;
    },

    getXmlDate: function(selector) {
        var result = null;
        var array = null;
        var text = $(selector).val();

        if (text.indexOf("-") > 0)
            array = text.split("-");
        else
            array = text.split("/");

        if (array.length == 3) {
            result = array[2] + '-' + array[1] + '-' + array[0]; //Return xml date        
        }
        return result;
    },

    getDate: function(selector) {
        var result = null;
        var array = null;
        var text = $(selector).val();

        if (text.indexOf("-") > 0)
            array = text.split("-");
        else
            array = text.split("/");

        if (array.length == 3) {
            result = new Date(Date.UTC(array[2], array[1] - 1, array[0]));
            //result.setTime(0);
            //result.setFullYear(); //Return javascript date
        }
        return result;
    },

    convertFromUTCDate: function(anUTCDate) {
        //Date(-62135586000000)/
    },

    popupHtmlBefore: "<div>" + "<div id=\"formEnPopUp\" class=\"hidden\">" + "<div class=\"container\">" +
        "<div class=\"textContainer2\"></div>" +
        "<div class=\"textContainer\">",

    popupHtmlAfter: "</div></div></div></div>",

    initPopup: function(selector) {
        var control = $(selector);
        control.wrap(ADom.ClientUtils.popupHtmlBefore + ADom.ClientUtils.popupHtmlAfter);
    },

    initSIFR: function() {
        if (typeof (Adecco) != 'undefined' && typeof (Adecco.sIFR) != 'undefined') {
            Adecco.sIFR();
        }
        //TODO: call for Adia    
    },

    setBlockUIDefaults: function() {
        $.blockUI.defaults.css = {
            position: 'absolute',
            width: '550px',
            top: '400px',
            left: '10%',
            color: '#000',
            //border: '3px solid #aaa',
            border: '0px',
            backgroundColor: 'transparent'
        }

        $.blockUI.defaults.overlayCSS = {
            backgroundColor: '#000',
            opacity: '0.3'
        }

        $.blockUI.defaults.message = "";

    },

    createLinksTable: function(selector, list, onclick) {
        var html = "<p><table>";

        //Generate table HTML
        $.each(list, function(index, element) {
            html += '<tr><td><a href="#" value="' + element.value + '">' + element.text + '</a></td></tr>';
        });
        html += "</table></p>";

        //Add html to the selector and assign onclick event
        $(selector).html(html).find("a").click(onclick);
    },

    createCheckboxList: function(selector, list, onclick, preffix, numColumns) {
        var html = "<p><table>";
        var i = 0;
        var id = "";

        if (numColumns == undefined) numColumns = 3; //By default
        if (preffix == undefined) preffix = "chkItem"; //By default

        //Generate table HTML
        $.each(list, function(index, element) {
            id = preffix + element.value;
            if (i == 0) html += '<tr>';
            html += '<td><input type="checkbox" id="' + id + '" value="' + element.value + '" text="' + element.text + '">';
            html += '<label for="' + id + '">' + element.text + '</label></td>';
            i++;
            if (i == numColumns) {
                i = 0;
                html += '</tr>';
            }
        });
        html += "</table></p>";

        //Add html to the selector and assign onclick event
        $(selector).html(html);
        if (onclick != null)
            $(selector).find(":input").click(onclick);
    },

    refreshTableStyles: function(table) {
        table.find(".pnlRow:even").removeClass("Item-pair").removeClass("alternatingitem").addClass("Item-impair").addClass("item");
        table.find(".pnlRow:odd").removeClass("Item-impair").removeClass("item").addClass("Item-pair").addClass("alternatingitem");
    },

    refreshTableStylesOrder: function(table, typeOrder) {
        if (typeOrder = "even") {
            table.find(".pnlRow:even").removeClass("Item-pair").removeClass("alternatingitem").removeClass("item").removeClass("Item-impair");
            table.find(".pnlRow:even").addClass("Item-impair").addClass("item");
            table.find(".pnlRow:odd").removeClass("Item-impair").removeClass("item").removeClass("Item-pair").removeClass("alternatingitem");
            table.find(".pnlRow:odd").addClass("Item-pair").addClass("alternatingitem");
        }
        else {
            table.find(".pnlRow:even").removeClass("Item-pair").removeClass("Item-impair").removeClass("item").removeClass("alternatingitem");
            table.find(".pnlRow:even").addClass("Item-pair").addClass("alternatingitem");
            table.find(".pnlRow:odd").removeClass("Item-pair").removeClass("Item-impair").removeClass("item").removeClass("alternatingitem");
            table.find(".pnlRow:odd").addClass("Item-impair").addClass("item");
        }
    },

    getTableValues: function(selector, fieldId) {
        var values = [];
        var value;
        var controls = $(selector);
        var i;

        for (i = 0; i < controls.length; i++) {
            value = {};
            value[fieldId] = parseInt(controls.eq(i).attr("rowId"), 10);
            values.push(value);
        }
        return values;
    },

    addTableValues: function(selector, list, onClickDelete) {
        var box = $(selector);
        var table = box.find(".pnlTable");
        var isEditMode = (box.attr("editMode") == "1");
        var buttonHtml = "";
        var control;
        var i;

        if (onClickDelete == null) onClickDelete = ADom.ClientUtils.onDeleteRow; //Default action
        if (isEditMode) {
            buttonHtml = '<span class="imgDelete removeButton"><input type="submit" class="linkDelete-inline linkButton png" value="" /></span>';
        }

        for (i = 0; i < list.length; i++) {
            control = table.find(".pnlRow[rowId=" + list[i].value + "]");
            if (control.length == 0) {
                //Add row
                var html = '<div rowId="' + list[i].value + '" class="pnlRow item Item-pair"><span class="textDelete">' + list[i].text + '</span>' + buttonHtml +
					'<div class="clear"/></div>';
                control = table.append($(html));
                if (isEditMode) {
                    control.find(".linkDelete-inline").click(onClickDelete);
                }
            }
        }
        ADom.ClientUtils.refreshTableStyles(table); //Update table style
    },

    onDeleteRow: function(e) {
        var control = $(e.target);
        var table = control.parents(".pnlTable");
        control.parents(".pnlRow").remove(); //Remove element
        ADom.ClientUtils.refreshTableStyles(table); //Update table style
        return false;
    },

    // Capitalizes the first letter of each word separated by space, in the given string.
    titleCase: function(inputString) {
        var result = '';
        var inputWords = inputString.split(' ');
        for (var i = 0; i < inputWords.length; ++i) {
            var s = inputWords[i];
            result += s.substr(0, 1).toUpperCase() + s.substr(1).toLowerCase() + ' ';
        }

        return result;
    }
};
