fieldValidator = function(config) {
	var config = config
	var input
	
	controllers = {
		init: function() {
			input = config.input
			var parent = this
			
			input.bind("change", {}, function(e){parent.valider(e)})
		},
		
		valider: function() {
			$.ajax({
				url: '/users/valider_champ',
				data: (function() {
					var ret = 'champ='+config.champ+'&modele='+config.modele
					 jQuery.each(config.valeur, function(i, val) {
							ret += '&valeur['+i+']=' + val.attr('value')
					 })
					return ret;
				})(),
				success: function(msg){
					if (config.trigger && config.trigger.attr('value') != "") {
						config.trigger.change()
					}
					if (msg == "")  {
						input.parent().parent().removeClass("fieldWithErrors")
						input.parent().parent().addClass("fieldWithoutErrors")
						input.parent().next().next().html("")
						return;
					}
					input.parent().next().next().html(msg)
					input.parent().parent().removeClass("fieldWithoutErrors")
					input.parent().parent().addClass("fieldWithErrors")
					input.focus()
					input.select()
				 }
			})
		}
	}
	
	controllers.init()
	return controllers
}

function hasValidated() {
	return $(".fieldWithErrors").length != 0
}

function transformeHtmlGenereRails() {
	$(".champ").each(function() {
		if ($(this).parent().hasClass('fieldWithErrors')) {
			var parent = $(this).parent()
			$(this).prependTo(parent.parent())
			parent.parent().parent().addClass('fieldWithErrors')
			parent.remove()
		}
	})
}

function labelLogin() {
	if ($('#login').val() == '') {
		$('#login').addClass('empty')
		$('#login').val('identifiant')
	}
}

function removeLabelLogin() {
	if ($(this).hasClass('empty') ) {
		$(this).removeClass('empty').val('')
	}
}
function focusPassword() {
	$(this).prev().removeClass('hidden_elem')
	$(this).prev().focus()
	$(this).addClass('hidden_elem')
}

function trigger(e, data) {
  var el = $('.thumbs').find('a[href$="' + data.id + '"]').get(0);
  currentArrow.call(el);
}

function currentArrow() {
	$('.thumbs > a').removeClass('active')
	$(this).addClass('active')
}

$(document).ready(function() {
	
	labelLogin()
	$('#login').blur(labelLogin)
	$('#login').select().focus()
	$('#login').focus(removeLabelLogin).keypress(removeLabelLogin)
	
	$('#pass_placeholder').click(focusPassword).focus(focusPassword)
	
  submit_image_tag_mouseover("inscrire", "/images/accueil/creez.jpg", "/images/accueil/creez_on.jpg")
  submit_image_tag_mouseover("submit", "/images/accueil/connecter.jpg", "/images/accueil/connecter_on.jpg")

	if (hasValidated()) {
		transformeHtmlGenereRails()
		$("div:not(.fieldWithErrors) > .champ").each(function() {
			$(this).parent().addClass("fieldWithoutErrors")
		})
	}

	new fieldValidator({input:$("#user_login"),champ:'login',valeur:{login:$("#user_login")},modele:'User'})
	new fieldValidator({input:$("#user_password"),champ:'password',valeur:{password:$("#user_password")},modele:'User'})
	new fieldValidator({input:$("#user_email"),champ:'email',valeur:{email:$("#user_email")},modele:'User'})
	new fieldValidator({input:$("#cinema_nom"),champ:'nom',valeur:{nom:$("#cinema_nom")},modele:'Cinema'})


	var $scroll  = $('#slider .main-photo')
	var $panels = $('#slider .panel-container > img');
	var scrollOptions = {
	  target: $scroll, 
	  items: $panels,
	  navigation: '.thumbs a',
	  axis: 'xy',
	  duration: 500,
	  easing: 'swing',
		interval: 6000,
		force:true,
		onBefore: trigger
	};
	
	$('#slider').serialScroll(scrollOptions);
	$.localScroll(scrollOptions);
	scrollOptions.duration = 1;
	$.localScroll.hash(scrollOptions);

})