var FEELGOOD = {
	showSearch : function(ev, el){
		var searchCont = $('searchContainer');
		if(!searchCont.isOpen){
			el.className = 'searchLinkSelected';
			ev = new Event(ev);
			ev.stop();
			searchCont.setStyle('visibility', 'visible');
			searchCont.isOpen = true;
		}
		else{
			el.className = 'searchLink';	
		}
	},
	builtAutoEraseFields : function(){
		var autoEraseFields = $$('input.autoEraseMe','textarea.autoEraseMe');
		autoEraseFields.each(function(item,index){
			item.defaultValue = item.value;
			item.onclick = item.onfocus =  function(){
				if(this.value == this.defaultValue){
					this.value = "";
				}
				else{
					this.select();
				}
			}
			item.onblur = function(){
				if(this.value == ""){
					this.value = this.defaultValue;
				}
			}
		});
	},
	builtCheckBoxes: function(){
		$$('div.checkBox').each(function(item, index){
			item.addEvent('click', function(ev){
				var elem = $(this);
				var input = $('receiveUpdatesField');
				var inputType = input.get('type');
				if(elem.hasClass('notChecked')){
					elem.removeClass('notChecked');
					if(inputType == 'text' || inputType == 'hidden'){
						input.set('value', 'checked');
					}
					else if(inputType == 'checkbox'){
						input.set('checked', 'checked');
					}
				}
				else{
					elem.addClass('notChecked');
					if(inputType == 'text' || inputType == 'hidden'){
						input.set('value', 'not checked');
					}
					else if(inputType == 'checkbox'){
						input.set('checked', '');
					}
				}
			});
		});
	},
	builtHomeScroller : function(id, autoPlay, itemsPerMove){
		var movable = $(id);
		var paging = $(id+'Paging');
		if(!movable || !paging){
			return;
		}
		var pagingLinks = new Array();
		var items = movable.getElements('li'); 
		movable.maxIdx = items.length - 1;
		if(movable.maxIdx > 0 ){
			movable.isPaused = false;
			movable.isMoving = false;
			movable.idx = 0;
			movable.move = items[0].getStyle('width').toInt()+items[0].getStyle('margin-right').toInt();
			movable.setStyle('width', items.length*movable.move);
			movable.tween = new Fx.Tween(movable, {
				link: 'cancel',
				duration: 1500,
				transition: 'expo:in:out',
				onComplete: function(){
					movable.isMoving = false;
				}
			}).set('left', 0);
			movable.goNext = function(){
				if(!movable.isMoving){
					var newIdx;
					pagingLinks[movable.idx].removeClass('color');
					newIdx = movable.idx < movable.maxIdx ? movable.idx+1 : 0;
					movable.goTo(newIdx);
				}
			}
			movable.goPrevious = function(){
				if(!movable.isMoving){
					var newIdx;
					
					newIdx = movable.idx > 0 ? movable.idx-1 : movable.maxIdx;
					movable.goTo(newIdx);
				}
			}
			movable.goTo = function(idx){
				$clear(movable.periodos);
				movable.isMoving = true;
				pagingLinks[movable.idx].removeClass('color');
				movable.idx = idx;
				movable.tween.start('left', -idx*movable.move);
				pagingLinks[movable.idx].addClass('color');
				
				
				if(autoPlay){
					movable.periodos = movable.autoRotation.periodical(5000);	
				}
				
			}
			movable.autoRotation = function(){
				if(!movable.isPaused && !movable.isMoving){
					movable.goNext();	
				}
			}
			var previous = new Element('a', {
				'href' : '#',
				'class' : 'previous',
				'events': {
					'click': function(ev){
						ev.stop();
						movable.goPrevious();	
					}
				}
			});
			previous.inject(paging);
			for(i=0;i<items.length;i++){
				items[i].addEvents({
					'mouseenter': function(){
						movable.isPaused = true;	
					},
					'mouseleave': function(){
						movable.isPaused = false;
					}
				});
				var a = new Element('a', {
					'href' : '#',
					'html' : i+1,
					'events': {
						'click': function(ev){
							ev.stop();
							movable.goTo(this.idx);	
						}
					}
				});
				a.idx = i;
				if(i == 0){
					a.addClass('color');
					movable.selected = a;
				}
				pagingLinks.push(a);
				a.inject(paging);
			}
			var next = new Element('a', {
				'href' : '#',
				'class' : 'next',
				'events': {
					'click': function(ev){
						ev.stop();
						movable.goNext();	
					}
				}
			});
			next.inject(paging);
			if(autoPlay){
				movable.periodos = movable.autoRotation.periodical(5000);
			}
		}
	},
	createPaging: function(itemsTotal, itemsPerPage, pagingWidth, url, pagingContainer, pagingTarget){
		var pagingContainer = $(pagingContainer);
		var pagesTotal = Math.ceil(itemsTotal / itemsPerPage);
		var url = url + '&page=';
		if(pagesTotal > 1){
			var previous = new Element('a', {
					'class': 'previous',
					'href': '#',
					'events': {
						'click': function(ev){
							var ev = new Event(ev);
							ev.stop();
							var selected = pagingContainer.getElement('a.color');
							var previousPage = selected.get('html').toInt() - 1;
							if(previousPage >= 1){
								if(this.getNext() == selected){
									var previousElement = selected.clone();
									previousElement.cloneEvents(selected);
									previousElement.set('html', previousPage);
									previousElement.removeClass('color');
									next.getPrevious().dispose();
									previousElement.inject(this, 'after');
									previousElement.fireEvent('click', ev);
								}
								else{
									selected.getPrevious().fireEvent('click', ev);
								}
							}
						}
					}
			});
			previous.inject(pagingContainer);
			for(var i=1;(i<=pagesTotal && i <= pagingWidth);i++){
				var a = new Element('a', {
					'html': i,
					'href': '#',
					'events': {
						  'click': function(ev){
								var ev = new Event(ev);
								ev.stop();
								var caller = this;
								var selected = pagingContainer.getElement('a.color');
								if(caller.hasClass('color')){
									return;	
								}
								var trgt = $(pagingTarget);
								trgt.fade('out');
								selected.removeClass('color');
								caller.addClass('color');
								var request = new Request({
									url: url+caller.get('html'),
									method: 'get',
									onSuccess: function(responseText){
										trgt.set('html', responseText).fade('in');
									}
								});
								request.send();
						  }
					 }
				});
				if(i==1){
					a.addClass('color');	
				}
				a.inject(pagingContainer);
			}
			var next = new Element('a', {
					'class': 'next',
					'href': '#',
					'events': {
						'click': function(ev){
							var ev = new Event(ev);
							ev.stop();
							var selected = pagingContainer.getElement('a.color');
							var nextPage = selected.get('html').toInt() + 1;
							if(nextPage <= pagesTotal){
								if(this.getPrevious() == selected){
									var nextElement = selected.clone();
									nextElement.cloneEvents(selected);
									nextElement.set('html', nextPage);
									nextElement.removeClass('color');
									previous.getNext().dispose();
									nextElement.inject(this, 'before');
									nextElement.fireEvent('click', ev);
								}
								else{
									selected.getNext().fireEvent('click', ev);
								}
							}
						}
					}
			});
			next.inject(pagingContainer);
		}
		
	}
};
window.addEvent('domready', function(){
	FEELGOOD.builtAutoEraseFields();
	FEELGOOD.builtCheckBoxes();
	$(document.body).addEvent('click',function(e) { 
		var searchCont = $('searchContainer');						 
		if(searchCont && searchCont.isOpen && !e.target || !$(e.target).getParents().contains(searchCont)) { 
			searchCont.setStyle('visibility', 'hidden');
			searchCont.isOpen = false;
			$('searchLink').className = 'searchLink';
		}
	});
});
