$(function(){
	menu.init();
	productimages.init();
	tabs.init();
	enquire.init();
	ie6.fix();

	// Code below, now in jQuery.datePicker.js :)

	//init date picking
	//$('.date-pick').datePicker({
	//		startDate: '01/01/1970',
	//		endDate: (new Date()).asString()
	//});

	$('#aff-web-form').bind('submit', function(event){

		var name = jQuery.trim($('#name').val());
		var company = jQuery.trim($('#company').val());
		var email = jQuery.trim($('#email').val());
		var phone = jQuery.trim($('#phone').val());
		var subject = jQuery.trim($('#subject').val());
		var serial = jQuery.trim($('#Primary_Product_Outer_Lot_Number__c').val());
		var countryreport = jQuery.trim($('#Country_of_Report__c').val());
		var countryoccurrence = jQuery.trim($('#Country_of_Occurrence__c').val());
		var date = jQuery.trim($('#00N70000002R1lc').val());
		var description = jQuery.trim($('#description').val());
		var resolved = jQuery.trim($('#resolved').val());
		var deathinjury = jQuery.trim($('#Death_or_Injury_Occurred__c').val());
		var falseresult = jQuery.trim($('#falseresult').val());

		if (name.length <= 0) {
		   alert("Please enter Your Name. This is a required field.");
		   return false;
		} else if (company.length <= 0) {
			alert("Please enter Your Company Name. This is a required field.");
		   return false;
		} else if (email.length <= 0) {
			alert("Please enter Your Email. This is a required field.");
		   return false;
		} else if (phone.length <= 0) {
			alert("Please enter Your Phone. This is a required field.");
		   return false;
		} else if (subject.length <= 0) {
			alert("Please enter a Product Name and REF Code. This is a required field.");
		   return false;
		} else if (serial.length <= 0) {
			alert("Please enter a Lot Number or Serial Number. This is a required field.");
		   return false;
		} else if (countryreport == -1) {
			alert("Please select a Country of Report. This is a required field.");
		   return false;
		} else if (countryoccurrence == -1) {
			alert("Please select a Country of Occurrence. This is a required field.");
		   return false;
		} else if (date.length <= 0) {
			alert("Please enter a Date of Occurrence. This is a required field.");
		   return false;
		} else if (description.length <= 0) {
			alert("Please enter a Description. This is a required field.");
		   return false;
		} else if (resolved == -1) {
			alert("Please indicate if this complaint or enquiry is resolved or are their any further actions required. This is a required field.");
		   return false;
		} else if (deathinjury == -1) {
			alert("Please indicate if Death or Injury has Occurred. This is a required field.");
		   return false;
		} else if (falseresult == -1) {
			alert("Please indicate if a Report of False Result has occured. This is a required field.");
		   return false;
		}

		var $$, $inputs,
			data = [], ii = 0, description ='';
		
		$$		= $(event.target).closest('form');
		$inputs	= $$.find('[class~=optional]');
		description = $("#description").val();

		$inputs.each(function(e, input) {
			var $input, $label;

			$input	= $(input);
			$label	= $$.find('label[for=' + $input.attr('id') + '] span');

			data[ii++] = $label.text();
			data[ii++] = ': ';
			data[ii++] = $input.val();
			data[ii++] = "\r\n";
		});
		
		$("#description").val(description + "\r\n" + data.join(''));

		/*
		var filter  = '';
		filter += '#name';
		filter += ', #company';
		filter += ', #email';
		filter += ', #phone';
		filter += ', :contains("*")';
		$('#page-content').find('form').basicFormValidation('/process/affiliate-web-form-js', filter);
		*/
		//return false;
		//e.preventDefault();
		//return false;
	});

	$("form #btnSend").live('click',function(){
		// need form
		var filter  = '';
		filter += '#firstname';
		filter += ', #surname';
		filter += ', #email';
		filter += ', #telephone';
		filter += ', :contains("*")';

		$('#page-dialog').find('form').basicFormValidation('/process/affiliate-web-form-js', filter);
	});

	var $enquire, $tabs,
		$friendLink, $friendPopup, $friendClose;

	// enquire side menu
	$enquire	= $('#product-link-list li.enquire a[href^=product-listing], #prodEnquire[href^=product-listing]');
	$tabs		= $("#tabrow li a, #prodTabs li a");

	$enquire.bind('click', function(event){
		$tabs.eq(0).trigger('click');
		event.preventDefault();
	});

	// send to a friend
	$('<li class="send-to-friend"><a href="#">Send to a friend</a></li>').insertBefore('#product-link-list li.print-this-page');
	$friendLink		= $('#product-link-list li.send-to-friend');
	$friendPopup	= $('#stafDiv');
	$friendClose	= $('#popClose');
	
	$friendLink.bind('click', function(event){
		$friendPopup.show();
		event.preventDefault();
	});

	$friendClose.bind('click', function(event){
		$friendPopup.hide();
		event.preventDefault();
	});

	$friendPopup.find('form').basicFormValidation();

	// cycle images on the homepage
	// see http://www.malsup.com/jquery/cycle/lite/
	if($.fn.cycle) {
		$('#home-bw-images').cycle();
	}

	// duplicate / remove
	if($.fn.duplicate_remove) {
		$('#price_e tbody tr').duplicate_remove();
	}
	
	$('#protocol, #price, #contract, #invoice').live('click', function(event){
		var $$ = $(this);
		if($$.is(':checked')){
			$("body").find('.conditional-hidden').each(function(){
				if($(this).attr('id')==$$.attr('id')+'_e'){
					$(this).removeClass('conditional-hidden').addClass('conditional-visible');
				}
			});
		}
		else {
			$("body").find('.conditional-visible').each(function(){
				if($(this).attr('id')==$$.attr('id')+'_e'){
					$(this).removeClass('conditional-visible').addClass('conditional-hidden');
				}
			});
		}
	});
});

