if(TFI == undefined) {
    var TFI = {};
}

//Initialize common component
$().ready(function(){
    TFI.ClientUtils.init();
});

TFI.ClientUtils = {

    init: function() {
        TFI.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(TFI.ClientUtils.popupHtmlBefore + TFI.ClientUtils.popupHtmlAfter);
    },
    
    initSIFR: function() {
		if(typeof(Adecco) != 'undefined' && typeof(Adecco.sIFR) != 'undefined') {
			Adecco.sIFR();
		}
		//TODO: call for Adia    
    },
    
    setBlockUIDefaults: function() {
        if($ && $.blockUI) {
            $.blockUI.defaults.css = {
                position:       'absolute',
                width:			'850px',
                top:            '10%', 
                left:           '10%', 
                color:          '#000', 
                border:         '3px solid #aaa',
                backgroundColor:'#fff'
            }
            $.blockUI.defaults.message = "";
            $.blockUI.defaults.centerY = false;
         }
    },

    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").addClass("Item-impair").addClass("item");			
			table.find(".pnlRow:odd").removeClass("Item-impair").removeClass("item").removeClass("Item-pair").removeClass("alternatingitem").addClass("Item-pair").addClass("alternatingitem"); ;    			
		}
		else
		{
			table.find(".pnlRow:even").removeClass("Item-pair").removeClass("Item-impair").removeClass("item").removeClass("alternatingitem").addClass("Item-pair").addClass("alternatingitem");			
			table.find(".pnlRow:odd").removeClass("Item-pair").removeClass("Item-impair").removeClass("item").removeClass("alternatingitem").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;
	},
	
	getDepartmentsTableValues: function(selector, fieldId, fieldId2) {
		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);
			value[fieldId2] = parseInt(controls.eq(i).attr("type"), 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;
		var html = "";
		
		if(onClickDelete == null) onClickDelete = TFI.ClientUtils.onDeleteRow; //Default action
		/************ BEGIN CR 199033 ************/
		/*if(isEditMode) {
			buttonHtml = '<span class="imgDelete removeButton"><input type="submit" class="linkDelete-inline linkButton png" value="" /></span>';
		}*/
		
		buttonHtml = '<span class="imgDelete removeButton"><input type="submit" class="linkDelete-inline linkButton png" value="" /></span>';
		/************ END CR 199033 ************/
		
		for(i=0; i<list.length; i++) {
			control = table.find(".pnlRow[rowId=" + list[i].value + "]");
			if(control.length == 0) { 
				//Add row
				//Not add remove button to France
				if(list[i].value != 1){ 
				    html = '<div rowId="' + list[i].value + '" type="' + list[i].type + '" name="' + list[i].name + '" class="pnlRow item Item-pair"><span class="textDelete">' + list[i].text + '</span>' + buttonHtml +
					       '<div class="clear"/></div>';
				}
				else{
				    html = '<div rowId="' + list[i].value + '" type="' + list[i].type + '" name="' + list[i].name + '" class="pnlRow item Item-pair"><span class="textDelete">' + list[i].text + '</span> <div class="clear"/></div>';
				}				
				control = table.append($(html));
				/*if(isEditMode) {
					control.find(".linkDelete-inline").click(onClickDelete);
				}*/
				control.find(".linkDelete-inline").click(onClickDelete);
			}		
		}
		TFI.ClientUtils.refreshTableStyles(table); //Update table style
    },
    
    onDeleteRow: function(e) {
        var control = $(e.target);
        var table = control.parents(".pnlTable");
		control.parents(".pnlRow").remove(); //Remove element
		TFI.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;
    },
    
    setAnimatedOpacity: function(enabled, element) {
		if(enabled) {
		    //element.parent().animate({opacity:1}, 10); Incidence. 201854
			element.animate({opacity:1}, 500);
		    element.removeAttr("disabled");
		} else {
		    //element.parent().animate({opacity:0.3}, 10); Incidence. 201854
			element.animate({opacity:0.3}, 500);
		    element.attr("disabled","disabled");
		}    
    },
    
    setSelectIndex: function(select, index) {
	    if(select[0] && select[0].contentIndex) { //If dropdown_menu_hack is loaded
            select[0].contentIndex = index;
            select[0].updateSelected();
	    } else {
            select.find("option").removeAttr("selected"); //Remove previous selected value
            select.find("option:eq(" + index + ")").attr("selected", "selected"); //Select new value
	    }
    }
    
};
