/* value <-> text  ilişkisi tutar. */
var AlbumYapSelectBox = Class.create();
AlbumYapSelectBox.prototype = {
	initialize : function(_parent, values){
		this.parent = _parent;this.id = _parent + '_sel';
		this.values = new Vector();this.selected = -1;this.isBoxOpen=false;
		this.listeners = new EventListenerBase('AlbumYapSelectBox');
		var box_elem = Builder.node('div', {id:(this.id), style:'width:350px;border:1px solid #d7d7d7;display:none;visibility:visible;background-color:#fff;position:absolute;z-index:99999;'});
		document.body.appendChild(box_elem, $(this.parent));
		this.box = new AlbumYapBox(2, (this.id), true, false);
		this.box.addListener(this._onBoxHide, this);
		this.start_text = $(this.parent).innerHTML;
		if(arguments.length == 2){
			this.setValues(values);
		}
	},
	getSelVal : function(){if(this.selected == -1)return '';return this.values.get(this.selected)[0];},
	value : function(){if(this.selected == -1)return '';return this.values.get(this.selected)[0];},
	getSelIndex : function(){return this.selected;},
	getSelText : function(){return this.values.get(this.selected)[1];},
	setValues : function(_vals_vect){this.values = _vals_vect;this._show();this._initListeners();return this;},
	setOptions : function(_select_id){
		var tmpVect = new Vector();var select = $(_select_id);var opts = select.options;var len = opts.length;
		for(var i=0; i<len; i++){tmpVect.add(new Array(opts[i].value,opts[i].text));}
		this.setValues(tmpVect);return this;
	},
	selectIndex : function(ind){this.selected = ind;$(this.parent).update(this.values.get(ind)[1]);},
	select : function(val){
		var len = this.values.size();
		for(var i=0; i<len; i++){
			var active = this.values.get(i)[0];
			if(active == val){this.selectIndex(i);return;}
		}
	},
	addListener : function(_callback, _caller){this.listeners.addListener(_callback, _caller);},
	_show : function(){
		var tmpStr = new StringBuffer();
		var len = this.values.size();
		tmpStr.add('<div style="background-color:#fff;').add(len > 20 ? 'overflow:scroll;height:200px;' : '').add('" id="').add(this.id).add('_options"><ul style="margin:0px;margin-left:2px;padding:0px;">');
		for(var i=0; i<len; i++){
			var active = this.values.get(i);
			tmpStr.add('<li class="ay_select_link" id="').add(this.parent).add('_lnk_li_').add(i).add('"><a style="color:#444;letter-spacing:1px;text-decoration:none;" onclick="return false;" href="javascript:void(0);" id="').add(this.parent).add('_lnk_').add(i).add('">').add(active[1]).add('</a></li>');
		}
		tmpStr.add('</ul></div>');
		$(this.id).update(tmpStr.toString());
	},
	_hide : function(){
		this.isBoxOpen = false;this.box.hide();return;
	},
	_initListeners : function(){
		conClkEvt($(this.parent), this._onParentClk, this);
		var len = this.values.size();
		for(var i=0; i<len; i++){
			Event.observe($(this.parent + '_lnk_' + i), 'click', this._onLinkClk.bind(this, i));
			Event.observe($(this.parent + '_lnk_li_' + i), 'click', this._onLinkClk.bind(this, i));
		}
	},
	_onLinkClk : function(index){
		this.selectIndex(index);
		var value = this.values.get(index);
		this.listeners.notifyListeners('click', value[0]);
		this.box.hide();this.isBoxOpen = false;
		return false;
	},
	_onParentClk : function(){
		if(this.isBoxOpen){this._hide();return;}
		var elem = $(this.parent);
		var posXY = Element.cumulativeOffset(elem);
		var height = elem.getHeight();
		this.box.setWidth(elem.getWidth());
		this.box.showPositioned(posXY.left, (posXY.top + height));
		this.isBoxOpen = true;
		return false;
	},
	_onBoxHide : function(){
		this.isBoxOpen = false;
	},
	_onKeyPress : function(event)
	{
		var len = this.values.size();
		var _char = event.key;
		var index = 0;
		for(index = 0; index < len; index++){
			var _elem = this.values.get(index)[1];
			if(_elem.indexOf(_char) == 0){
				break;
			}
		}	
		var _pos = Element.cumulativeOffset($(this.parent + '_lnk_li_' + i));
			
	}
};