ie6={
	fix:function(){
		if($.browser.msie && $.browser.version<=6){
			ie6.using=true;
			$('body').addClass('ie6');
			ie6.chooseInterest();
		}
	},
	chooseInterest:function(){
		$('.interest-container')
			.hover(function(){
				$(this).addClass('hover').find('div.interests').show();
			},function(){
				$(this).removeClass('hover').find('div.interests').hide();
			})
			.filter('.dropdown')
				.css({
					'position':'absolute',
					'float':'none',
					'left':'668px',
					'top':'110px'
				});
	}
};

enquire={
	enabled:true,
	init:function(){

		$("td .enquire a, td.enquire a, #product-link-list li.enquire a[href^=enquire], #prodEnquire[href^=enquire]").live('click',function(){
			if(enquire.enabled){
				enquire.enabled=false;
				var $img = $(this).children('img');
				$img.attr('src','/images/layout/load.gif');
				$.get($(this).attr('href'),function(html){
					$img.attr('src','/images/buttons/enquire.gif');
					$('#page-dialog').remove();
					if($(window).height() < 700) {
						var fromtop = $(window).scrollTop() + 50;
						$('body').append('<div id="page-dialog" style="position:absolute !important; top:' + fromtop + 'px;">' + $(html).find('div#page-content').html() +'</div>');
					} else {
						$('body').append('<div id="page-dialog">' + $(html).find('div#page-content').html() +'</div>');
					}
					$('#page-dialog').prepend("<div class='dialog-title'>Enquire <a href='#' onclick='$(this).parent().parent().jqmHide();return false;'>close</a></div>").jqm().jqmShow();
					enquire.enabled=true;
					
					//enquiry form has input hidden until checkbox is checked
					$(".frmHidden").hide();
					$("input#protocol").live('change',function(){
						if($(this).is(':checked')){
							$(".frmHidden").slideDown();
						}else{
							$(".frmHidden").slideUp();
						}
					});

					// need form
					var filter  = '';
					filter += '#firstname';
					filter += ', #surname';
					filter += ', #email';
					filter += ', #organisation';
					filter += ', #department';
					filter += ', #position';
					filter += ', #title';
					filter += ', #telephone';
					filter += ', :contains("*")';
					
					$('#page-dialog').find('form').basicFormValidation('/process/support-enquiry-js', filter);
				});
			}
			return false;
		});
	}
};

tabs={
	init:function(){
		var $content, $load, $tabs;

		$content	= $("#tab-content, #prodTabs_content_wrap");
		$load		= $("#tab-content-load");
		$tabs		= $("#tabrow li a, #prodTabs li a");

		$tabs.bind('click', function(event){
			var $$, $li, $lis,
				href;

			$$		= $(event.target).closest('a');
			$li		= $$.closest('li');
			$lis	= $li.siblings();
			href	= $$.attr('href');

			$lis.removeClass('selected');
			$li.addClass('selected');

			$content.jScrollPaneRemove();
			$content.hide();
			$load.show();
			$.get(href,function(bob){
				$content.html($(bob).find("#tab-content, #prodTabs_content_wrap").html()).show();
				$load.hide();
				tabs.scrollable($content);
			});
			
			event.preventDefault();
			return false;
		});
		tabs.scrollable($content);
	},
	scrollable:function($content){
		if($.fn.jScrollPane) {
			$content.not('.no-scrollbar').jScrollPane({
				showArrows:			true,
				scrollbarWidth:		15,
				scrollbarMargin:	15,
				arrowSize:			15
			});
		}
	}
};

