
//	ORBEL.com (c) 2010 ////////////////////////////////////////////////////////////////////////////////////////
//	PRODUCT APPLICATION // Board Level Shielding /////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////



// URL HASH ///////////////////////////////////////////////////////////////////////////////////////////////

function startHash(){
	var hashes = window.location.href.slice(window.location.href.indexOf('#') + 1).split('=');
	var hashStep = hashes[0];
	var hashPart = hashes[1];
	// Select
	if (hashStep == 'select' && hashPart != ''){
		$('#slider a').filter('#' + hashPart).trigger('click');
	// Build + Options
	} else if (hashStep == 'build' || hashStep == 'options'){
		if (hashPart != '') {
			$('#slider a').filter('#' + hashPart).trigger('click');
		}
		$('#tabs a#' + hashStep).trigger('click');
	}
}


// DIMENSIONS /////////////////////////////////////////////////////////////////////////////////////////////

function formatValue(inputValue){
	return (inputValue.charAt(0) + '.' + inputValue.slice(1));
}
function formatCode(inputValue) {
	return inputValue.replace(/[^\d]/g, '');
}
function divideValue(inputValue){
	return ((inputValue/2).toFixed(3));
}
function clearDimensions(){
	$('#build form fieldset.shield-dimensions input').val('');
	$('#build ul.builderNumber').find('li.partA div, li.partB div, li.partC div').html('');
}


// TOGGLE VIEWS ///////////////////////////////////////////////////////////////////////////////////////////

// Toggle Events
function toggleView(viewTrigger,viewEvent){
	//console.log(viewTrigger);
	//console.log(viewEvent);
	var viewDuration = 800;
	
	// Open + Close Buttons
	if(viewEvent == 'toggle'){
		var viewDiv = viewTrigger.parents('div:eq(0)');
		if(viewDiv.hasClass('closed')){
			viewDiv.animate({'height':230},viewDuration);
			viewDiv.find('a.toggle').text('Close');
			viewDiv.removeClass('closed');
		} else {
			viewDiv.animate({'height':30},viewDuration);
			viewDiv.find('a.toggle').text('Open');
			viewDiv.addClass('closed');
		} return false;
	
	// Tab Navigation
	} else {
		var viewTarget = $('#current div.selected div.' + viewImage);
		var viewLink = viewTarget.find('a.toggle');
		var viewHeight = viewTarget.height();
		// Open
		if (viewAction == 'slideDown' || (viewTarget.hasClass('closed') && viewAction == 'slideToggle')){
			viewTarget.animate({height:230},viewDuration);
			viewTarget.removeClass('closed').addClass('opened');
		// Close
		} else if (viewAction == 'slideUp' || (viewTarget.hasClass('opened') && viewAction == 'slideToggle')){
			viewTarget.animate({height:30},viewDuration);
			viewTarget.removeClass('opened').addClass('closed');
		}
		return false;
	}
}

// Image Heights
/* function viewHeights(viewID,viewDiv){
	if(viewID == 'board-level-shielding'){
		switch(viewDiv){
			case viewDiv.hasClass('isometric'): return 230;
			case viewDiv.hasClass('diagram'):   return 350;
		}
	} else if (viewID == 'finger-stock-gaskets'){
		switch(viewDiv){
			case viewDiv.hasClass('isometric'): return 210;
			case viewDiv.hasClass('diagram'):   return 350;
		}
	}
}
*/


// PART # /////////////////////////////////////////////////////////////////////////////////////////////////

// Update Part # Holder
function updateHolder(partDisplay){
	var currentNumber = '';
	var childValue = '';
	partDisplay.each(function(i){
		// Find Static + User Data
		if (i === 0 || i == 4 || i == 7 ){
			childValue = $(this).html();
		} else {
			childValue = $(this).find('div').html();
			if (childValue == ''){ childValue = '____'; }
		}
		currentNumber += childValue;
	});
	var $partHolder = $('form#contact').find('input#partHolder');
	$partHolder.val(currentNumber + ' (modified #)');
}

// Get Values from Part #
function getValues(inputValue){
	var partArray = new Array(5);
	inputValue = inputValue.replace(/[^\d]/g, '');
	partArray[0] = formatValue(inputValue.substr(0,4));
	partArray[1] = formatValue(inputValue.substr(4,4));
	partArray[2] = formatValue(inputValue.substr(8,4));	
	partArray[3] = divideValue(partArray[0]);
	partArray[4] = divideValue(partArray[1]);
	return partArray;
}


