(function( $ ){

  $.fn.signUp = function() {
    var max = 0;
	var lform = '';
	this.each(function() {
		init_form($(this));
		init_submit_btn($(this));
		init_input_labels($(this));

	});
	
  };
  
  var init_form = function(lform){
	
	  	lform.submit(function(e){
			if($(this).attr('id') == 'signup_form'){
				submit_user_info($(this));
				return false;
			}
						
	  });
  };
  
  
  var submit_user_info = function(lform){
		
		var valid_form = validate_input(lform);
		
		if(!valid_form["error"]){
			show_loader(lform)
			$.ajax({
				type: "POST",
				url: "/email-sign-up/",
				data: lform.serialize(),
				success: function(msg){
					 lform.parent().find('p').html('Thank You');
					 lform.fadeOut(200);
				}
			});
		
		}else{
				
			display_alert(valid_form);
			hide_loader(lform);
		}
	  
  };
  
  var show_loader = function(lform){
		  lform.find('a').hide(0);
		  if(lform.find('#sign_loader').length == 0){
		  	lform.append('<img id="sign_loader" src="/images/loading_transparent.gif" style="display:none;">');
		  }
		  lform.find('#sign_loader').show(0);
  }
  
  var hide_loader = function(lform){
		  
		  lform.find('#sign_loader').hide(0);
		  lform.find('a').fadeIn(0);
  }
  
  
  var display_alert = function(obj){
	  
		var msg = "Please correct the following errors: \n\n"; 
		for(x=0; x < obj.message.length; x++){
			msg += '- ' + obj.message[x] + "\n";	
		}
		
		alert(msg);
  }
  
  var validate_input = function(lform){
		  var lcheck = new Object();
		  var lmsg = [];
		  
		  lcheck.error = false;
		  
		  /* validate name */
		  if( !validate_empty( lform.find('#signup_name').val(), lform.find('#signup_name').attr('alt') ) ){
				lcheck.error = true;  
				lmsg.push('Please enter your Name'); 
		  }
		  
		   if( ! validate_email( lform.find('#signup_email').val() ) ){
				lcheck.error = true;  
				lmsg.push('Please provide a valid Email'); 
		  }
		  
		  /*
		  if( !validate_empty( lform.find('#signup_company').val(), lform.find('#signup_company').attr('alt') ) ){
				lcheck.error = true;  
				lmsg.push('Please enter your Company'); 
		  } */
		  
		 
		  
		  lcheck.message = lmsg;
		  
		  
		  return lcheck;
  };
  
  var init_submit_btn = function(lform){
		lform.find('a').click(function(){
			lform.submit();	
			return false;
		});
  };
  
  var init_input_labels = function(lform){
		var active_color = '#000';
		var default_color = '#9c9c9c';
		
		lform.find('input').each(function(){
			sfield = $(this);
			if($(this).val() == $(this).attr('alt')){
				sfield.css('color', default_color);
			}else{
				sfield.css('color', active_color);
			}
			
			if($(this).val() == ''){
				sfield.val($(this).attr('alt'));	
			}
						
			// Attach focus. Clear field and color black if default
			sfield.focus(function(){
				if($(this).val() == $(this).attr('alt')){
					$(this).val('');
					$(this).css('color',active_color);
				}
					
			});
			
			// Attach blur. Clear field and color black if default
			sfield.blur(function(){
				// blank or unchanged field. return to default
				if($(this).val() == '' || $(this).val() == $(this).attr('alt')){
					$(this).val($(this).attr('alt'));
					$(this).css('color',default_color);
				}
					
			});
		});
  };
  
  
  var init_form_validation = function(lform){
		lform.find('input').each(function(){
			lform.submit();	
			return false;
		});
  };
 
  var validate_empty = function(lstring, llabel){
		if(lstring === ''){
			return false;	
		}else if(lstring == ' '){
			return false;	
		}else if(lstring.length < 1){
			return false;	
		}else if(lstring == llabel){
			return false;
		}else{
			return true;	
		}
  };
  
  var validate_email = function(lemail){
	
   	   return (lemail.indexOf(".") > 2) && (lemail.indexOf("@") > 0);
 
  }
  
  
})( jQuery );

