
function DesignSelectObject(id_select,food_short_name,onChangeHandler)
{
	if(food_short_name!=='null')
	  this.is_food = true;
	else 
      this.is_food = false;
      
	this.nameArea = '_designSelectObject_'+id_select+'_';
    
	this.currentHighlightedRow = -1;
    
	this.sourceSelect = document.getElementById(id_select);
    
	this.createInputObject(this.sourceSelect.parentNode,this.sourceSelect,onChangeHandler);
	
    this.createDropDownList(this.sourceSelect.parentNode,this.sourceSelect,onChangeHandler,food_short_name);
    
	this.onChangeValueUnit = onChangeHandler;
	this.addHandlerToSelectButton();
	
	this.getCurrentRow = function(obj){
		return function(){
		var fg = $('#'+obj.dropDownSelectContainer.id+' .element_spiska');
			var res = new Array();
			res['index'] = obj.currentHighlightedRow*1;
			res['array'] = fg;
			return res;
		}
	}(this);	
	
	
	this.getObjThis= function(obj){
		return function(){
		return obj;
		}
	}(this);
	
	this.setRowIndex = function(obj){
		return function(index){

			obj.currentHighlightedRow = index;

		}
	}(this);
	
	
	this.getCurrentRow();
	this.attachObjectHandlers();
	/*this.attachEvents();*/
}

DesignSelectObject.prototype.attachObjectHandlers = function()
{
	var tmp = this.getCurrentRow();
	tmp['array'].bind("mouseover",function(obj){
			return function()
			{
				  obj.unhighlightCurrentItem();
				  this.style.background = '#f1f4f8';
				  obj.onMouseOverItem();
			}
	}(this));
	
	tmp['array'].bind("mouseout",function(obj){
			return function()
			{
				  if(this.style.background!=='') 
				  {
				  	this.style.background = '';
				  	obj.onMouseOutItem();
				  }
			}
	}(this));
	
	$(this.customizeSelect).bind("keyup",function(obj)
	{
	  return function(event)
	  {
	  	obj.changeHighlightLine(event.keyCode);
	  }
	}(this));
}
	






DesignSelectObject.prototype.addHandlerToSelectButton = function()
{
	addEventHandler(this.customizeSelect,"onclick",
	 							function(obj,containerDropDownList){return function() {containerDropDownList.style.top = obj.getTop(obj.customizeSelect)+20;containerDropDownList.style.left = obj.getLeft(obj.customizeSelect)-2;}}(this,this.dropDownSelectContainer));
	addEventHandler(this.customizeSelect,"onclick",
	 function(obj,dropDownList){return function() {if(dropDownList.style.display=='none')dropDownList.style.display = '';else dropDownList.style.display = 'none';}}(this.customizeSelect,this.dropDownSelectContainer));
	 
	 
	 addEventHandler(this.customizeSelect,"onblur",function(ths,obj){return function(){ths.onBlurSelectObject(obj.id)}}(this,this.dropDownList));
	
	 addEventHandler(this.divSelectButton,"onclick",
	 							function(obj,containerDropDownList){return function() {containerDropDownList.style.top = obj.getTop(obj.customizeSelect)+20;containerDropDownList.style.left = obj.getLeft(obj.customizeSelect)-2;}}(this,this.dropDownSelectContainer));
	addEventHandler(this.divSelectButton,"onclick",
	 function(obj,dropDownList){return function() {if(dropDownList.style.display=='none')dropDownList.style.display = '';else dropDownList.style.display = 'none';}}(this.customizeSelect,this.dropDownSelectContainer));
	 
}


