/* Author: Matt Bower

*/

(function($) {
    $(function() {
		// Leverage HTML5 Boilerplate to browser sniff
		var root = $('html').eq(0),
			isIE6 = root.hasClass('ie6'),
			isIE7 = root.hasClass('ie7'),
			isIE8 = root.hasClass('ie8'),
	
			$galleries = $('#content').find('.photo_gallery');
	
		if(isIE8 || isIE7 || isIE6) $('#mainnav li:last').addClass('last');
	
        // var $login_info = $('#login_details, #register_form');
        var $login_info = $('#register_form');
		if($login_info.length) {
			$('#username', $login_info).parent('li').after('<li><label for="username_confirm">Confirm Email Address:</label><input type="text" name="username_confirm" id="username_confirm" class="text large email" /></li>');
		}
		
		var $country = $('#country');
		if($country.length) {
			var $state = $('#state').parent(),
				$province = $('#province').parent(),
				updateStateProvinceDropdowns = function() {
					if($country.val() == 'United States') {
						$state.show();
						$province.hide();
					} else if ($country.val() == 'Canada') {
						$state.hide();
						$province.show();
					} else {
						$state.hide();
						$province.hide();
					}
				};
			$country.bind('change', function() {updateStateProvinceDropdowns()});
			updateStateProvinceDropdowns();
		}

		// Split up product listing into 2 columns on Job Details form
		var $jd_form_opts = $('#job_details').find('fieldset.options'),
			opts = $jd_form_opts.find('li').get();
		
		$jd_form_opts.children('ul').remove();
		
		$('<ul class="column" />').append(opts.splice(0, (opts.length/2)+1)).appendTo($jd_form_opts);
		$('<ul class="column" />').append(opts).appendTo($jd_form_opts);
		
		// Fallback support for input placeholder
		if(!Modernizr.input.placeholder) {
			$('input[placeholder]').each(function(idx, el) {
				var $el = $(el),
					txt = $el.attr('placeholder');

				if($el.val() === '') $el.val(txt);
				$el.bind('focus', function(ev) {
					if($el.val() === txt) $el.val('');
				}).bind('blur', function(ev) {
					if($el.val() === '') $el.val(txt);
				});
			});
		}

		var $announcements = $('#announcements');
		if($announcements.length) {
			$announcements.feature_rotator({
				// delay: 3000,
				autoplay: true
			});
		}
		
		// Galleria
		if(!isIE6 && $galleries.length && window.Galleria) {
			Galleria.loadTheme('/assets/js/galleria/themes/augi/galleria.augi.js');
			$galleries.addClass('js_photo_gallery').galleria();
		}
		
		// Make sure the Remove [Image] buttons on the account pages do a JS confirm
		$('.remove_btn').bind('click', function(ev) {
			return window.confirm('Are you sure you want to delete this image?');
		});
		
		// jQ Validate
		$('#login_details').validate({
			rules: {
				username: {
					email: true
				},
				password: {
					minlength: 5
				},
				password_confirm: {
					required: function(el) {
						return $('#password').val().length > 0;
					},
					minlength: 5,
					equalTo: "#password"
				},
				current_password: {
					required: true
				}
			},
			messages: {
				username: {
					email: 'Please enter a valid email address.'
				},
				password: {
					minlength: 'Please enter a password of at least 5 characters.'
				},
				password_confirm: {
					required: 'Please repeat your password of at least 5 characters.',
					minlength: 'Please enter a password of at least 5 characters.',
					equalTo: 'This must match your new password above.'
				},
				current_password: {
					required: 'Type your current password in order to change your email or password.'
				}
			}
		});

		$('#register_form').validate({
			rules: {
				username: {
					required: true,
					email: true
				},
				username_confirm: {
					required: true,
					email: true,
					equalTo: "#username"
				},
				cf_member_first_name: "required",
				cf_member_last_name: "required",
				password: {
					required: true,
					minlength: 5
				},
				password_confirm: {
					required: true,
					minlength: 5,
					equalTo: "#password"
				},
				captcha: "required",
				accept_terms: "required"
			},
			messages: {
				username: {
					required: 'Your email address is required.',
					email: 'Please enter a valid email address.'
				},
				username_confirm: {
					required: 'Please re-enter your email address to confirm it.',
					email: 'Please enter a valid email address.',
					equalTo: 'This must match your email address above.'
				},
				password: {
					required: 'Please enter a password of at least 5 characters.',
					minlength: 'Your password must be a minimum of 5 characters.'
				},
				password_confirm: {
					required: 'Please re-enter your password of at least 5 characters.',
					minlength: 'Your password must be a minimum of 5 characters.',
					equalTo: 'This must match your password above.'
				},
				cf_member_first_name: {
					required: 'Please enter your first name.'
				},
				cf_member_last_name: {
					required: 'Please enter your last name.'
				},
				captcha: {
					required: 'Please enter the numbers and letters you see above.'
				},
				accept_terms: {
					required: 'You must check the box to accept the AUGI.com Terms and Conditions.'
				}
			},
			errorPlacement: function(err, el) {
				if(el.attr('name') == 'accept_terms') el.parent('label').after(err);
				else el.after(err);
			}
		});
		
		$('#recover_password').validate({
			rules: {
				email: {
					required: true,
					email: true
				}
			},
			messages: {
				email: {
					required: 'You must enter your email address to recover your password.',
					email: 'Please enter a valid email address.'
				}
			}
		});
		
		$('#profile_details').validate({
			rules: {
				cf_member_first_name: 'required',
				cf_member_last_name: 'required',
				bday_m: 'required',
				bday_d: 'required',
				bday_y: 'required',
				url: 'url',
				cf_member_blog_url: 'url',
				cf_member_address1: 'required',
				location: 'required',
				country: 'required',
				cf_member_state: {
					required: function(el) {
						return $('#country').val() == 'United States';
					}
				},
				cf_member_province: {
					required: function(el) {
						return $('#country').val() == 'Canada';
					}
				},
				cf_member_postal_code: 'required',
				cf_member_phone: 'required'
			},
			messages: {
				cf_member_first_name: {
					required: 'Your first name is required.'
				},
				cf_member_last_name: {
					required: 'Your last name is required.'
				},
				bday_m: {
					required: 'Birthdays require a month.'
				},
				bday_d: {
					required: 'Birthdays require a date.'
				},
				bday_y: {
					required: 'Birthdays require a year.'
				},
				url: {
					url: 'Please enter a valid URL beginning with http://.'
				},
				cf_member_blog_url: {
					url: 'Please enter a valid URL beginning with http://.'
				},
				cf_member_address1: {
					required: 'Please enter your street address.'
				},
				location: {
					required: 'Please enter your city.'
				},
				country: {
					required: 'Please select your country.'
				},
				cf_member_state: {
					required: 'If you are from the United States, please select a state.'
				},
				cf_member_province: {
					required: 'If you are from Canada, please select a province.'
				},
				cf_member_postal_code: {
					required: 'Please enter your postal code.'
				},
				cf_member_phone: {
					required: 'Please enter your primary telephone number.'
				}
			}
		});
		
		$('#public_profile_form').validate({
			rules: {
				cf_member_profile_url_segment: {
					required: true,
					remote: {
						url: '/api/profile_url_unique/',
						type: 'post'
					}
				}
			},
			messages: {
				cf_member_profile_url_segment: {
					required: 'Please choose a Profile URL Suffix.',
					remote: 'That suffix is already taken.'
				}
			},
			onkeyup: false
		});
		
		$('#first_time_login').validate({
			rules: {
				screen_name: {
					required: true,
					remote: {
						url: '/api/screenname_unique/',
						type: 'post'
					}
				},
				cf_member_profile_url_segment: {
					required: true,
					remote: {
						url: '/api/profile_url_unique/',
						type: 'post'
					}
				}
			},
			messages: {
				screen_name: {
					required: 'Please choose a Forum Nickname.',
					remote: 'That nickname is already taken.'
				},
				cf_member_profile_url_segment: {
					required: 'Please choose a Profile URL Suffix.',
					remote: 'That suffix is already taken.'
				}
			},
			onkeyup: false
		});
		
		$('#nickname_form').validate({
			rules: {
				new_name: {
					required: true,
					remote: {
						url: '/api/screenname_unique/',
						type: 'post'
					}
				}
			},
			messages: {
				new_name: {
					required: 'Please choose a Forum Nickname.',
					remote: 'That nickname is already taken.'
				}
			}
		});
		
		
		$('#job_details').validate({
			rules: {
				cf_member_company_name: 'required',
				occupation: 'required',
				cf_member_industry: 'required',
				cf_member_job_function: 'required',
				cf_member_begin_cad: 'required',
				cf_member_purchase_authority: 'required',
				cf_member_number_of_applications: 'required',
				cf_member_number_of_users: 'required',
				cf_member_subscription_customer: 'required',
				cf_member_autodesk_products: 'required'
			},
			messages: {
				cf_member_company_name: {
					required: 'Please enter your employer.'
				},
				occupation: {
					required: 'Please enter your position title.'
				},
				cf_member_industry: {
					required: 'Please select your industry affiliation.'
				},
				cf_member_job_function: {
					required: 'Please select your job function.'
				},
				cf_member_begin_cad: {
					required: 'Please select when you started using CAD.'
				},
				cf_member_purchase_authority: {
					required: 'Please select how you are involved in purcahsing CAD software.'
				},
				cf_member_number_of_applications: {
					required: 'Please select how many CAD applications are in use in your organization.'
				},
				cf_member_number_of_users: {
					required: 'Please select how many CAD users there are in your organization.'
				},
				cf_member_subscription_customer: {
					required: 'Please select if you or your firm are subscription customers.'
				},
				cf_member_autodesk_products: {
					required: 'Please select which Autodesk products are used in your organization.'
				}
			},
			errorPlacement: function(err, el) {
				if(el.attr('name') == 'cf_member_autodesk_products') el.parents('ul').before(err);
				else el.after(err);
			}
		});
		
		//voting help
		$('.click-more a').click(function() {
            $('tr.less').hide();
            $('tr.more').show();
        });

		//atp more info reveal
		$('.atp-course h3').toggle(function() {
			$(this).parents('div').children('.more-info').slideDown('fast');
		}, function() {
			$(this).parents('div').children('.more-info').slideUp('fast');
		});
		
		//equalheights
		$('ul#promo_boxes li').equalHeights();
		
    });

})(jQuery);

