jQuery.noConflict();

jQuery(document).ready(function($) {
	
	/// delet confirmation
	$('a.delete, a.cancel').click ( function(e) {
		e.preventDefault();
		$('.deleteconfirm').slideToggle('fast');
	});
	
	
	// update account checker
	$("#updateaccount").validate({
		rules: {companyname: {required: true,minlength: 3}},
		messages: {companyname: {required: "&uarr; Please enter a Company", minlength: "&uarr; Your Company must be at least 3 characters long"}}
	});
	
	// update user checker
	$("#updateuser").validate({
		rules: {
			usernamefirst: {required: true, minlength: 2},
			usernamelast: {required: true, minlength: 2},
			userpassword: {required: false, minlength: 6}
		},
		messages: {
			usernamefirst: {required: "&uarr; Please enter a first name", minlength: "&uarr; Names must be at least 2 characters long"},
			usernamelast: {required: "&uarr; Please enter a last name", minlength: "&uarr; Names must be at least 2 characters long"},
			userpassword: {minlength: "&uarr; Passwords must be at least 6 characters long"}
		}
	});
	
	
	// add address
	$("#addressadd").validate({
		rules: {
			addressname: {required: true, minlength: 3},
			addresscontactname: {required: true, minlength: 3},
			addresspostcode: {required: true},
			addresssuburb: {required: true, minlength: 3},
			addressstate: {required: true},
			addressstreet1: {required: true}
		},
		messages: {
			addressname: {required: "&uarr; Please enter a description", minlength: "&uarr; Descriptions must be at least 3 characters long"},
			addresscontactname: {required: "&uarr; Please enter a contact name", minlength: "&uarr; Names must be at least 3 characters long"},
			addresspostcode: {required: "&uarr; Select from Suburb dropdown"},
			addresssuburb: {required: "&uarr; Please enter your suburb", minlength: "&uarr; Suburbs must be at least 3 characters long"},
			addressstate: {required: "&uarr; Select from Suburb dropdown"},
			addressstreet1: {required: "&uarr; Please fill in your number and street"}
		}
	});
	
	$('#addressname').keyup( function() {
		var newtext = $(this).val();
		$('.addresslabel h4').text(newtext);
	});
	$('#addresscontactname').keyup( function() {
		var newtext = $(this).val();
		$('.addresslabel h5').text('c/o ' + newtext);
	});
	$('#addressstreet1').keyup( function() {
		var newtext = $(this).val();
		$('.addresslabel .address1').text(newtext);
	});
	$('#addressstreet2').keyup( function() {
		var newtext = $(this).val();
		$('.addresslabel .address2').text((newtext != '') ? ', ' + newtext : "");
	});
	$('#addresssuburb').keyup( function() {
		var newtext = $(this).val();
		if (newtext.length < 3) {
			$('#addressstate, #addressstateshort, #addresspostcode').val('');
		}
	});
	
	// email checker
	$("#emailerror").hide();
	$("#useremail").keyup(function() {
		var email = $("#useremail").val();
		if(email.length >= 5)
			{
				$.ajax({
					url: '/cfc/utilities.cfc',
					data: {method: 'emailcheck', useremail: email, returnformat: 'json'},
					success: function(data) {
						 if (data == 'true')
						 	{
								$("#useremail").addClass('error').removeClass('valid');
								$("#emailerror").slideDown('normal');
								$('a.submit').slideUp();
							}
						else
							{
								$("#useremail").removeClass('error');
								$("#emailerror").slideUp('normal');
								$('a.submit').slideDown();
							}
						}
       });
		}
		else
			{
				$("#emailerror").hide();
				$("#useremail").removeClass('error');
				$('a.submit').slideDown();
			}
	});
	
	// postcode lookup
	$( "#addresssuburb" ).autocomplete({
		source: function( request, response ) {
			
			$.ajax({
				url: "http://api.geonames.org/postalCodeSearchJSON",
				dataType: "jsonp",
				data: {
					featureClass: "P",
					style: "full",
					//maxRows: 5,
					country: "AU",
					placename_startsWith: request.term,
					username: "frysteen"
				},
				success: function( data ) {
				// console.log(data);
					response( $.map( data.postalCodes, function( item ) {
						return {
							label: item.placeName + ", " + item.adminCode1,
							value: item.placeName,
							postcode: item.postalCode,
							suburb: item.placeName,
							state: item.adminName1
						}
					}));
				}
			});
		},
		minLength: 3,
		select: function( event, ui ) {
			$('#addresspostcode').val(ui.item.postcode);
			$('#addressstate').val(ui.item.state);
			// fill in address preview
			$('.addresslabel .suburb').text(ui.item.suburb);
			$('.addresslabel .state').text(ui.item.state);
			$('.addresslabel .postcode').text(ui.item.postcode);
		}
	});

});