DesignSelectObject.prototype.createInputObject = function(container,sourceEl,onChangeHandler)
{
  var originTable = document.createElement('table');
  var originTr = document.createElement('tr');
  var originTd = document.createElement('td');
  var table1 = originTable.cloneNode(true);
  //table1.class = 'calculator_input';
  
  var div1 = document.createElement('div');
  div1.className = 'ins';
  div1.cellSpacing = "0";
  div1.cellPadding = "0";
  
  addEventHandler(div1,"onmouseout",
   function(obj){return function() { var re = "dark"; obj.className = obj.className.replace(re,"");}}(div1));
  addEventHandler(div1,"onmouseover",
   function(obj){return function() { obj.className = obj.className+' dark'}}(div1));
  container.appendChild(div1);
  this.divWithInputSelect = div1;
  
  	var table1Div1 = originTable.cloneNode(true);
  	table1Div1.className = 'inputter';
  	table1Div1.cellPadding = '0';
  	table1Div1.cellSpacing = '0';
  	if(this.is_food)
  	table1Div1.style.width = '155px';
  	else table1Div1.style.width = sourceEl.clientWidth+15+'px';
  	div1.appendChild(table1Div1);
  	  	
  	  	var tbodyTable1Div1 = document.createElement('tbody');
  			table1Div1.appendChild(tbodyTable1Div1);
  	  	
  	  		var tr1Table1Div1 = originTr.cloneNode(true);
  	  		tbodyTable1Div1.appendChild(tr1Table1Div1);
  	  		
  	  			var td1Tr1Table1Div1  = originTd.cloneNode(true);
  	  			//td1Tr1Table1Td2Tr1Table1.class = 'calc_input_tl';
  	  			td1Tr1Table1Div1 .className = 'calc_input_tl';
  	  			tr1Table1Div1.appendChild(td1Tr1Table1Div1 );
  	  			
  	  			var td2Tr1Table1Div1 = originTd.cloneNode(true);
  	  			//td2Tr1Table1Td2Tr1Table1.class = 'calc_input_tr';
  	  			td2Tr1Table1Div1.className = 'calc_input_tr';
  	  			tr1Table1Div1.appendChild(td2Tr1Table1Div1);
  	 
		  	 var tr2Table1Div1 = originTr.cloneNode(true);
  	  	 tbodyTable1Div1.appendChild(tr2Table1Div1);
		  	 
		  	 		var td1Tr2Table1Div1  = originTd.cloneNode(true);
  	  			//td1Tr1Table1Td2Tr1Table1.class = 'calc_input_tl';
  	  			td1Tr2Table1Div1 .className = 'calc_input_bl';
  	  			tr2Table1Div1.appendChild(td1Tr2Table1Div1 );
  	  			
  	  			var td2Tr2Table1Div1 = originTd.cloneNode(true);
  	  			td2Tr2Table1Div1.className = 'calc_input_br';
  	  			tr2Table1Div1.appendChild(td2Tr2Table1Div1);
  	  			
  	  				var div1td2Tr2Table1Div1 = document.createElement('div');
  	 					div1td2Tr2Table1Div1.className = 'calc_input_content';
  	   				td2Tr2Table1Div1.appendChild(div1td2Tr2Table1Div1);
  	   				
  	   				
  	   					var inputAm = document.createElement('input');
  	   					inputAm.className = 'select_calculator';
  	   					inputAm.style.cursor = 'default';
  	   					inputAm.id = sourceEl.id;
  	   					inputAm.name = sourceEl.name;
  	   					inputAm.readOnly = true;
  	   					inputAm.value = sourceEl.options[sourceEl.selectedIndex].innerHTML;
  	   					inputAm.size = '10';
  	   					div1td2Tr2Table1Div1.appendChild(inputAm);
                
  	   					this.divSelectButton = document.createElement('div');
  	   					this.divSelectButton.className = 'select_button';
  	   					
	              div1td2Tr2Table1Div1.appendChild(this.divSelectButton);
	              
	              this.customizeSelect = inputAm;
	              
	
}


 DesignSelectObject.prototype.getTop = function(obj)
{
  if (!obj.offsetParent)
    return obj.offsetTop;
  else
    return getTop(obj.offsetParent) + obj.offsetTop;
}

DesignSelectObject.prototype.getLeft = function(obj)
{
  if (!obj.offsetParent)
    return obj.offsetLeft;
  else
    return getLeft(obj.offsetParent) + obj.offsetLeft;
}