// TABBED NAVIGATION //////////////////////////////////////////////////////////////////////////////////////

function loadStep(theLink){
	// VARS: Link
	var linkNumber = theLink.html();
	var stepID = theLink.attr('id');
	
	// VARS: Tabs + Steps
	var tabs = $('#tabs a');
	var steps = $('#app div.step');
	var appStandard = steps.filter('#standard');
	var appBuild = steps.filter('#build');
	var appSend = steps.filter('#send');
	var appSelect = steps.filter('#select');
	var appOptions = steps.filter('#options');
	
	// VARS: Builder
	var partID = appSelect.find('a.selected').attr('id');
	var activeBuilder = appBuild.find('div#' + partID);
	var builder = activeBuilder.find('div.builder');
	var partTable = activeBuilder.find('table tbody');
	var partNumber = builder.children('ul.builderNumber').children();
	var partHolder = $('form#contact').find('input#partHolder');
	
	// TABS
	if (!theLink.hasClass('selected')){
		if (stepID == 'disabled'){
			return false;
		} else {
			tabs.removeClass();
			steps.hide();
			
			// STEP: Select
			if (stepID == 'select'){
				// Show Content
				appSelect.show().find('#mopSlider1').show();
				// Setup
				clearDimensions();
				partHolder.val('');
				// Update Tabs + Text
				theLink.addClass('selected');
				tabs.filter('#build').html('Board Shield Wizard');
				// Clear Part Table
				partTable.find('td.partA, td.partB, td.partC, td.partD, td.partE').html('_____');
				partTable.find('td.partCover span.partA, td.partCover span.partB, td.partCover span.partC').html('____');
				// Images
				// toggleView('isometric','slideDown');
				
			// STEP: Part # (MODIFIED)
			} else if (stepID == 'build'){
				// Show Content
				appBuild.show().children().hide();
				activeBuilder.show();
				builder.show().add('input, label').removeClass('ie7fix');
				appSend.show();
				// Setup
				theLink.addClass('selected');
				updateHolder(partNumber);
				// Update Tabs + Text
				theLink.addClass('selected');
				$('form#contact h3').html('Modified (BLS) Part Form<br /><span class="req">&raquo;</span><span class="description">Indicates Required Fields</span>');
				// Images
				// toggleView('isometric','slideUp');
				
			// STEP: Part # (STANDARD)
			} else if (stepID == 'std'){
				// Show Content
				appStandard.show().children().html(linkNumber);
				appBuild.show().children().hide();
				appSend.show();
				activeBuilder.show();
				builder.hide().add('input, label').addClass('ie7fix');
				// Setup
				partHolder.val(linkNumber + '  (standard #)');
				// Update Tabs + Text
				tabs.filter('#build').html('Send Part Number').addClass('selected').addClass('send');
				$('form#contact h3').html('Standard (BLS) Part Form<br /><span class="req">&raquo;</span><span class="description">Indicates Required Fields</span>');
				// Update Part Table
				var partArray = getValues(linkNumber);
				partTable.find('td.partA').html(partArray[0] + '&quot;');
				partTable.find('td.partB').html(partArray[1] + '&quot;');
				partTable.find('td.partC').html(partArray[2] + '&quot;');
				partTable.find('td.partD').html(partArray[3] + '&quot;');
				partTable.find('td.partE').html(partArray[4] + '&quot;');
				partTable.find('td.partCover span.partA').html(formatCode(partArray[0]));
				partTable.find('td.partCover span.partB').html(formatCode(partArray[1]));
				partTable.find('td.partCover span.partC').html(formatCode(partArray[2]));
				// Images
				// toggleView('isometric','slideDown');
				
			// STEP: Options
			} else if (stepID == 'options'){
				appOptions.show().children().hide().filter('div#' + partID).show();
				//$steps.filter('#select').show().children('#data div:first').addClass('selected').nextAll().hide();
				appSelect.show().find('#data').filter('div.selected').show();
				appSelect.find('#mopSlider1').hide();
				// Update Tabs + Text
				theLink.addClass('selected');
				// Images
				// toggleView('isometric','slideDown');
			}
		}
	}
}


// BUILDER FORM ////////////////////////////////////////////////////////////////////////////////////////////

