/**
 * @author Sonic
 */

$(document).ready(function(){
	
	$("#searchfields").bind("keypress", function(e) {
             if (e.keyCode == 13) {
                  $("#search_submit").trigger('click');
				 return false;
            }
    });
		
	$('#search_submit').click(function(){
		
		$('.loader').show();
		$('.submit').hide();
		
		var $inputs = $('#searchfields :input');

	    // not sure if you wanted this, but I thought I'd add it.
	    // get an associative array of just the values.
	    var values = {};
	    var querystring = "";
	    $inputs.each(function() {
	        values[this.name] = $(this).val();
			querystring += "&" + this.name + "=" + $(this).val();
	    });

		
		$.ajax({
				type: "POST",
				data: querystring,
				url: $('#searchfields').attr('action'),
				success: function(msg, textStatus){
					$('#search_results').html(msg);
					$('.loader').toggle();
					$('.submit').toggle();
				}
		});
		
	});
	
	
	var feedback = $("#newfeedback").validate(
	{
		rules: {
			name: {
				required: true,
				minlength:2
			},
			comments: {
				required: true,
				minlength:2
			}
		},
		messages: {
			name: {
				required: "Please enter your name"
			},
			comments: {
				required: "Please enter your comments"
			}
		},
		submitHandler: function(form) {
			
			$('.loader').show();
			$('#error').html('');
			$('#feedback_submit').hide();
			
			$(form).ajaxSubmit(
				function(data){
					
					if(data.indexOf('success')>-1){
						
						$('#feedbackcell').html('<p><b>Feedback sent. Thank you!</b></p>');
						$('.loader').hide();
						$('#feedback_submit').show();
						
					}else{
						
						msg  = data.split('|');
						$('#error').html(msg[1]);
						$('.loader').hide();
						$('#feedback_submit').show();
						
					}

					
				}
			);
		}
	});
	
	
	var n = $("#newpassword").validate(
	{
		rules: {
			password: {
				required: true,
				minlength:6
			},
			confirm_password: {
				required: true,
				minlength:6,
				equalTo: "#password"
			}
		},
		messages: {
			password: {
				required: "Please enter your new password",
				minlength: "Please enter a minimum of 6 characters"
			},
			confirm_password: {
				required: "Please confirm your new password",
				equalTo: "Please confirm your new password"
			}
		},
		success: function(label) {
			// set &nbsp; as text for IE
			label.html("&nbsp;").addClass("checked");
		},
		submitHandler: function(form) {
			
			$('.loader').show();
			$('#error').html('');
			$('#activate_submit').hide();
			
			$(form).ajaxSubmit(
				function(data){
					
					if(data.indexOf('success')>-1){
						
						$('#error').html('Password Reset.<br /><a href="/login" class="textlink">Click here to login. </a>');
						$('.error').removeClass("checked");
						$('#email').val('');
						$('.loader').hide();
						$('#activate_submit').show();
						
					}else{
						
						msg  = data.split('|');
						$('#error').html(msg[1]);
						$('.loader').hide();
						$('#activate_submit').show();
						
					}

					
				}
			);
		}
	});
	
	
	
	var l = $("#reset").validate(
	{
		rules: {
			email: {
				required: true,
				email: true
			}
		},
		messages: {
			email: {
				required: "Please enter your Email address",
				email: "Please enter a valid Email address"
			}
		},
		success: function(label) {
			// set &nbsp; as text for IE
			label.html("&nbsp;").addClass("checked");
		},
		submitHandler: function(form) {
			
			$('.loader').show();
			$('#error').html('');
			$('#reset_submit').hide();
			
			$(form).ajaxSubmit(
				function(data){
					
					if(data.indexOf('success')>-1){
						
						$('#error').html('Mail sent. Please check your email account.');
						$('.error').removeClass("checked");
						$('#email').val('');
						$('.loader').hide();
						$('#reset_submit').show();
						
					}else{
						
						msg  = data.split('|');
						$('#error').html(msg[1]);
						$('.loader').hide();
						$('#reset_submit').show();
						
					}

					
				}
			);
		}
	});
	
	
	var l = $("#login").validate(
	{
		rules: {
			email: {
				required: true,
				email: true
			},
			password: {
				required: true,
				minlength:6
			}
		},
		messages: {
			password: "Please enter your password (min 6 characters)",
			email: {
				required: "Please enter your Email address",
				email: "Please enter a valid Email address"
			}
		},
		success: function(label) {
			// set &nbsp; as text for IE
			label.html("&nbsp;").addClass("checked");
		},
		submitHandler: function(form) {
			
			$('.loader').show();
			$('#error').html('');
			$('#login_submit').hide();
			
			$(form).ajaxSubmit(
				function(data){
					
					if(data.indexOf('success')>-1){
						
						document.location = '/profile';
						
					}else{
						
						msg  = data.split('|');
						$('#error').html(msg[1]);
						$('.loader').hide();
						$('#login_submit').show();
						
					}

					
				}
			);
		}
	});
	
	 
	
	var u = $("#update_personal").validate({
		groups: {
		    dob: "dob_day dob_month dob_year"
		},
		errorPlacement: function(error, element) {
		     if (element.attr("name") == "dob_day" 
		                 || element.attr("name") == "dob_month" 
						 	|| element.attr("name") == "dob_year")
		       error.insertAfter("#dob_year");
		     else
		       error.insertAfter(element);
		},
		rules: {
			fname: {
				required:true,
				minlength:3,
				maxlength:15
			},
			lname: {
				required:true,
				minlength:3,
				maxlength:15
			},
			gender: {
				required: true
			},
			dob_day: {
				required: true
			},
			dob_month: {
				required: true
			},
			dob_year: {
				required: true
			},
			email: {
				required: false,
				email: true
			},
			password: {
				required: false,
				minlength:6
			}
		},
		success: function(label) {
			// set &nbsp; as text for IE
			label.html("&nbsp;").addClass("checked");
		},
		submitHandler: function(form) {
			
			$('.loader').show();
			$('#personal_error').html('');
			$('#personal_submit').hide();
			
			$(form).ajaxSubmit(
				function(data){
					if(data.indexOf('success')>-1){
						
						$('#personal_error').html('Saved.').fadeOut('Slow');
						$('.loader').hide();
						$('#personal_submit').show();
						
						//close popup
						window.parent.Shadowbox.close();
						
					}else{
						
						msg  = data.split('|');
						$('#personal_error').html(msg[1]);
						$('.loader').hide();
						$('#personal__submit').show();
						
					}

					
				}
			);
		}
		
	});
	
	
	var update = $("#update_status").validate({
		rules: {
			'update': {
				required: true
			}
		},
		submitHandler: function(form) {
			
			$('.loader').show();
			$('#update_error').html('');
			$('#update_submit').hide();
			
			$(form).ajaxSubmit(
				function(data){
					
					
					if(data.indexOf('success')>-1){
						
						msg  = data.split('|');
						$('.updater').val('');
						$('#updates').prepend(msg[1]);
						$('.loader').hide();
						$('#update_submit').show();
						
					}else{
						
						msg  = data.split('|');
						$('#update_error').html(msg[1]);
						$('.loader').hide();
						$('#update_submit').show();
						
					}

					
				}
			);
		}
		
	});
	
	
	var z = $("#add_membership").validate({
		rules: {
			'organisation_name': {
				required: true
			},
			'organisation_day': {
				required: true
			},
			'organisation_month': {
				required: true
			},
			'organisation_year': {
				required: true
			}
		},
		submitHandler: function(form) {
			
			$('.loaderaddmembership').show();
			$('#membership_error').html('');
			$('#membership_submit').hide();
			
			$(form).ajaxSubmit(
			
				function(data){
					
					if(data.indexOf('success')>-1){
						
						msg  = data.split('|');
						
						$('#membership_error').html('Saved.').fadeOut('Slow');
						$('.loaderaddmembership').hide();
						$('#membership_submit').show();
						/*
						$('#display_membership').prepend(msg[1]);
						*/
						location.reload();
					}else{
						
						msg  = data.split('|');
						$('#membership_error').html(msg[1]);
						$('.loaderaddmembership').hide();
						$('#membership_submit').show();
						
					}

					
				}
			);
		}
		
	});
	
	
	var r = $("#add_work").validate({
		rules: {
			'name': {
				required: true
			},
			'type': {
				required: true
			},
			'role': {
				required: true
			}
		},
		submitHandler: function(form) {
			
			$('.loaderaddwork').show();
			$('#work_error').html('');
			$('#work_submit').hide();
			
			$(form).ajaxSubmit(
				function(data){
					
					
					if(data.indexOf('success')>-1){
						
						msg  = data.split('|');
						
						$('#add_work')[0].reset();
						$('#work_error').html('Saved.').fadeOut('Slow');
						$('.loaderaddwork').hide();
						/*
						$('#work_submit').show();
						$('#display_work').prepend(msg[1]);
						*/
						location.reload();
						
					}else{
						
						msg  = data.split('|');
						$('#work_error').html(msg[1]);
						$('.loaderaddwork').hide();
						$('#work_submit').show();
						
					}

					
				}
			);
		}
		
	});
	
	
	$('.deletemembership').live("click",function(){

		work_id = $(this).attr('data');
		
		$('.loader'+work_id).show();
		$(this).hide();
		
		$.ajax({
		   type: "POST",
		   data: "id="+work_id,
		   url: "/users/deletemembership/",
		   success: function(msg, textStatus){
			   $('#membershiptable_'+work_id).hide();
		   	}
		});
		
	});
	
	$('.deletework').live("click",function(){

		work_id = $(this).attr('data');
		
		$('.loader'+work_id).show();
		$(this).hide();
		
		$.ajax({
		   type: "POST",
		   data: "id="+work_id,
		   url: "/users/deletework/",
		   success: function(msg, textStatus){
			   $('#worktable_'+work_id).hide();
		   	}
		});
		
	});
	
	var r = $("#update_roles").validate({
		rules: {
			'selected_roles[]': {
				required: true
			}
		},
		submitHandler: function(form) {
			
			$('.loader').show();
			$('#roles_error').html('');
			$('#roles_submit').hide();
			
			$(form).ajaxSubmit(
				function(data){
					
					
					if(data.indexOf('success')>-1){
						
						$('#roles_error').html('Saved.').fadeOut('Slow');
						$('.loader').hide();
						$('#roles_submit').show();
						
					}else{
						
						msg  = data.split('|');
						$('#roles_error').html(msg[1]);
						$('.loader').hide();
						$('#roles_submit').show();
						
					}

					
				}
			);
		}
		
	});
	
	$('#roles_submit').click(function(){
		$('#selected_roles option').attr("selected",true);
	});
	
	
	$('#roles').change(
		function(){
			
			if($.browser.msie) {
				id = $('#roles option:selected').val();
				text = $('#roles option:selected').text();
				$('#roles option:selected').remove().appendTo('#selected_roles');
				
				//$('#selected_roles').append(new Option(text, id));
				$('#selected_roles').attr('selectedIndex', '-1'); 
				
				table = '<table border="0" cellspacing="0" class="editor" id="role_'+id+'">';
				table += '<tr><td class="label"><strong style="font-weight: bold">'+text+'</strong></td><td></td></tr><tr><td class="label">Expertise:</td><td><div class="field_container"><select class="inputtext" name="expertise_'+id+'" id="expertise"><option value="Beginner">Beginner</option><option value="Experienced">Experienced</option><option value="Professional">Professional</option></select></div></td>';
				table += '</tr><tr><td class="label" valign="top">Project Description:</td><td><div class="field_container"><textarea name="description1_'+id+'"></textarea></div></td></tr><tr><td class="label" valign="top">Description of Role:</td>';
				table += '<td><div class="field_container"><textarea name="description2_'+id+'"></textarea></div></td></tr><tr><td class="label">Link:</td><td><div class="field_container"><input value="" class="inputtext" name="link_'+id+'" id="link" type="text" /></div></td></tr><tr><td colspan="2" class="tablebottom"><br /></td></tr></table>';
												
				$('#role_details').prepend(table);
				
				$('#empty_roles').hide();
			}
		}
	);
	
	$('#roles option').dblclick(
		function(){
			
			
			id = $(this).val();
			text = $(this).text();
			
			$('#selected_roles').append(new Option(text, id));
			$('#selected_roles').attr('selectedIndex', '-1'); 
			
			table = '<table border="0" cellspacing="0" class="editor" id="role_'+id+'">';
			table += '<tr><td class="label"><strong style="font-weight: bold">'+text+'</strong></td><td></td></tr><tr><td class="label">Expertise:</td><td><div class="field_container"><select class="inputtext" name="expertise_'+id+'" id="expertise"><option value="Beginner">Beginner</option><option value="Experienced">Experienced</option><option value="Professional">Professional</option></select></div></td>';
			table += '</tr><tr><td class="label" valign="top">Project Description:</td><td><div class="field_container"><textarea name="description1_'+id+'"></textarea></div></td></tr><tr><td class="label" valign="top">Description of Role:</td>';
			table += '<td><div class="field_container"><textarea name="description2_'+id+'"></textarea></div></td></tr><tr><td class="label">Link:</td><td><div class="field_container"><input value="" class="inputtext" name="link_'+id+'" id="link" type="text" /></div></td></tr><tr><td colspan="2" class="tablebottom"><br /></td></tr></table>';
											
			$('#role_details').prepend(table);
			
			$('#empty_roles').hide();
		}
	);
	
	
	$('#selected_roles').dblclick(
		
		function(){			
			
						
			$('#role_'+$("#selected_roles :selected").val()).remove();
			$("#selected_roles :selected").remove();
			
			$('#selected_roles').attr('selectedIndex', '-1');
			$('#roles').attr('selectedIndex', '-1');
			
			if($('#selected_roles option').length==1){
				$('#empty_roles').show();
			}
			 
		}
	);
	
	var v = $("#register").validate({
		groups: {
		    dob: "dob_day dob_month dob_year"
		},
		errorPlacement: function(error, element) {
		     if (element.attr("name") == "dob_day" 
		                 || element.attr("name") == "dob_month" 
						 	|| element.attr("name") == "dob_year")
		       error.insertAfter("#dob_year");
		     else
		       error.insertAfter(element);
		},
		rules: {
			fname: {
				required:true,
				minlength:3,
				maxlength:15
			},
			lname: {
				required:true,
				minlength:3,
				maxlength:15
			},
			username: {
				required:true,
				minlength:5,
				maxlength:15,
				remote: "/users/checkusername/"

			},
			email: {
				required: true,
				email: true,
				remote: "/users/checkemail/"
			},
			password: {
				required: true,
				minlength:6
			},
			gender: {
				required: true
			},
			dob_day: {
				required: true
			},
			dob_month: {
				required: true
			},
			dob_year: {
				required: true
			},
			terms: {
				required: true
			}
		},
		messages: {
			fname: "Please enter your First Name (min 3 characters)",
			lname: "Please enter your Last Name (min 3 characters)",
			password: "Please enter your password (min 6 characters)",
			dob_day: "Please enter your date of birth",
			dob_month: "Please enter your date of birth",
			dob_year: "Please enter your date of birth",
			gender: "Please select either Male or Female.",
			dob: "Please enter your date of birth",
			terms: "You must agree to Crewger's terms to register.",
			username: {
				remote: "In use. Please choose a different username",
				required: "Please enter a Username"
			},
			email: {
				required: "Please enter your Email address",
				email: "Please enter a valid Email address",
				remote: "Email already registered. Click here &#187;"
			}
		},
		success: function(label) {
			// set &nbsp; as text for IE
			label.html("&nbsp;").addClass("checked");
		},
		submitHandler: function(form) {
			
			$('.loader').show();
			$('#error').html('');
			$('#signup_submit').hide();
			
			$(form).ajaxSubmit(
				function(data){
					if(data.indexOf('success')>-1){
						
						document.location = '/profile';
						
					}else{
						
						msg  = data.split('|');
						$('#error').html(msg[1]);
						$('.loader').hide();
						$('#signup_submit').show();
						
					}

					
				}
			);
		}
		
	});
		
	
});