DesignSelectObject.prototype.createDropDownList = function(container,sourceEl,onChangeHandler,nameFood)
{
var originTable = document.createElement('table');
  var originTr = document.createElement('tr');
  var originTd = document.createElement('td');
  var originDiv = document.createElement('div');
  var table1 = originTable.cloneNode(true);
  //table1.class = 'calculator_input';
  
 /* var div1 = document.createElement('div');
  div1.className = 'ins';
  div1.cellSpacing = "0";
  div1.cellPadding = "0";
  container.appendChild(div1);*/
  
 var div1 = document.createElement('div');
 div1.className = "calc_selecter";
   	div1.style.top = this.getTop(this.customizeSelect)+7;
  	div1.style.left = this.getLeft(this.customizeSelect)-2;
  	div1.id = this.nameArea+'container'
  this.divWithInputSelect.appendChild(div1);
    this.dropDownSelectContainer = div1;
 
  	var table1Div1 = originTable.cloneNode(true);
  	table1Div1.id = this.nameArea+'dropDownListTable';
  	table1Div1.className = 'inputter_select';
  	table1Div1.cellPadding = '0';
  	table1Div1.cellSpacing = '0';
  	if(!this.is_food)
  	table1Div1.style.width = sourceEl.clientWidth+15+'px';
  	div1.appendChild(table1Div1);
  	this.dropDownList = table1Div1;
  	  	
  	  	var tbodyTable1Div1 = document.createElement('tbody');
  			table1Div1.appendChild(tbodyTable1Div1);
  	  	
  	  		var tr1Table1Div1 = originTr.cloneNode(true);
  	  		tbodyTable1Div1.appendChild(tr1Table1Div1);
  	  		
  	  			var td1Tr1Table1Div1  = originTd.cloneNode(true);
  	  			//td1Tr1Table1Td2Tr1Table1.class = 'calc_input_tl';
  	  			td1Tr1Table1Div1 .className = 'calc_input_tl';
  	  			tr1Table1Div1.appendChild(td1Tr1Table1Div1 );
  	  			
  	  			var td2Tr1Table1Div1 = originTd.cloneNode(true);
  	  			//td2Tr1Table1Td2Tr1Table1.class = 'calc_input_tr';
  	  			td2Tr1Table1Div1.className = 'calc_input_tr';
  	  			tr1Table1Div1.appendChild(td2Tr1Table1Div1);
  	 
		  	 var tr2Table1Div1 = originTr.cloneNode(true);
  	  	 tbodyTable1Div1.appendChild(tr2Table1Div1);
		  	 
		  	 		var td1Tr2Table1Div1  = originTd.cloneNode(true);
  	  			//td1Tr1Table1Td2Tr1Table1.class = 'calc_input_tl';
  	  			td1Tr2Table1Div1 .className = 'calc_input_bl';
  	  			tr2Table1Div1.appendChild(td1Tr2Table1Div1 );
  	  			
  	  			var td2Tr2Table1Div1 = originTd.cloneNode(true);
  	  			td2Tr2Table1Div1.className = 'calc_input_br';
  	  			tr2Table1Div1.appendChild(td2Tr2Table1Div1);
  	  			
  	  				var div1td2Tr2Table1Div1 = document.createElement('div');
  	 					div1td2Tr2Table1Div1.className = 'calc_select_content';
  	   				td2Tr2Table1Div1.appendChild(div1td2Tr2Table1Div1);
  	   				
  	   				for(var i=0;i<sourceEl.options.length;i++)
			 	  		{
			 	  			var div1Div1td2Tr2Table1Div1 = originDiv.cloneNode(true);
			 	  			//div1Div1Div1Td2Tr2Table1Div1.class = 'element_spiska';
			 	  			div1Div1td2Tr2Table1Div1.className = 'element_spiska';
			 	  						 	  			
			 	  			div1Div1td2Tr2Table1Div1.style.cursor = 'default'
			 	  			div1Div1td2Tr2Table1Div1.setAttribute('_selectedindex_',i);/*
			 	  			addEventHandler(div1Div1td2Tr2Table1Div1,"onmouseout",
			          function(obj){return function() {obj.style.background = 'none'}}(div1Div1td2Tr2Table1Div1));
			          addEventHandler(div1Div1td2Tr2Table1Div1,"onmouseover",
			          function(obj){return function() {obj.style.background = '#F1F4F8'}}(div1Div1td2Tr2Table1Div1));*/
			          addEventHandler(div1Div1td2Tr2Table1Div1,"onclick",
			          function(obj,selectObj,inputAmountObj,onChangeHandler,dropDownList,objThis){return function() {obj.style.background = 'none';selectObj.selectedIndex = obj.getAttribute('_selectedindex_');inputAmountObj.value = obj.innerHTML;onChangeHandler(selectObj);dropDownList.style.display = 'none';}}(div1Div1td2Tr2Table1Div1,sourceEl,this.customizeSelect,onChangeHandler,this.dropDownSelectContainer,this));
			          if(i<2&&nameFood!=='null') div1Div1td2Tr2Table1Div1.innerHTML = sourceEl.options[i].innerHTML+' of '+nameFood;
			          else div1Div1td2Tr2Table1Div1.innerHTML = sourceEl.options[i].innerHTML;
				 	  		
			          
			          div1td2Tr2Table1Div1.appendChild(div1Div1td2Tr2Table1Div1);
				 	  		
			          if(i==sourceEl.selectedIndex) this.customizeSelect.value = div1Div1td2Tr2Table1Div1.innerHTML;
			 	  		}
    sourceEl.style.display='none';
    this.dropDownSelectContainer.style.display = "none";
  	   				
}