function builderForm(thisInput,thisEvent){
	// VARS: Input
	var $input = thisInput;
	var inputID = $input.attr('id');
	var inputName = $input.attr('name');
	var inputValue = $input.val();
	var field = $input.add($input.prev());
	
	// VARS: Locations
	var $builder = $input.parents('div.builder');
	var $active = $builder.parent('div');
	
	// VARS: Part #
	var builderNumber = $builder.find('ul.builderNumber').children();
	var partNumber = builderNumber.filter('.' + inputName).children('div');
	var partStyle = builderNumber.filter('.partStyle').children('div');
	var partThick = builderNumber.filter('.partThick').children('div');
	
	// VARS: Table
	var builderTable = $active.find('table tbody');
	var partTable = builderTable.find('td.' + inputName);
	var partD = builderTable.find('td.partD');
	var partE = builderTable.find('td.partE');
	
	// TEXT INPUT: Focus
	if (thisEvent == 'textFocus'){
		field.removeClass().addClass('focused');
		partNumber.removeClass().addClass('focused');
	}
	
	// TEXT INPUT: Blur
	if (thisEvent == 'textBlur'){
		var partCover = builderTable.find('td.partCover span.' + inputName);
		if (inputValue == '') {
			field.removeClass().addClass('invalid');
			partNumber.removeClass().html('');
			partTable.html('_____');
			partCover.html('____');
			// D + E
			if (inputName == 'partA') {
				partD.html('_____');
			} else if (inputName == 'partB') {
				partE.html('_____');
			}
		} else {
			field.removeClass();
			partNumber.removeClass().html(formatCode(inputValue));
			partTable.html(inputValue + '&quot;');
			partCover.html(formatCode(inputValue));
			// D + E
			if (inputName == 'partA' && partStyle.html() != 'SC'){
				partD.html(divideValue(inputValue) + '&quot;');
			} else if (inputName == 'partB' && partStyle.html() != 'SC'){
				partE.html(divideValue(inputValue) + '&quot;');
			}
			// Form Holder
			updateHolder(builderNumber);
		}
	}
	
	// RADIO: Mounting Style
	if (thisEvent == 'radioStyle'){
		var partCover = builderTable.find('td.partCover span.partStyle');
		partStyle.html(inputValue);
		// Style: SC
		if (inputValue == 'SC'){
			builderTable.find('td.partD, td.partE, td.partPinW, td.partPinL').html('&nbsp; N/A &nbsp;');
		// Style: All Others
		} else {
			var partConfig = $active.attr('id');
			// Recalculate D
			var codeA = builderNumber.filter('.partA').children('div').html();
			var codeB = builderNumber.filter('.partB').children('div').html();
			if (codeA != '') {
				var valueA = formatValue(codeA);
				partD.html(divideValue(valueA) + '&quot;');
			} else {
				partD.html('_____');
			}
			// Recalculate E
			if (codeB != '') {
				var valueB = formatValue(codeB);
				partE.html(divideValue(valueB) + '&quot;');
			} else {
				partE.html('_____');
			}
			// SM Pin Data
			if (partConfig == 'sm-ezshield') {
				builderTable.find('td.partPinW').html('0.040&quot;');
				builderTable.find('td.partPinL').html('0.020&quot;');
			}
		}
		// Form Holder
		updateHolder(builderNumber);
	}
	
	// RADIO: Material Thickness
	if (thisEvent == 'radioThick'){
		var partCover = builderTable.find('td.partCover span.partThick');
		partThick.html(inputValue);
		partCover.html(inputValue);
		// Form Holder
		updateHolder(builderNumber);
	}
}




// DOCUMENT.READY //////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////

