document.observe('dom:loaded',InitializePage);


function InitializePage(){
}


function fitTextToHeight(elem,height){
	elem = $(elem);

	var content = elem.down() || elem;
	var height = height || elem.up().getHeight();

	var size = content.getStyle('font-size');
	var pos = size.search(/\D+$/);
	var ending =  size.substring(pos);
	var size = size.substring(0,pos);


	content.setStyle({paddingTop : '0px',paddingBottom : '0px', height : 'auto'});
	


	var h = content.getHeight();
	while(h > height){
		size = size - 1;
		content.setStyle({'fontSize' : size + ending});
		h = content.getHeight();
	}

	var t = Math.floor((height - h)/2);
	var b = height - h - t;

	content.setStyle({paddingTop : t + 'px',paddingBottom : b + 'px'});
}


function setupIconBackground(){
	$$('.icon-button[class~=small]').each(function(btn){
		var action = undefined;
		$w(btn.className).each(function(name){
			var i;

			if(name == "icon-button")
				return;
			if((i = name.search('-button')) >= 0){
				if(!Object.isUndefined(action)){
					throw("Button has multple button classes");
				}

				action = name.substr(0,i);
			}
		});
		if(!Object.isUndefined(action))
			btn.setStyle({backgroundImage : "url('/images/icons/" + action + "_small.png')"});
	});
}


Hash.addMethods({
	sortBy1 : function(iterator, sorter, context) {
		return this.map(function(value, index) {
			return {
				value: value,
				criteria: iterator.call(context, value, index)
			};
		}).sort(function(left, right) {
			var a = left.criteria, b = right.criteria;
			return sorter ? sorter(a,b) : (a < b ? -1 : a > b ? 1 : 0);
		}).pluck('value');
	},
	sortForLocale : function(iterator,context){
		if(!Object.isFunction(iterator)){
			var k = iterator;
			iterator = function(item){return item.value[k]}; 
		}
		return this.sortBy1(iterator,function(a,b){return a.toString().localeCompare(b.toString())},context);
	}
});


Array.prototype.sortBy1 = function(iterator, sorter, context) {
	return this.map(function(value, index) {
		return {
			value: value,
			criteria: iterator.call(context, value, index)
		};
	}).sort(function(left, right) {
		var a = left.criteria, b = right.criteria;
		return sorter ? sorter(a,b) : (a < b ? -1 : a > b ? 1 : 0);
	}).pluck('value');
};
Array.prototype.sortForLocale = function(iterator,context){
	if(!Object.isFunction(iterator)){
		var k = iterator;
		iterator = function(item){return item[k]}; 
	}
	return this.sortBy1(iterator,function(a,b){return a.toString().localeCompare(b.toString())},context);
};


	