DesignSelectObject.prototype.onBlurSelectObject = function(idSelect)
{
  setTimeout("document.getElementById('"+this.nameArea+'container'+"').style.display='none'",180); 	
  this.setDefaultOptions();
  
}

DesignSelectObject.prototype.setDefaultOptions = function()
{
	var tmp = this.getCurrentRow();
	if(tmp['array']!==null)
	{
		this.unhighlightCurrentItem();
		this.setRowIndex(-1);
	}
}


/*
DesignSelectObject.prototype.getCurrentRow = function(obj)
{
	  var fg = $('#_designSelectObject_select_calculator1_dropDownListTable .element_spiska');
		var res = new Array();
		res['index'] = obj.currentHighlightedRow*1;
		res['array'] = fg;
		return res;
}*/

DesignSelectObject.prototype.unhighlightCurrentItem = function()
{
	var tmp = new Array();
	tmp = this.getCurrentRow();
	if(tmp['index']!==-1)
	  tmp['array'][tmp['index']].style.background = '';
	
}

DesignSelectObject.prototype.changeHighlightLine = function(keyCode)
{
	var tmp = this.getCurrentRow();
	var fg = tmp['array'];
	var i = tmp['index'];
	var nmb = -1;
	
	if(keyCode==13)
	{  
		if(fg!==null)
		{
				this.sourceSelect.selectedIndex = fg[i].getAttribute('_selectedindex_');
				this.customizeSelect.value = fg[i].innerHTML;
				this.onChangeValueUnit(this.sourceSelect);
				this.dropDownSelectContainer.style.display = 'none';
				this.setDefaultOptions();
	  } 
	}
		
		
	var clr = '#F1F4F8';
	//var clr = 'yellow';
	
	if(tmp['array']!==null)
	{
				
		var arLength = fg.length;
		if(i>=0)
		{
			if(fg[i].style.background!=='')
			{
						if(keyCode==38)
						{ 
							if(i!==0)
							{
										fg[i-1].style.background  = clr;
										fg[i].style.background = '';
										nmb = i-1;
										this.setRowIndex(i-1);
										return nmb;
							}else{
								fg[arLength-1].style.background  = clr;
								fg[i].style.background = '';
								nmb = i-1;			
								this.setRowIndex(arLength-1);
								return nmb;	
							}
						}
						if(keyCode==40)
						{ 
							if(i!==arLength-1)
							{
									  fg[i+1].style.background  = clr;
										fg[i].style.background = '';
										nmb = i-1;
										this.setRowIndex(i+1);
										return nmb;
							}else
									{
										fg[0].style.background  = clr;
										fg[i].style.background = '';
										this.setRowIndex(0);
										return nmb;
									}
						}
					}
		}

		if(i==-1)
		{
			if(keyCode==38)
				{
					//fg[arLength-1].style.background = '#f1f4f8';
					fg[arLength-1].style.background = clr;
					this.setRowIndex(arLength-1);
					return nmb;
				}
				if(keyCode==40)
				{
					//fg[1].style.background = '#f1f4f8';
					fg[0].style.background = clr;
					var bn9 = fg[0].style.background;
					this.setRowIndex(0);
					return nmb;
				}
		}
		
	}
}
	
	
DesignSelectObject.prototype.onMouseOverItem = function()
{

		var tmp = this.getCurrentRow();
		var fg = tmp['array'];
		  var nmb = -1;
			
			var arLength = fg.length;
			for(var i=0;i<arLength;i++)
			{
				if(fg[i].style.background!=='')
				{
					this.setRowIndex(i);
					return true;
				}
			}
}


DesignSelectObject.prototype.onMouseOutItem = function()
{
	this.setRowIndex(-1);
}

