/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);


$(document).ready(function() {

	$('.sortable').addClass('temp-hide');	
	
	// -------------------------------------------
	// By Material/By Product Line highlights
	// -------------------------------------------
	
	// Split URL, check if it's one of these pages
	var pathArray = window.location.pathname.split( '/' );
	var productsTest = jQuery.inArray("products", pathArray);
	var materialTest = jQuery.inArray("material", pathArray);
	var lineTest = jQuery.inArray("line", pathArray);
	
	// First test that we're in the Products area
	if (productsTest > -1) {
	
		if (materialTest > -1) {
			$('div.page-cell').first().addClass('target');
			$('div.page-cell').first().next().addClass('target');
		} else if (lineTest > -1) {
			$('div.page-cell').last().addClass('target');
			var scrollTest = $(window).height();
			if (scrollTest < 750) {
				setTimeout(function(){
					$.scrollTo('.span-2-cols', 'slow');
				}, 500);
			}
		}
	}
	
	// -------------------------------------------
	// Fix for broken product menus when somebody forgets to completely fill out order form
	// -------------------------------------------
	
	if ($('#pricing').length > 0) { // Existence of #pricing is good indicator of a single-product page
		if ($('.error').length > 0) {
			$('.error').addClass('overlay-error'); // Makes this specific so that CSS doesn't affect all error messages
			var pathname = window.location.pathname;
			var random = Math.floor(Math.random()*100000);
			$('.error').prepend('<p id=\"error-top\">Error: the form was not completely filled out.</p>');
			$('.error').append('<p id=\"error-back\"><a href=\"'+pathname+'?'+random+'\">Back</a></p>');
		}
	}
	
	// -------------------------------------------
	// Fix leftnav highlighting for Knowledge Base articles
	// -------------------------------------------
	
	// Check URL to see if it's a KB article
	var kbTest = jQuery.inArray('kb', pathArray);
	
	if (kbTest>-1) {
	
		// Find relevant category
		pathArray.reverse();
		var kbCategory = pathArray[1];
		
		if (kbCategory == 'silver') {
			$('ul.menu a[href$="silver"]').addClass('active');
		} else if (kbCategory == 'gold') {
			$('ul.menu a[href$="gold"]').addClass('active');
		} else if (kbCategory == 'nanotoxicology') {
			$('ul.menu a[href$="nanotoxicology"]').addClass('active');
		} else if (kbCategory == 'general') {
			$('ul.menu a[href$="general"]').addClass('active');
		}
	}
		
	
	// -------------------------------------------
	// Makeshift tabs for ordering tables
	// -------------------------------------------
	
	// Check URL to see if it's an ordering table
	var otTest = jQuery.inArray("nano_catalog", pathArray);
	
	if (otTest>-1) {
		
		// Store URL pieces as variables
		pathArray.reverse();
		var otCappingAgent = pathArray[0];
		var otConcentration = pathArray[1];
		var otMaterial = pathArray[2];
		
		// Check which kind of ordering table it is, so can populate capping agent tabs
		// (probably an appallingly stupid way of doing this, but I don't know any better)
		
		// If it's a spherical table, can assume Citrate/Tannic/PVP EXCEPT for Gold BioPure
		if (otMaterial=='sphericalgold' && otConcentration=='BioPure') {
			$('#content-region').prepend('<p><em>Choose a capping agent \(<strong class=\"help-capping-jump\">need help?</strong>\):</em></p><ul id=\"ordering-table-nav\" class=\"ca-'+otCappingAgent+'\"><li class=\"tannic\"><a href=\"/nano_catalog/'+otMaterial+'/'+otConcentration+'/Tannic\">Tannic</a></li><li class=\"pvp\"><a href=\"/nano_catalog/'+otMaterial+'/'+otConcentration+'/PVP\">PVP</a></li></ul>');
		} else if (otMaterial=='sphericalsilver' || otMaterial=='sphericalgold') {
			$('#content-region').prepend('<p><em>Choose a capping agent \(<strong class=\"help-capping-jump\">need help?</strong>\):</em></p><ul id=\"ordering-table-nav\" class=\"ca-'+otCappingAgent+'\"><li class=\"citrate\"><a href=\"/nano_catalog/'+otMaterial+'/'+otConcentration+'/Citrate\">Citrate</a></li><li class=\"tannic\"><a href=\"/nano_catalog/'+otMaterial+'/'+otConcentration+'/Tannic\">Tannic</a></li><li class=\"pvp\"><a href=\"/nano_catalog/'+otMaterial+'/'+otConcentration+'/PVP\">PVP</a></li></ul>');
		}
		
		// If it's a MALDI table, disable the SKU links
		if (otConcentration=='maldi') {
			$('table.sortable a[href^="/node"]').each(function (i) {
				$(this).replaceWith(this.innerHTML);
			});
			
		}
		
		// Fix leftnav for non-default tables (ugh)
		if (otMaterial=='sphericalsilver' && otCappingAgent !== 'Citrate' && otConcentration == 'NanoXact') {
			$('ul.menu a[href="/products/nanoxact"]').parent().append('<ul class=\"menu\"><li class=\"leaf first active-trail\"><a href=\"/nano_catalog/sphericalsilver/NanoXact/Citrate\" class=\"active\">Silver Ordering Table</a></li><li class=\"leaf last\"><a href=\"/nano_catalog/sphericalgold/NanoXact/Citrate\">Gold Ordering Table</a></li></ul>');
		} else if (otMaterial=='sphericalsilver' && otCappingAgent !== 'Citrate' && otConcentration == 'BioPure') {
			$('ul.menu a[href="/products/biopure"]').parent().append('<ul class=\"menu\"><li class=\"leaf first active-trail\"><a href=\"/nano_catalog/sphericalsilver/BioPure/Citrate\" class=\"active\">Silver Ordering Table</a></li><li class=\"leaf last\"><a href=\"/nano_catalog/sphericalgold/BioPure/Citrate\">Gold Ordering Table</a></li></ul>');
		} else if (otMaterial=='sphericalgold' && otCappingAgent !== 'Citrate' && otConcentration == 'NanoXact') {
			$('ul.menu a[href="/products/nanoxact"]').parent().append('<ul class=\"menu\"><li class=\"leaf first\"><a href=\"/nano_catalog/sphericalsilver/NanoXact/Citrate\">Silver Ordering Table</a></li><li class=\"leaf last active-trail\"><a href=\"/nano_catalog/sphericalgold/NanoXact/Citrate\" class=\"active\">Gold Ordering Table</a></li></ul>');
		} else if (otMaterial=='sphericalgold' && otCappingAgent !== 'Tannic' && otConcentration == 'BioPure') {
			$('ul.menu a[href="/products/biopure"]').parent().append('<ul class=\"menu\"><li class=\"leaf first\"><a href=\"/nano_catalog/sphericalsilver/BioPure/Citrate\">Silver Ordering Table</a></li><li class=\"leaf last active-trail\"><a href=\"/nano_catalog/sphericalgold/BioPure/Citrate\" class=\"active\">Gold Ordering Table</a></li></ul>');
		}
	} // /otTest
	
	
	// -------------------------------------------
	// Collapsible abstracts
	// -------------------------------------------

	$('.abstract').prev().append(' <span class=\"abstract-button\">Abstract</span>');
	$('.abstract').hide();
	$('.abstract-button').click(function(){
		$(this).toggleClass('highlight');
		$(this).parent().next('.abstract').slideToggle('fast');
	});
	
	// Because .abstract-button is inserted after the initial DOM is created, Selectivizr can't add :hover so must add a .hover class here for IE.
	$(".abstract-button").hover(function () {
		$(this).addClass('hover');
	}, function () {
		$(this).removeClass('hover');
	});
	
	// -------------------------------------------
	// Collapsible help sections
	// -------------------------------------------

	$('#block-block-41 div.content').hide();
	$('#block-block-41 h2, .help-concentration-jump').click(function(){
		$('#block-block-41 h2').toggleClass('highlight');
		$('#block-block-41 div.content').slideToggle('slow', function() {
			$.scrollTo('#block-block-41', 'slow');
		})
	});
	
	$('#block-block-45 div.content').hide();
	$('#block-block-45 h2, .help-concentration-jump').click(function(){
		$('#block-block-45 h2').toggleClass('highlight');
		$('#block-block-45 div.content').slideToggle('slow', function() {
			$.scrollTo('#block-block-45', 'slow');
		})
	});
	
	$('#block-nodeblock-426 h2+div.content').hide();
	$('#block-nodeblock-426 h2, .help-capping-jump').click(function(){
		$('#block-nodeblock-426 h2').toggleClass('highlight');
		$('#block-nodeblock-426 h2+div.content').slideToggle('slow', function() {
			$.scrollTo('#block-nodeblock-426', 'slow');
		});
	});
	
	$('#block-nodeblock-476 h2+div.content').hide();
	$('#block-nodeblock-476 h2, .help-capping-jump').click(function(){
		$('#block-nodeblock-476 h2').toggleClass('highlight');
		$('#block-nodeblock-476 h2+div.content').slideToggle('slow', function() {
			$.scrollTo('#block-nodeblock-476', 'slow');
		});
	});
	
	$('#pricing-items').hide();
	$('#pricing-button').click(function(){
		$('#pricing-button').toggleClass('highlight');
		$('#pricing-items').slideToggle('fast');
	});
	
	$('#sku-items').hide();
	$('#sku-button').click(function(){
		$('#sku-button').toggleClass('highlight');
		$('#sku-items').slideToggle('fast');
	});
	
	// Fix positioning of help sections on single-product pages by adding a CSS hook
	
	if ($('#pricing').length > 0) { // Existence of #pricing is good indicator of a single-product page
		$('#content-bottom').addClass('nudge');
	}
	
	// Fix positioning of Capping Agent section when Concentration section is not present
	if ($('#block-block-41').length == 0 && $('#block-block-45').length == 0) {
		if ($('#block-nodeblock-426').length > 0) {
			$('#block-nodeblock-426').addClass('nudge');
		} else if ($('#block-nodeblock-476').length > 0) {
			$('#block-nodeblock-476').addClass('nudge');
		}
	}
	
	// -------------------------------------------
	// Captioning stuffs
	// -------------------------------------------
	
	$('.main-content img[src*="images"]').jcaption({
	});
	
	$('div.caption').each(function (i) {
		$(this).has('img.centered').addClass('centered');
		$(this).has('img:nth-child(2)').attr('style', 'width:660px;margin-left:0;margin-right:0;');
    });
	
	$('p').has('a[href="#toc"]').each(function (i) {
		$(this).attr('style', 'clear:both;');
    });
 
	// -------------------------------------------
	// Table stuffs
	// -------------------------------------------
	
	$('table').each(function (i) {
		var currentTable = this;
		var tableWidth = $(this).width();
		if (tableWidth > 630) {
			$(currentTable).attr('width', '660');
			}
      });

	// -------------------------------------------
	// Plasmonic page
	// -------------------------------------------
	
	$('.learn-more-expansion').prev('p').prepend('<span class=\"learn-more-button\">Learn more</span>');
	$('.learn-more-expansion').hide();
	$('.learn-more-button').each(function (i) {
		var buttonWidth = $(this).width()+2;
		// Firefox needs the extra pixel for some reason; even number needed to avoid blurriness in WebKit when centering text
		$(this).css('width', buttonWidth+'px');
	});	
	$('.learn-more-button').click(function(){
		$(this).toggleClass('highlight');
		$(this).parent().next('div').slideToggle('slow')
		if($(this).hasClass('highlight')) {
			$(this).text('Close');
		} else {
			$(this).text('Learn more');
		}
		$.scrollTo({top:'-=100px'}, 'slow');
	});	
	
	  
	// -------------------------------------------
	// Custom Synthesis page
	// -------------------------------------------
	
	// Top tabs
	$(function() {
		$('.inner-content-tabs').tabs();
	});
	
	// Cloud tags
	$('ul.tag-cloud li').click(function(){
	
		var tagName = $(this).attr('id');
		$('ul.tag-cloud li').not(this).removeClass('selected');

		if($(this).hasClass('selected')) {
			// Going out of order. If a tag is already selected, show everything when removing tag
			$('#custom-products div').each(function(i){
				$(this).show();
			});
		
		} else {
		
			$('#custom-products div').each(function(i){
				if($(this).hasClass(tagName)){
					$(this).show();
				} else {
					$(this).hide();
				}
			});
		
		}
	
		$(this).toggleClass('selected');
		
		/*var tagName = $(this).attr('id');
		$('ul.tag-cloud li').not(this).removeClass('selected');

		if($(this).hasClass('selected')) {
			// Going out of order. If a tag is already selected, show everything when removing tag
			$('#custom-products div').each(function(i){
				$(this).show();
			});
		
		} else {
		
			$('#custom-products div').each(function(i){
				if($(this).hasClass(tagName)){
					$(this).addClass('active');
				} else {
					
				}
			});
		
		}
	
		$(this).toggleClass('selected');*/

	});

	// -------------------------------------------
	// MSDS page
	// -------------------------------------------
	
	$(function() {
		$('#msds-page li > ul').each(function(i) {
			var parentList = $(this).parent('li');
			var subList = $(this).remove();
			parentList.wrapInner('<a class="expandable" />').find('a').click(function() {
				$(this).toggleClass('highlight');
				subList.toggle();
			});
			parentList.append(subList);
		});
		$('#msds-page ul ul').hide();
	});
	
});

$(window).load(function() {

	if (!document.all) {
		var fireOnThis = document.getElementById('load-first');
		var evObj = document.createEvent('MouseEvents');
		evObj.initEvent( 'click', true, true );
		fireOnThis.dispatchEvent(evObj);
	} else {
		var fireOnThis = document.getElementById('load-first');
		fireOnThis.fireEvent("onclick");
	}
	$('.sortable').removeClass('temp-hide');
});
