// Segui Oggetto

$.fn.segui = function(options) { 
    options = $.extend(segui_engine.default_settings, options || {}); 
   return this.each(function() {  
			 segui_engine.bind(this, options);
   });    

};  


var segui_engine = function(){
	return {
		bind: function(root_selector, settings){
			/*if(settings == undefined){
				settings = segui_engine.default_settings
			}
			if(settings.prefix == undefined){
				settings.prefix = segui_engine.default_settings.prefix
			}*/
			//alert(settings.alert)
			//TODO: ottimizzare la selezione dei campi input
			var $input_email = $(root_selector).find("input[type='text'].email")			
			var $input_button = $(root_selector).find("input[type='button']")
			
			//intercetto il tasto invio sul campo di testo
			$input_email.keypress(function (e) {
				if (e.which == 13) {
					//NOTE: DA COMMENTARE IN CASO IL CAMPO EMAIL VENGA UTILIZZATO DA PIU' DI UN BOTTONE
					$input_button.trigger('click');
					return false
				}
			});
			
			//acquisico il valore di default del campo testuale dellla email
			$.data($input_email.get(0) , "email_def", settings.start_email_value)
			
			//svuoto il campo testuale al focusing...
			$input_email.focus(function(){
				var $this = $(this)
				if($this.val() == jQuery.data($this.get(0) ,"email_def")){
					$this.val("")			
					$this.removeClass("default")					
				}			
			});
			//...e lo riempo al bluring
			$input_email.blur(function(){
				var $this = $(this)
				if($this.val() == ""){
					$this.val(jQuery.data($this.get(0) ,"email_def"))
					$this.addClass("default")
				}			
			});
			
			$input_button.click(function(){
				$this = $(this)
				$root = $this.parent()
				//pulisco le label
				$root.find("label.msg, label.error").remove()
								
				var loader = $("<label class='loader'></label>")
				loader.html(settings.loader)
				$this.after(loader)
				$this.hide()
				
				//var _obj = $this.attr("id").slice(settings.prefix.length)
				var _obj = $this.attr("id").replace(/[^0-9]*/, "")
				var _email = $.trim($root.find("input[type='text'].email").val())
				//var _objtype = segui_engine.types(this)
				var _objtype = segui_engine.types($this.attr("id").replace(_obj, ""))
				//validazione
				var is_valid = true
				var err = $("<label />").attr("class", "error")
				if((_email.length <= 0) || (_email == $.data($input_email.get(0) , "email_def"))){		
					err.html("obbligatorio")
					$root.find("input[type='text'].email").after(err)	
					is_valid = false
				} else if(!_email.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/)){				
					err.html("email non valida")
					$root.find("input[type='text'].email").after(err)
					is_valid = false
				} 				
				
				if(is_valid){				
					//Registrazione
					$.post(
						"/servizi/segui_oggetto/segui_oggetto.ashx",
						{obj: _obj, email: _email, objtype: _objtype},
						function(data){
							data = data.replace(/\r\n/gi, data)
							loader.remove()
							var msg = $("<label />").attr("class", "msg")
							switch(data){
								case "1":
									//ok		
									msg.html(settings.msg_ok)
									break;
								case "0":
									//già esistente
									msg.html(settings.msg_already)
									break;
								case "-1":
									//errore
									msg.html(settings.msg_ko)
									break;
							}
							$this.after(msg)
							$this.show()
						}
					
					);
					} else {
						loader.remove()
						$this.show()
					}
					return false
				});
		
		
		}, 
		types: function(action_button){
			/*if(action == "autore"){
				return 1
			} else {
				return 0
			}	*/	
			switch(action_button){
				case "autore":
					return 1
					break;
				default:
					return 0					
			}
		},
		default_settings: { 			
				msg_ok: "ok",
				msg_ko: "ko",
				msg_already: "already",
				loader: "loader",
				start_email_value: "la tua email"
		}
		
	
	}


}();







