Error.prototype.show = function(label){
	alert('file: ' + this.fileName + '\n'+
		'line : ' + this.lineNumber+'\n'+
		'message : '+this.message+'\n'+
		'number : '+this.number+'\n'+
		'description : '+this.description+'\n'+
		'label : '+label);
}
try{
var SlideSearchBar = Class.create();

SlideSearchBar.CLASS_NAME = 'header-search';
SlideSearchBar.DEFAULT_LETTER_AMOUNT = 12;
SlideSearchBar.DEFAULT_MAX_WIDTH  = 310;
SlideSearchBar.DEFAULT_DELTA_WIDTH= 90;
SlideSearchBar.DEFAULT_INIT_WIDTH = 130;

SlideSearchBar.prototype = {
	initialize : function(elmnt, initWidth, maxWidth, delta, amount){
		try{
		//reference to html elemen 
		if(!(this.dom = elmnt)) return;
		//if element isn't found - create one !
		this.lettersAmount = (amount!=null)?amount:SlideSearchBar.DEFAULT_LETTER_AMOUNT;
		this.width = this.initWidth = (initWidth!=null)?initWidth:SlideSearchBar.DEFAULT_INIT_WIDTH;
		this.maxWidth = (maxWidth!=null)?maxWidth:SlideSearchBar.DEFAULT_MAX_WIDTH;
		this.deltaWidth = (delta!=null)?delta:SlideSearchBar.DEFAULT_DELTA_WIDTH;
		
		this.dom.style.width = this.width + 'px';
		this.dom.onkeyup = SlideSearchBar.onkeyup;
		//Event.observe(this.dom, 'keyup', SlideSearchBar.onkeyup);
		//this.dom.m - data model of input element
		return (this.dom.m = this);
		}catch(err){err.show && err.show('slideSearchBar constructor');}
	},
	
	getValue : function(){
		try{
		return this.dom.value;
		}catch(err){err.show && err.show('getValue');}
	},
	
	setValue : function(value){
		try{
		this.dom.value = value;
		}catch(err){err.show && err.show('setValue');}
	},
	
	refresh : function(){
		try{
		var dom = this.dom;
		var k = parseInt(dom.value.length/this.lettersAmount);
		if((k = this.initWidth + k*this.deltaWidth) <= this.maxWidth){
			dom.style.width = this.width = k + 'px';
		}else{
			dom.style.width = this.maxWidth + 'px';
		}
		}catch(err){err.show && err.show('refresh');}
	}	
};

SlideSearchBar.onkeyup = function(e){
	try{
	var k = parseInt(this.value.length/this.m.lettersAmount, 10);
	if((k = (this.m.initWidth + k*this.m.deltaWidth)) <= this.m.maxWidth){
		this.style.width = this.m.width = k + 'px';
	}
	}catch(err){err.show && err.show('onkeyup');}
};

SlideSearchBar.parseDocument = function(className){
	try{
	var list = document.getElementsByClassName(className || SlideSearchBar.CLASS_NAME);
	var bars = [];
	for(var i = 0; i < list.length; i++){
		var bar = new SlideSearchBar(list[i]);
		bar.refresh();
		bars.push(bar);
	}
	return bars;
	}catch(err){err.show && err.show('parseDocument');}
}

Event.observe(window, 'load', function(){
	try{
	SlideSearchBar.parseDocument();
	}catch(err){err.show && err.show('window onload');}
});
}catch(err){err.show && err.show('slidesearchbar');}