$(document).ready(function(){
	// SORTED TABLES
	$('#data #sm-ezshield table').tablesorter ({sortList:[[0,0]], headers:{4:{sorter:false},5:{sorter:false},6:{sorter:false},7:{sorter:false} }});
	$('#data #sm-bullzeye table').tablesorter ({sortList:[[0,0]], headers:{4:{sorter:false} }});
	$('#data #sm-lazerlok table').tablesorter ({sortList:[[0,0]], headers:{4:{sorter:false},5:{sorter:false},6:{sorter:false} }});
	$('#data #sm-micro table').tablesorter    ({sortList:[[0,0]], headers:{4:{sorter:false} }});
	$('#data #th-ezshield table').tablesorter ({sortList:[[0,0]], headers:{4:{sorter:false},5:{sorter:false},6:{sorter:false} }});
	$('#data #th-lazerlok table').tablesorter ({sortList:[[0,0]], headers:{4:{sorter:false},5:{sorter:false},6:{sorter:false} }});
	$('#data #th-vault table').tablesorter    ({sortList:[[0,0]], headers:{4:{sorter:false},5:{sorter:false},6:{sorter:false} }});
	
	// INIT: Current Details
	$('#current div:first').addClass('selected').nextAll().hide();
	$('#current div.mask').hide();
	
	// INIT: Tabs
	$('#tabs a:first').addClass('selected');
	$('#info div:first').show().nextAll().hide();
	
	// INIT: Steps
	var $steps = $('#app div.step');
	$steps.filter('#select').show().children('#data div:first').addClass('selected').nextAll().hide();
	$steps.filter('#build, #options').hide().children('div:first').addClass('active');
	$steps.filter('#standard').hide();
	$steps.filter('#send').hide();
	
	// INIT: Masked Inputs
	$('#build form fieldset.shield-dimensions input').mask('9.999');
	
	// INIT: Slider
	$('#slider').mopSlider({'w':660,'h':180,'sldW':560,'btnW':180,'itemMgn':0,'no':'01'});
	$('#slider a:first').addClass('selected');
	
	$('#slider a').click(function(){
		var $this = $(this);
		var tabs = $('#tabs a');
		var partID = $(this).attr('id');
		
		if ($this.hasClass('selected') || $('div.loading').length > 0){
			return false;
		} else {
			var durationPause = 200;
			var durationIn = $('#data div.selected').height() + 400;
			var durationOut = $('#data div#' + partID).height() + 600;
			$('#slider a.selected').removeClass('selected');
			$this.addClass('selected');
			// Slider Table
			$('#data div').filter('#' + partID).addClass('loading').siblings('div.selected').slideUp(durationIn,function(){
				$('#data div.selected').removeClass('selected').hide()
				.siblings('div.loading').addClass('selected').animate({opacity:1},durationPause).slideDown(durationOut).fadeInFix(1,'linear',function(){
					$('#data div.loading').removeClass('loading');
				 });
			});
			// Current Details
			$('#current div').filter('#' + partID).addClass('loading').end()
			.filter('div.selected, div.loading').find('div.mask').fadeInFix(durationIn,'jswing',function(){
				$('#current div.loading').show()
				.siblings('div.selected').removeClass('selected').hide()
				.siblings('div.loading').addClass('selected').removeClass('loading')
				.find('div.mask').fadeOut(durationOut,'jswing');
			});
			// Info
			$('#info div').hide().filter('#' + partID).show();
			// Options
			$steps.filter('#options').children('div.active').removeClass('active').siblings('div#' + partID).addClass('active');
			// Builder Table
			$steps.filter('#build').children('div.active').removeClass('active').siblings('div#' + partID).addClass('active');
			
			// Wizard Disabled
			if (partID == 'multi-cavity'){
				tabs.filter('#build').addClass('disabled');
			} else if (tabs.filter('#build').hasClass('disabled')){
				tabs.filter('#build').removeClass('disabled');
			}
			return false;
		}
	});
	
	
	// BIND: Tabs
	$('#tabs a').click(function(){
		loadStep($(this));
		return false;
	});
	
	// BIND: Table Part # Links (STANDARD)
	$('#data table a').click(function(){
		loadStep($(this));
		return false;
	});
	
	// BIND: Toggle View Button
	$('#current a.toggle').click(function(){
		toggleView($(this),'toggle');
		return false;
	});
	
	// BIND: Builder Form (TEXT)
	$('#build form fieldset.shield-dimensions input').focus(function(){
		builderForm($(this),'textFocus');
	});
	$('#build form fieldset.shield-dimensions input').blur(function(){
		builderForm($(this),'textBlur');
	});
	
	// BIND: Builder Form (RADIO)
	$('#build form fieldset.mounting-style input').click(function(){
		builderForm($(this),'radioStyle');
	});
	$('#build form fieldset.material-thickness input').click(function(){
		builderForm($(this),'radioThick');
	});
	
	// CALL FUNCTIONS
	startHash();
	clearDimensions();
});


