$(function () {
	
	$('#contact_warning').hide();
	
	 $('a.edit_address').live('click',function(e) {
		$(this).parents('fieldset:first').find('input.readonly').removeAttr('readonly').removeClass('readonly');
		e.preventDefault();	
	});
	
	$('#type').bind('change',function() {
		$(this).parents('form').trigger('submit');
	});
	
	
	$('.popup').click(function() {
		if($(this).attr('checked')) {
			$('#contact_warning_link').trigger('click');
		}
	});
	
	$('#con_preference_2.mobile').change(function() {
		if($(this).attr('checked') && !$('#b_mobile').val()) {
			$('#b_mobile')
				.addClass('error')
				.addClass('required')
			.siblings('div.notice')
				.fadeIn()
			.siblings('em.optional')
				.hide();
		}
		else {
			$('#b_mobile')
				.removeClass('error')
				.removeClass('required')
			.siblings('div.notice')
				.fadeOut()
			.siblings('em.optional')
				.show();
		}
	})
	
	$('#org_type').change(function() {
		if($(this).val() == 'Other') {
			$('#other_org_type_holder').fadeIn().find('input').addClass('required');	
		}
		else {
			$('#other_org_type_holder').fadeOut();
		}
	});
	
	$('#other_org_type_holder').hide();
	
	/*$('#country_republicofireland').change(function() {
			
		prefix = 'b';
		holder = $('#b_postcode_lookup_holder');
		
		var address_div = $('#'+prefix+'_address_holder');
	
		if($(this).attr('checked')) {
			outside_uk = true
		}
		else {
			outside_uk = false;
		}
		
		if(!outside_uk) {
			if(!address_div.find('.address_1').val() && !address_div.find('.postcode_zip').val()){
				address_div.remove();
			}
			return false;
		}
		
		params = url_params_to_obj(document.location.href);
		
		$.get('../ajax/index.php'
				,{
					page:'shop'
					,action:'non_uk_address'
					,prefix:prefix
					,signup_type:params.type
				 }
				,function(data) {
					$(data).find('div.r1:last').remove();
//						country_selector = $(data).find('#'+prefix+'_country').parents('div.r1:first');

					if(address_div.length) {
						address_div.show();
						
						if(!$('#'+prefix+'_country').length) {
							address_div.append(country_selector);
						}
						
						$("#" + prefix + "_postcode_zip,#" + prefix + "_county_state").each(function(index) {
							
							label = $(this).parents('div:first').find('label')
							
							if(index == 0) {
								label.html('Postcode / Zip');
							}
							else {
								label.html('County / State');
							}
						})
					}
					else {
						holder.after(data);
					}
					
					// allow address edit
					if(outside_uk == true) {
						edit_link = address_div.find('a.edit_address');
						edit_link.trigger('click');
					}
				}
		);
	});*/
	
//	$('#b_country').change(function() {
//		
//		prefix = $(this).attr('id').substr(0,1);
//		holder = $('#b_postcode_lookup_holder');
//		
//		var address_div = $('#'+prefix+'_address_holder');
//		
//		outside_uk = false;
//		
//		if($(this).attr('multiple')) {
//			if($(this).val().indexOf('Republic of Ireland') != -1) {
//				outside_uk = true
//			}
//		}
//		else if($(this).val() == 'Republic of Ireland') {
//			outside_uk = true
//		}
//				
//		if(!outside_uk) {
//			if(!address_div.find('.address_1').val() && !address_div.find('.postcode_zip').val()){
//				address_div.remove();
//			}
//			return false;
//		}
//		else {
//			outside_uk = true;
//		}
//		
//		continue_style = $('#cart_continue').get().style;
//		
//			params = url_params_to_obj(document.location.href);
//			$.get('../ajax/index.php'
//					,{
//						page:'shop'
//						,action:'non_uk_address'
//						,prefix:prefix
//						,signup_type:params.type
//						,country:$('#b_country').val()
//					 }
//					,function(data) {
//						$(data).find('div.r1:last').remove();
////						country_selector = $(data).find('#'+prefix+'_country').parents('div.r1:first');
//
//						if(address_div.length) {
//							address_div.show();
//							
//							if(!$('#'+prefix+'_country').length) {
//								address_div.append(country_selector);
//							}
//							
//							$("#" + prefix + "_postcode_zip,#" + prefix + "_county_state").each(function(index) {
//								
//								label = $(this).parents('div:first').find('label')
//								
//								if(index == 0) {
//									label.html('County / State');
//								}
//								else {
//									label.html('Postcode / Zip');
//								}
//							})
//						}
//						else {
//							holder.after(data);
//						}
//						
//						// allow address edit
//						if(outside_uk == true) {
//							edit_link = address_div.find('a.edit_address');
//							edit_link.trigger('click');
//						}
//					}
//			);
//	});
	
	/* Submission validation */
	$('#signup_form').submit(function(event) {
		
		inputs = $(this).find(':input.required:visible,select.required:visible');
		
		inputs.each(function(index,element) {
			j_element = $(element);
			
			if($.trim(j_element.val()).length < 2 || (this.tagName=='SELECT' && this.value==0)) {
				event.preventDefault();
				$('#required_missing:hidden').fadeIn();
				j_element.siblings('div.notice').fadeIn();
			}
			else {
				j_element.siblings('div.notice').fadeOut();
//				$('#required_missing:visible').fadeOut();
			}
		})
		
		// address validation
		if(!$('#b_address_1').length && (!$('#b_house_name').val() || !$('#b_postcode_lookup').val())) {
			$('#b_postcode_lookup_holder div.notice').fadeIn();
			event.preventDefault();
			$('#required_missing:hidden').fadeIn();
		}
		
		// Country checkboxes
		if(!($('#country_checkboxes').find('input:checked').length)) {
			$('#country').find('div.notice').fadeIn();
		}

		$(this).data('valid',!event.isDefaultPrevented());
		
		if(!$('div.notice:visible:not(#required_missing)').length) {
			$('#required_missing').fadeOut();
		}
		
		if($('#b_house_name_confirm').val()) {
			$('.building_required').fadeOut();
		}
		
		
		scrollToFirstNotice();
	})
	if(browser_is_ie6()) {
		$('#signup_form').unbind('submit');
	}

function scrollToFirstNotice() {
	$('#scrolltarget').attr('id','');
	notice = $('#signup_form div.notice:visible:first');
	
	notice.parents('div.r1').attr('id','scrolltarget')
	
	target = document.getElementById('scrolltarget');
			
	if(target) {
		if(!elementInViewport(target)) {
			$.scrollTo('#scrolltarget',{offset:-window.innerHeight / 2});
		}
	}
}
	
	
	/* School signup redirect */
	if($('#school_signup').length) {
		$('a').bind('click', function(event) { window.location = this.href; });
		
		timeout = setTimeout(function() {
			$('#school_signup').trigger('click');
		},5000)
	}
	
	$('#proceed').bind('submitted',function() {
		if(!$(this).attr('disabled')) {
			$('form p.shop_button')
				.after('<p>Your sign-up is now being processed, please wait</p>')
					.next('p')
					.addClass('processing_notice')
					.hide()
					.fadeIn();			
		}
		
		$(this).attr('disabled',true);
		
	});
	
	$('#signup_form').submit(function(event) {
		if($(this).data('valid') === true) {
			$('#proceed').trigger('submitted');
		}
	});
	if(browser_is_ie6()) {
		$('#signup_form').unbind('submit');
	}
})

function elementInViewport(el) {
  var top = el.offsetTop;
  var left = el.offsetLeft;
  var width = el.offsetWidth;
  var height = el.offsetHeight;

  while(el.offsetParent) {
    el = el.offsetParent;
    top += el.offsetTop;
    left += el.offsetLeft;
  }

  return (
    top >= window.pageYOffset &&
    left >= window.pageXOffset &&
    (top + height) <= (window.pageYOffset + window.innerHeight) &&
    (left + width) <= (window.pageXOffset + window.innerWidth)
  );
}
