ACTIVE = '';
window.addEvent('load', function(){
	prepareCustomMenus();
}); 
function prepareCustomMenus(){
	$$('.item').each(function(item){
	   item.addEvent('mouseover',onRowOver);
	   item.addEvent('mouseout',onRowOut);
	   item.addEvent('click',onRowClick);
	});
	$$('body').each(function(item){
		item.addEvent('click',hideAllMenus);
	});	
}
function hideAllMenus(){
    $$('.custom_menu').each(function(item){
        if (getId(item.id) != ACTIVE){
            hideMenu(getId(item.id));
        }    	
    });
	ACTIVE = '';
}    
function onRowOver() {
   this.addClass("mouse_over");
}
function onRowOut() {
    this.removeClass("mouse_over");
} 

function onRowClick() {
    var label=this.innerHTML;
    var pattern = /([^_]+)_(.*)/i;
    var result = pattern.exec(this.id);
    var value=result[2];
    
    result = pattern.exec(this.getParent().id);
	var el_id=result[1];
	
    $(el_id).value=value;
    $(el_id+'_label').setHTML(label);
    hideAllMenus();
}   

function displayMenu(id){
  	$(id+"_options").setStyle('display','block');
  	ACTIVE = id;
}
function hideMenu(id){
	if ($(id+"_link"))
	  	$(id+"_link").removeClass("link_active");
  	if ($(id+"_options"))
  		$(id+"_options").setStyle('display','none');
}

function getId(str){
    var pattern = /([^_]+)_([^_]+)/i;
    var result = pattern.exec(str);
    return result[1];
}
function getValue(str){
    var pattern = /([^_]+)_([^_]+)/i;
    var result = pattern.exec(str);
    return result[2];
}
  

function clearDiv(div){
div.getChildren().each(function(item){
		   item.remove();
		});
}
function addMenuOption(div, id, name, fieldName){
	var item = new Element('div', {
		'class' : 'item',
		'id' : fieldName+'_'+id
	});
	item.setHTML(name);
	item.injectInside(div);
   item.addEvent('mouseover',onRowOver);
   item.addEvent('mouseout',onRowOut);
   item.addEvent('click',onRowClick);
}
function addEventHandlers(div, additionalOnClickHandler){
	div.getChildren().each(function(item){
		item.addEvent('mouseover',onRowOver);
		item.addEvent('mouseout',onRowOut);
		item.addEvent('click',onAutocompleteItemClick.pass(additionalOnClickHandler, item));
	});
}
function onAutocompleteItemClick(additionalOnClickHandler) {
    setHiddenId(this.id, this.innerHTML)
    if (additionalOnClickHandler)
    	additionalOnClickHandler();
}	
function setHiddenId(id, innerHTML){
    var pattern = /([^_]+)_([^_]+)/i;
    var result = pattern.exec(id);
    var el_id=result[1];
    var value=result[2];    
    $(el_id).value=value;
    $(el_id+'Label').value=innerHTML;
}
function checkForCompleteValue(id){
	var found = false;
	$(id+'_options').getChildren().each(function(item){
		if (item.innerHTML.toLowerCase()  == $(id+'Label').value.toLowerCase() ){
			setHiddenId(item.id, item.innerHTML);
			found = true;
		}
	});	
	if (!found) $(id).value = 0;
}
function setCustomMenuValue(id, value){
	$(id+'_options').getChildren().each(function(item){
		if (item.id  == id+"_"+value){
			item.fireEvent('click');
		}
	});	
}
function hideOption(id, value, hide){
	$(id+'_options').getChildren().each(function(item){
		if (item.id  == id+"_"+value){
			item.setStyle('display', hide?'none':'block');
		}
	});	
}
function setCustomOnChange(id, func){
	if($(id+'_options')){
	$(id+'_options').getChildren().filterByClass('item').each(function(item){
	   item.addEvent('click',func);
	});	
	}
}

function setCustomList(id, list){
	var div = $(id+'_options');
	div.empty();
	var i=0;
	if($defined(list)){
		for(i=0;i<list.length;i++){
			addMenuOption(div, list[i].value, list[i].label, id);
		}
		if(list.length>0)
			setCustomMenuValue(id,list[0].value);
	}

}
