if(window.global_debug===undefined){window.global_debug=false}if(window.data===undefined){window.data={}}if(window.constants===undefined){window.constants={}}
var pjComboboxes = {};

/**
 *  jquery.combobox
 *
 **/
(function($){
	var last_active_combobox_id = '';
	
	//Klick utanför
	$(document).mousedown(function(e){
		//console.log(last_active_combobox_id);
		if (($(e.target).is('.combobox_btn') || $(e.target).is('.combobox_textbox') || $(e.target).is('.combobox_item') || $(e.target).is('.combobox')) && last_active_combobox_id) {
			$('.combobox_dropdown:not(#dropdown-'+last_active_combobox_id+')').css({'visibility': 'hidden'});
		} else {
			$('.combobox_dropdown').css({'visibility': 'hidden'});
		}
	});
	
  $.fn.extend({
    pjCombobox: function(opt){
			opt = $.extend({
					width: 70,
					imageBasePath: '/g/style/',
					comboboxBtnImage: 'combobox-button.gif',
					value: '-',
					values: ['-'],
					labels: [],
					labelNull: '(ingen)',
					colors: [],
					bgcolors: [],
					disabled: false,
					onInit: function(val) {
					},
					onChange: function(val) {
					}
				}, opt || {});



			function dropdown(elm){
				
				last_active_combobox_id = elm.attr('id');
				var dropdown_div = elm.children('.combobox_dropdown');
				
				if (!dropdown_div.size()) {
					dropdown_div = $('<div>')
					.attr('id', 'dropdown-'+last_active_combobox_id)
					.attr('class', 'combobox_dropdown')
					.css({'position':	'absolute',
								'visibility': 'hidden',
								'z-index': 100000,
								'width': opt.width+'px'});
					for (var i=0;i<opt.values.length;i++) {
						var item_div = $('<div>')
							.attr('class',"combobox_item")
						  .attr('index', i)
							.html(opt.labels[i]?opt.labels[i]:opt.values[i])
						  .mouseup(function(e){
								var idx = $(this).attr('index');
								select_item(elm, idx);
								return false;
							})
							.mousedown(function(e){
								var idx = $(this).attr('index');
								select_item(elm, idx);
								return false;
							});
						if (opt.colors.length) {
							item_div.css({"color": (opt.colors[i]?opt.colors[i]:opt.colors[opt.colors.length-1]),
								'background-color': (opt.bgcolors[i]?opt.bgcolors[i]:opt.bgcolors[opt.bgcolors.length-1])
							});
						}
						dropdown_div.append(item_div);
					}
					
					elm.append(dropdown_div);
					
				}
				//console.log(dropdown_div.css('visibility'));
				if (dropdown_div.css('visibility') != 'visible') {
					dropdown_div.css({'visibility':	'visible'});
				} else {
					dropdown_div.css({'visibility':	'hidden'});
					last_active_combobox_id = '';
				}
			}
			
			function select_item(elm, idx, noevent){
				
				var dropdown_div = elm.children('.combobox_dropdown');
				dropdown_div.css({'visibility':	'hidden'});
				last_active_combobox_id = '';
				
				if (idx!=-1) {
					val = opt.values[idx];
					if(val != elm.data('value')){
						elm.data('value', val);
						elm.children('.combobox_textbox').html((opt.labels[idx]?opt.labels[idx]:opt.values[idx]))
							.css({'color': (opt.colors[idx]?opt.colors[idx]:opt.colors[opt.colors.length-1]),
								'background-color': (opt.bgcolors[idx]?opt.bgcolors[idx]:opt.bgcolors[opt.bgcolors.length-1])});
						if (!noevent) opt.onChange(val);
					}
				} else {
					val = 'null';
					if(val != elm.data('value')){
						elm.data('value', val);
						elm.children('.combobox_textbox').html(opt.labelNull)
							.css({'color': (opt.colors[opt.colors.length-1]),
								'background-color': (opt.bgcolors[opt.bgcolors.length-1])});
						if (!noevent) opt.onChange(val);
					}
				}

			}
						
      return this.each(function(){
        
        var elm = $(this);
        
				pjComboboxes[this.id] = this;

				//Ta antingen värdet från elementets innehåll, eller vad som skickats in i konstruktorn:
        var val = elm.html();
        if (!val) val = opt.value;
				opt.onInit(val);
				idx = arr_indexOf(opt.values, val);
				
				elm.html('')
          .css({display: 'inline-block', width:opt.width+'px'});
					
        var textbox = $('<span>')
					.attr('class', 'combobox_textbox')
        	.css({display: 'inline-block', verticalAlign: 'bottom', padding: 0, margin: 0, width:(opt.width-28)+'px'});
        elm.append(textbox);
				
				if (!opt.disabled) {
					var comboboxBtnImage = opt.imageBasePath+opt.comboboxBtnImage;
					var btn = $('<img>')
						.attr('class', 'combobox_btn')
						.attr('src', comboboxBtnImage)
						.css({cursor: 'pointer', display: 'inline-block', verticalAlign: 'bottom', padding: 0, margin: 0});
					elm.append(btn);
				} else {
					var comboboxBtnImage = opt.imageBasePath+'sp.gif';
					var btn = $('<img>')
						.attr('class', 'combobox_disabled_icon')
						.attr('src', comboboxBtnImage)
						.css({cursor: 'pointer', display: 'inline-block', verticalAlign: 'bottom', padding: 0, margin: 0});
					elm.append(btn);
				}
				
				select_item(elm, idx, true);
				
				//elm.css({'color': (opt.colors[idx]?opt.colors[idx]:opt.colors[opt.colors.length-1]),
				//	'background-color': (opt.bgcolors[idx]?opt.bgcolors[idx]:opt.bgcolors[opt.bgcolors.length-1])});
				
				if (!opt.disabled) {
					elm.mousedown(function(e){
						(function(){
							dropdown(elm);
						})();
						//return false;
					});
				};
      });
    }
  });
})(jQuery);