productimages={
	current:	1,
	timer:		false,
	init:		function(){
		var $images, $numbers, $image, $video;

		$images		= $('#product-images, #productImages');
		$numbers	= $('#image-numbers, #productImageLinks');
		$image		= $('#product-image, #productImage');
		$video		= $('#video-container');

		if($numbers.find('li').length > 1){
			$numbers.prepend('<li id="image-previous">&nbsp;</li>');
			$numbers.append('<li id="image-next">&nbsp;</li>');
			$numbers.find('li a').bind('click', function(event){
				var $$, $li, $lis,
					href;

				$$		= $(event.target).closest('a');
				$li		= $$.closest('li');
				$lis	= $li.siblings();
				href	= $$.attr('href');

				$lis.removeClass('selected');
				$li.addClass('selected');

				if(href == '#video-container') {
					$image.hide();
					$video.show();
				}
				else {
					$image.show().attr('src', href);
					$video.hide();
				}
				
				event.preventDefault();
				return false;
			});
			$('#image-previous').click(productimages.prev);
			$('#image-next').click(productimages.next);

			productimages.timer = setInterval(function(){
				$('#image-next').trigger('click', [true]);
			}, 2000);
		}
	},
	prev: function(event, auto){
		var $numberLis = $('#image-numbers li, #productImageLinks li');

		if(typeof auto === 'undefined') {
			// triggered manually
			clearInterval(productimages.timer);
		}

		productimages.current--;
		if(productimages.current < 1) {
			productimages.current = $numberLis.length-2;
		}
		$numberLis.eq(productimages.current).children().trigger('click');
	},
	next: function(event, auto){
		var $numberLis = $('#image-numbers li, #productImageLinks li');

		if(typeof auto === 'undefined') {
			// triggered manually
			clearInterval(productimages.timer);
		}

		productimages.current++;
		if(productimages.current >= $numberLis.length-1) {
			productimages.current = 1;
		}
		$numberLis.eq(productimages.current).children().trigger('click');
	}
};

menu={
	init:function(){
		/*
		if(!$.browser.msie || $.browser.version>7){
			menu.lvl3();
			menu.lvl2();		
		}else{
			menu.ie();
		}
		*/

		if(!$.browser.msie || $.browser.version>7){
			var $accordion = $('#page-sidebar dl.accordion');
			$accordion.find('dt').bind('click', function(event){
				var $$;
				$$	= $(event.target);
				$$.toggleClass('open').next('dd').slideToggle();
				$$.closest('dl').siblings().children('dt').add($$.siblings()).removeClass('open').next('dd').slideUp();
			});
		}else{
			menu.ie6();
		}
	},
	lvl3:function(){
		$('ul.menu .menu-level-2').nextAll().hide();
		$('ul.menu .menu-level-2').click(function(event){
			$(this).parent().siblings("ul").children(".menu-level-2").removeClass("menu-level-2-open").nextAll().slideUp();
			$(this).toggleClass("menu-level-2-open").nextAll().slideToggle();
		});
	},
	lvl2:function(){
		$("ul.menu .menu-level-1").nextUntil("li").hide();
		$("ul.menu .menu-level-1").click(function(event){
			$(this).siblings(".menu-level-1").removeClass("menu-level-1-open").nextUntil("li").slideUp();
			$(this).toggleClass("menu-level-1-open").nextUntil("li").slideToggle();
		});
	},
	ie:function(){
		//lower level
		$('ul.menu ul ul').hide();
		$('ul.menu ul li.menu-level-2').click(function(event){
			if(!$(this).hasClass('menu-level-2-open')){
				$("ul.menu ul ul").slideUp();
				$('ul.menu ul li.menu-level-2').removeClass("menu-level-2-open");
				$(this).next('li').children('ul').slideDown();
				$(this).addClass("menu-level-2-open");
				event.stopPropagation();
			}else{
				$("ul.menu ul ul").slideUp();
				$('ul.menu ul li.menu-level-2').removeClass("menu-level-2-open");
				event.stopPropagation();
			}
		});
		
		//upper level
		$("ul.menu ul.clearfix").hide();
		$("ul.menu li.menu-level-1").click(function(event){
			var $$, $li,
				thisindex, group;

			$$			= $(this);
			$li			= $(event.target).closest('li');
			thisindex	= $$.index();
			group		= -1;

			if(!$$.hasClass('menu-level-1-open')){
				if($li.is(':not(.menu-level-3)')) {
					$(this).siblings("li").removeClass("menu-level-1-open");
					$(this).addClass("menu-level-1-open");
					$(this).parent().find("ul.clearfix").slideUp().each(function(){
						if($(this).index()==0) {
							group++;
						}
						if(thisindex==group) {
							$(this).slideDown();
						}
					});
				}
			}else{
				$(this).parent().children("li").removeClass("menu-level-1-open");
				$(this).parent().find("ul.clearfix").slideUp();
			}
		});		
	},
	ie6:function(){
		
		$(".accordion_toggler_2").click(function(){
			if($(this).hasClass("open")){
				//close it
				$(this).removeClass("open");
				$(this).next("dd").slideUp();
			}else{
				//first close others
				$others=$(this).parent().siblings("dl")
				$others.children("dt").removeClass("open");
				$others.children("dd").slideUp()
				//now open this
				$(this).addClass("open");
				$(this).next("dd").slideDown();
				
			}
		});
		$(".accordion_toggler_1").click(function(){
			if($(this).hasClass("open")){
				//close it
				$(this).removeClass("open");
				$(this).next("dd").slideUp();

			}else{
				//first close others
				$(this).siblings("dt").removeClass("open");
				$(this).siblings("dd").slideUp();
				//now open this
				$(this).addClass("open");
				$(this).next("dd").slideDown();	
			}
		});
		$(".accordion_content_1,.accordion_content_2").hide();
		
	}
};




// Flash External Interface
$.fn.basicFormValidation = function(action, filter) {
	return this.each(function(){
		$(this).bind('submit', function(event){
			var $$, $input, $msg,
				data, error, success,
				empty = false;

			$$		= $(event.target).closest('form');
			$input	= $$.find('input[type=text], textarea, select#title');
			$msg	= $$.find('#msgDiv');
			data	= $$.serialize();

			if(typeof action === 'undefined') {
				action	= $$.attr('action');
			}
			if(typeof filter !== 'undefined') {
				$input = $input.filter(filter);
			}

			$input.each(function() {
				var $$ = $(this);
				if($.trim($$.val()).length < 2 || ($$.is('select') && $$.val() == '-1')) {
					empty = true;
					$$.associatedLabelInput().addClass('err');
				}
				else {
					$$.associatedLabelInput().removeClass('err');
				}
			});

			error	= '<div id="msgDiv" class="err">There was a problem with one or more fields. Please check that all fields contain valid data and that email addresses have been entered in the correct format.</div>';
			success	= '<div id="msgDiv" class="done">Your message has been sent successfully</div>';

			if(empty === true) {
				// add the error
				if($msg.length === 0) {
					$$.prepend(error);
				}
				else {
					$msg.replaceWith(error);
				}
			}
			else {
				$.get(action, data, function(response) {
					if(response == 1) {
						$input.filter('[name^=stf_f]').val('');
						if($.fn.jqmHide) {
							$('#page-dialog').jqmHide();
						}
						/*
						if($msg.length === 0) {
							$$.prepend(success);
						}
						else {
							$msg.replaceWith(success);
						}
						*/
					}
					else {
						if($msg.length === 0) {
							$$.prepend(error);
							console.log('boo2');
						}
						else {
							$msg.replaceWith(error);
						}
					}
				});
			}

			event.preventDefault();
		});
	});
};

if(typeof jQuery != "undefined") {
	(function($){
		$.fn.extend({
			associatedLabelInput: function(type) {
				var $collection = jQuery([]);

				type = (typeof type === 'undefined') ? 'label' : type;
				type = type.toLowerCase();

				this.each(function() {
					var $$ = $(this);

					switch(type) {
						case 'label':
							$collection = $collection.add('label[for=' + $$.attr('id') + ']');
							break;

						case 'input':
							$collection = $collection.add('#' + $$.attr('for'));
							break;
					}
				});

				return $collection;
			}
		});
	})(jQuery);
}
