/*
  zebraTables
*/
function addZebraAndIndex(){
	var rows = document.getElementsByTagName('tr');
	var visibleRows = new Array();
	var even = true;
	
	var rowcounter = 1;
	var cells;
	
	for(var i = 0; i< rows.length; i++){
		rows[i].className = rows[i].className.replace('odd', '');
		rows[i].className = rows[i].className.replace('even', '');
		
		if(rows[i].className.toLowerCase().indexOf('show') != -1){
			var cells = rows[i].getElementsByTagName('td');
			
			cells[0].innerHTML = rowcounter;
			rowcounter = rowcounter + 1;
			
			if(even){
				rows[i].className += ' even';
				even = false;
			}else{
				rows[i].className += ' odd';
				even = true;
			}
		}
	}
}


/*
	ONLY ONE (1) TABBED AREA ALLOWED PER PAGE
*/

var tabs = new Array();

function initTabs(){
	
	// divs in tabbed area
	var lists = document.getElementsByTagName('ul');
	
	for(var i = 0; i < lists.length; i++){
		if(lists[i].className.indexOf('tabnavigation') > -1){
			var tabLinks = lists[i].getElementsByTagName('a');
			
			for(var ii = 0; ii < tabLinks.length; ii++){
				tabLinks[ii].onclick = function(){
					// hide all area's
					for(var i = 0; i < tabs.length; i++){
						tabs[i].style.display = 'none';
					}
					
					var area = this.getAttribute('href');
						area = area.replace(/javascript\:showTab\(/gi, '');
						area = area.replace(/\)/gi, '');
						area = area.replace(/\'/gi, '');
						area = area.replace(/;/gi, '');
					
					// show target area
					document.getElementById(area).style.display = 'block';
					
					var listItems = this.parentNode.parentNode.getElementsByTagName('li');
					for(var i = 0; i < listItems.length; i++){
						listItems[i].className = '';
					}
						
					this.parentNode.className = 'active';
					
					findFocus(area);
					
					return false;
				}
			}
		}
		
	}
	
	var forms = document.getElementsByTagName('form');
	for(var i = 0; i < forms.length; i++){
		if(forms[i].className.indexOf('isTab') > -1){
			tabs.push(forms[i]);
		}
	}
}


/*
	FIND FOCUS
*/
function findFocus(area){
	var inputs = document.getElementById(area).getElementsByTagName('input');

	for (var i = 0; i < inputs.length; i++){
		inputs[i].focus();
		return true;
	}
}


/*
  search by diameter
*/
function searchByBellowDiameter(){
	var minInnerDiameter = document.getElementById('bellowMinInnerDiameter').value;
	var maxOuterDiameter = document.getElementById('bellowMaxOuterDiameter').value;
	
	minInnerDiameter = parseFloat(minInnerDiameter.replace(',', '.'));
	maxOuterDiameter = parseFloat(maxOuterDiameter.replace(',', '.'));
	
	if(isNaN(minInnerDiameter) && isNaN(maxOuterDiameter)){
		alert('Specify a valid min inner diameter or\nspecify a valid max outer diameter');
		return;
	}

	if(isNaN(maxOuterDiameter)){
		window.location.hash = 'minInnerDiameter=' + minInnerDiameter;
	}else if(isNaN(minInnerDiameter)){
		window.location.hash = 'maxOuterDiameter=' + maxOuterDiameter;
	}else{
		window.location.hash = 'minInnerDiameter=' + minInnerDiameter + '&maxOuterDiameter=' + maxOuterDiameter;
	}
		
	document.getElementById('bellowConnection1Diameter').value = '';
	document.getElementById('bellowConnection2Diameter').value = '';
	document.getElementById('bellowLength').value = '';
	document.getElementById('bellowMinLength').value = '';
	document.getElementById('bellowMaxLength').value	= '';
	document.getElementById('bellowV6Number').value = '';
	
	findBellows();
	
	minInnerDiameter = null;
	maxOuterDiameter = null;
}


/*
  search by connection diameter
*/
function searchByConnectionDiameter(){
	var connection1Diameter = document.getElementById('bellowConnection1Diameter').value;
	var connection2Diameter = document.getElementById('bellowConnection2Diameter').value;
	
	connection1Diameter = parseFloat(connection1Diameter.replace(',', '.'));
	connection2Diameter = parseFloat(connection2Diameter.replace(',', '.'));
	
	
	if(isNaN(connection1Diameter) && isNaN(connection2Diameter)){
		alert('Specify a valid connection 1 diameter or\nspecify a valid connection 2 diameter');
		return;
	}

	if(isNaN(connection2Diameter)){
		window.location.hash = 'connection1Diameter=' + connection1Diameter;
	}else if(isNaN(connection1Diameter)){
		window.location.hash = 'connection2Diameter=' + connection2Diameter;
	}else{
		window.location.hash = 'connection1Diameter=' + connection1Diameter + '&connection2Diameter=' + connection2Diameter;
	}
		
	document.getElementById('bellowMinInnerDiameter').value = '';
	document.getElementById('bellowMaxOuterDiameter').value = '';
	document.getElementById('bellowLength').value = '';
	document.getElementById('bellowMinLength').value = '';
	document.getElementById('bellowMaxLength').value = '';
	document.getElementById('bellowV6Number').value = '';
	
	findBellows();
	
	minInnerDiameter = null;
	maxOuterDiameter = null;
}


/*
  search by min max length
*/
function searchByMinMaxLength(){
	var minLength = document.getElementById('bellowMinLength').value;
	var maxLength = document.getElementById('bellowMaxLength').value;
	
	minLength = parseFloat(minLength.replace(',', '.'));
	maxLength = parseFloat(maxLength.replace(',', '.'));
	
	if(isNaN(minLength) && isNaN(maxLength)){
		alert('Specify a valid bellow min. Length or\nspecify a valid bellow max. Length');
		return;
	}
	
	if(isNaN(minLength)) minLength = 200;
	if(isNaN(maxLength)) maxLength = 0;
	
	if(isNaN(maxLength)){
		window.location.hash = 'minLength=' + minLength;
	}else if(isNaN(minLength)){
		window.location.hash = 'maxLength=' + maxLength;
	}else{
		window.location.hash = 'minLength=' + minLength + '&maxLength=' + maxLength;
	}
	
	document.getElementById('bellowMinInnerDiameter').value 	= '';
	document.getElementById('bellowMaxOuterDiameter').value 	= '';
	document.getElementById('bellowConnection1Diameter').value 	= '';
	document.getElementById('bellowConnection2Diameter').value 	= '';
	document.getElementById('bellowMinLength').value 			= '';
	document.getElementById('bellowMaxLength').value 			= '';
	document.getElementById('bellowV6Number').value				= '';
	
	findBellows();
	
	var minLength = null;
	var maxLength = null;
}


/*
  search by length
*/
function searchByLength(){
	var length = document.getElementById('bellowLength').value;
	
	length = parseFloat(length.replace(',', '.'));
	
	var message = '';
	if(isNaN(length)) message += 'Specify a valid bellow Length \n';
	if(message.toString().length > 0){
		alert(message);
		return;
	}
	
	window.location.hash = 'length=' + length;
	
	document.getElementById('bellowMinInnerDiameter').value 	= '';
	document.getElementById('bellowMaxOuterDiameter').value 	= '';
	document.getElementById('bellowConnection1Diameter').value 	= '';
	document.getElementById('bellowConnection2Diameter').value 	= '';
	document.getElementById('bellowMinLength').value 			= '';
	document.getElementById('bellowMaxLength').value 			= '';
	document.getElementById('bellowV6Number').value				= '';
	
	findBellows();
	
	length = null;
}



/*
  search by V6 number
*/
function searchByV6Number(){
	var v6Number = document.getElementById('bellowV6Number').value;
	
	var message = '';
	if(isNaN(v6Number)) message += 'Specify a valid V6 number \n';
	if(message.toString().length > 0){
		alert(message);
		return;
	}
	
	window.location.hash = 'v6Number=' + v6Number;
	
	document.getElementById('bellowMinInnerDiameter').value 	= '';
	document.getElementById('bellowMaxOuterDiameter').value 	= '';
	document.getElementById('bellowConnection1Diameter').value 	= '';
	document.getElementById('bellowConnection2Diameter').value 	= '';
	document.getElementById('bellowMinLength').value 			= '';
	document.getElementById('bellowMaxLength').value 			= '';
	document.getElementById('bellowLength').value				= '';
	
	findBellows();
}


/*
	find
*/
function findBellows(){
	var querystring = (window.location.hash).replace('#', '');
	
	// declare local variables
	var querystringitem;
	var querystringname;
	var querystringvalue;
	
	// for findby length
	var length = '';
	
	// for findby v6 number
	var v6Number = '';
	
	// for findby min length max length
	var minLength = '';
	var maxLength = '';
	
	// for find by bellow diameter
	var minInnerDiameter = '';
	var maxOuterDiameter = '';
	
	// for find by connection diameter
	var connection1Diameter = '';
	var connection2Diameter = '';
	
	querystringitems = querystring.split('&');
	
	for(var i = 0; i < querystringitems.length; i++){
		querystringitem = querystringitems[i];
		
		querystringitem = querystringitem.split('=');
		querystringname = querystringitem[0];
		querystringvalue = querystringitem[1];
		
		switch(querystringname){
			// for find by bellow diameter
			case 'minInnerDiameter':
				minInnerDiameter = querystringvalue;
				minInnerDiameter = parseFloat(minInnerDiameter);
				
				document.getElementById('bellowMinInnerDiameter').value = minInnerDiameter;
				
				document.getElementById('bellowDiameterListItem').className = 'active';
				document.getElementById('fBellowSearchByDiameter').style.display = 'block';

				break;
				
			case 'maxOuterDiameter':
				maxOuterDiameter = querystringvalue;
				maxOuterDiameter = parseFloat(maxOuterDiameter);
				
				document.getElementById('bellowMaxOuterDiameter').value = maxOuterDiameter;
				break;
				
			// for find by connection diameter
			case 'connection1Diameter':
				connection1Diameter = querystringvalue;
				connection1Diameter = parseFloat(connection1Diameter);
				
				document.getElementById('bellowConnection1Diameter').value = connection1Diameter;
				
				document.getElementById('connectionDiameterListItem').className = 'active';
				document.getElementById('fBellowSearchByConnectionDiameter').style.display = 'block';
				
				break;
				
			case 'connection2Diameter':
				connection2Diameter = querystringvalue;
				connection2Diameter = parseFloat(connection2Diameter);
				
				document.getElementById('bellowConnection2Diameter').value = connection2Diameter;
				break;
			
			// for find by min bellow length
			case 'minLength':
				minLength = querystringvalue;
				minLength = parseFloat(minLength);
				
				document.getElementById('bellowMinLength').value = minLength;
				
				document.getElementById('minMaxLengthListItem').className = 'active';
				document.getElementById('fBellowSearchByMinMaxLength').style.display = 'block';
				
				break;
			
			// for find by max bellow length
			case 'maxLength':
				maxLength = querystringvalue;
				maxLength = parseFloat(maxLength);
				
				document.getElementById('bellowMaxLength').value = maxLength;
				break;
			
			// for find by bellow length
			case 'length':
				length = querystringvalue;
				length = parseFloat(length);
				
				document.getElementById('bellowLength').value = length;
				
				document.getElementById('lengthListItem').className = 'active';
				document.getElementById('fBellowSearchByLength').style.display = 'block';
				
				break;
			
			// for find by v6Number
			case 'v6Number':
				v6Number = querystringvalue;
				v6Number = parseInt(v6Number);
				
				document.getElementById('bellowV6Number').value = v6Number;
				
				document.getElementById('v6NumberListItem').className = 'active';
				document.getElementById('fBellowSearchByV6').style.display = 'block';
				
				break;
			
			default:
				document.getElementById('bellowDiameterListItem').className = 'active';
				document.getElementById('fBellowSearchByDiameter').style.display = 'block';
				
				findFocus('fBellowSearchByDiameter');
				
				break;				
		}
	}
	
	// find by bellow diameter
	if((typeof(minInnerDiameter) == 'number') || (typeof(maxOuterDiameter) == 'number')){
		findByBellowDiameter(minInnerDiameter, maxOuterDiameter);
	
	// find by connection diameter
	}else if((typeof(connection1Diameter) == 'number') || (typeof(connection2Diameter) == 'number')){
		findByConnectionDiameter(connection1Diameter, connection2Diameter);
	
	// find by min length / max length
	}else if((typeof(minLength) == 'number') || (typeof(maxLength) == 'number')){
		findByMinMaxLength(minLength, maxLength);
		
	// find by length
	}else if((typeof(length) == 'number')){
		findByLength(length);
		
	// find by v6 number
	}else if((typeof(v6Number) == 'number')){
		findByV6Number(v6Number);
	
	// show all
	}else{
		showAll();
	}
}


/*

*/
function showAll(){
	var rows = document.getElementById('bellows').getElementsByTagName('tbody')[0].getElementsByTagName('tr');
	
	for(var i = 0; i < rows.length; i++){
		rows[i].className = 'show';
	}
	
	addZebraAndIndex();
}


/*
  find by bellow diameter
*/
function findByBellowDiameter(minInnerDiameter, maxOuterDiameter){
	var rows = document.getElementById('bellows').getElementsByTagName('tbody')[0].getElementsByTagName('tr');
	var cells;
	
	var bellowMinInnerDiameter;
	var bellowMaxOuterDiameter;
	
	var emptyMinInnerDiameter = false;
	var emptyMaxOuterDiameter = false;
	
	// standard value if its smaller or equal than 50
	var minInnDiaPerc = 5;
	var maxOutDiaPerc = 5
	
	var minInnerInRange = false;
	var maxOuterInRange = true;

	// loop through rows
	for(var i = 0; i < rows.length; i++){
		cells = rows[i].getElementsByTagName('td');
		
		// get value
		bellowMinInnerDiameter = cells[8].innerHTML;
		bellowMaxOuterDiameter = cells[9].innerHTML;
		
		bellowMinInnerDiameter = parseFloat(bellowMinInnerDiameter.replace(',', '.'));
		bellowMaxOuterDiameter = parseFloat(bellowMaxOuterDiameter.replace(',', '.'));
		
		if(minInnerDiameter == ''){ emptyMinInnerDiameter = true; }
		if(maxOuterDiameter == ''){ emptyMaxOuterDiameter = true; }
		
		if(emptyMinInnerDiameter){ minInnerDiameter = bellowMinInnerDiameter; }
		if(emptyMaxOuterDiameter){ maxOuterDiameter = bellowMaxOuterDiameter; }
		
		if(!emptyMinInnerDiameter && minInnerDiameter >= 50){ minInnDiaPerc = minInnerDiameter * .1; }		
		if(!emptyMinInnerDiameter && maxOuterDiameter >= 50){ maxOutDiaPerc = maxOuterDiameter * .1; }
		
		minInnerInRange = ((minInnerDiameter - minInnDiaPerc) <= bellowMinInnerDiameter) && (bellowMinInnerDiameter <= (minInnerDiameter + minInnDiaPerc));
		maxOuterInRange = ((maxOuterDiameter - maxOutDiaPerc) <= bellowMaxOuterDiameter) && (bellowMaxOuterDiameter <= (maxOuterDiameter + maxOutDiaPerc));
		
		if((minInnerInRange) && (maxOuterInRange)){
			rows[i].className = 'show';
		}else{
			rows[i].className = 'hide';
		}
	}
	
	addZebraAndIndex();
}


/*
  find by connection diameter
*/
function findByConnectionDiameter(connection1Diameter, connection2Diameter){
	var rows = document.getElementById('bellows').getElementsByTagName('tbody')[0].getElementsByTagName('tr');
	var cells;

	var bellowConnection1Diameter;
	var bellowConnection2Diameter;
	
	var emptyCon1Dia = false;
	var emptyCon2Dia = false;
	
	// standard percentage if the supplied value is smaller or equal than 50
	var con1DiaPerc = 5;
	var con2DiaPerc = 5;
	
	var connection1InRange = false;
	var connection2InRange = true;

	// loop through rows
	for(var i = 0; i < rows.length; i++){
		cells = rows[i].getElementsByTagName('td');
		
		// get value
		bellowConnection1Diameter = cells[6].innerHTML;
		bellowConnection2Diameter = cells[7].innerHTML;
		
		bellowConnection1Diameter = parseFloat(bellowConnection1Diameter.replace(',', '.'));
		bellowConnection2Diameter = parseFloat(bellowConnection2Diameter.replace(',', '.'));
		
		
		// check supplied value
		if(connection1Diameter == ''){ emptyCon1Dia = true; }
		if(connection2Diameter == ''){ emptyCon2Dia = true; }
		
		if(emptyCon1Dia){ connection1Diameter = bellowConnection1Diameter; }
		if(emptyCon2Dia){ connection2Diameter = bellowConnection2Diameter; }
		
		// percentage = 10%
		if(!emptyCon1Dia && connection1Diameter >= 50){ con1DiaPerc = connection1Diameter * .1; }		
		if(!emptyCon2Dia && connection2Diameter >= 50){ con2DiaPerc = connection2Diameter * .1; }


		connection1InRange = ((connection1Diameter - con1DiaPerc) <= bellowConnection1Diameter) && (bellowConnection1Diameter <= (connection1Diameter + con1DiaPerc));
		connection2InRange = ((connection2Diameter - con2DiaPerc) <= bellowConnection2Diameter) && (bellowConnection2Diameter <= (connection2Diameter + con2DiaPerc));
		

		if((connection1InRange) && (connection2InRange)){
			rows[i].className = 'show';
		}else{
			rows[i].className = 'hide';
		}
	}
	
	addZebraAndIndex();
}


/*
	find by min max length
*/
function findByMinMaxLength(minLength, maxLength){
	var rows = document.getElementById('bellows').getElementsByTagName('tbody')[0].getElementsByTagName('tr');
	var cells;
	var bellowMinLength;
	var bellowMaxLength;
	
	// loop through rows
	for(var i = 0; i < rows.length; i++){
		cells = rows[i].getElementsByTagName('td');

		// get value
		bellowMinLength = cells[4].innerHTML;
		bellowMaxLength = cells[3].innerHTML;
		
		bellowMinLength = parseFloat(bellowMinLength.replace(',', '.'));
		bellowMaxLength = parseFloat(bellowMaxLength.replace(',', '.'));
		
		if((minLength >= bellowMinLength) && (bellowMaxLength >= maxLength)){
			rows[i].className = 'show';
		}else{
			rows[i].className = 'hide';
		}
	}
	
	addZebraAndIndex();
}


/*
	find by length
*/
function findByLength(length){
	var rows = document.getElementById('bellows').getElementsByTagName('tbody')[0].getElementsByTagName('tr');
	var cells;
	var bellowLength;
	
	var bellowLengthInRange = false;
	
	// loop through rows
	for(var i = 0; i < rows.length; i++){
		cells = rows[i].getElementsByTagName('td');
		
		// get value
		bellowLength = cells[2].innerHTML;
		
		bellowLength = parseFloat(bellowLength.replace(',', '.'));
		
		bellowLengthInRange = ((length + (length * .1)) >= bellowLength) && ((length - (length * .1)) <= bellowLength);
		
		if(bellowLengthInRange){
			rows[i].className = 'show';
		}else{
			rows[i].className = 'hide';
		}
	}
	
	addZebraAndIndex();
}


/*
	find by v6Number
*/
function findByV6Number(v6Number){
	var rows = document.getElementById('bellows').getElementsByTagName('tbody')[0].getElementsByTagName('tr');
	var cells;
	var v6String;
	
	// loop through rows
	for(var i = 0; i < rows.length; i++){
		cells = rows[i].getElementsByTagName('td');
		
		// get value
		v6String = cells[11].getElementsByTagName('a')[0].innerHTML;
		
		v6String = parseInt(v6String.replace('V6-', ''));
		
		if(v6String == v6Number){
			rows[i].className = 'show';
		}else{
			rows[i].className = 'hide';
		}
	}
	
	addZebraAndIndex();
}


/*
	drawings
*/
var inBodyPopup;

function initDrawings(){
	var links = document.getElementById('bellows').getElementsByTagName('a');
	var link;
	
	for(var i = 0; i < links.length; i++){
		// link
		links[i].onclick = function(){
			popupDrawing(this.href);
			return false;
		}
		
		links[i].onmouseover = function(e){
			if(!e) e = window.event;
			
			// check if popup exists
			if(!inBodyPopup){
				inBodyPopup = document.createElement('div');
				inBodyPopup.className = 'inBodyPopup';
				document.getElementsByTagName('body')[0].appendChild(inBodyPopup);
			}
			
			var x = e.clientX;
			var y = e.clientY;
			
			y = y + document.documentElement.scrollTop;
			
			x = x + 12;
			y = y + 21;
			
			inBodyPopup.innerHTML = '<img src="'+ this.getAttribute('href') +'" width="40" />';
			
			inBodyPopup.style.left = x + 'px';
			inBodyPopup.style.top = y + 'px';
			inBodyPopup.style.display = 'block';
		}
		
		links[i].onmouseout = function(){
			inBodyPopup.style.display = 'none';
		}
		
		row = links[i];
		
		// parentrow
		while(row.nodeName.toLowerCase() != 'tr'){
			row = row.parentNode;
		}
		
		cells = row.getElementsByTagName('td');
		
		for(var ii = 0; ii < cells.length; ii++){
			cells[ii].setAttribute('href', links[i]);
			cells[ii].ondblclick = function(){
				popupDrawing(this.getAttribute('href'));
				return false;
			}
		}
	}
}


function popupDrawing(href){
	var image = new Image();
		image.onload = function(){
			width = this.width + 40;
			height = this.height + 40;
			
			var fileName = (this.src).substring((this.src).lastIndexOf('/'), (this.src).length);
			fileName = fileName.substring(1, fileName.lastIndexOf('.'));
			fileName = unescape(fileName);
			fileName = fileName.replace('ERIKS - Bellows - ', '');
			
			var html = '';
				html += '<html>';
					html += '<head><title>View ' + fileName + ' Bellow Drawing</title></head>';
					//html += '<body style="margin:0;padding:0;font-family:Verdana;font-size:11px;" onblur="window.close();">';
					html += '<body style="margin:0;padding:0;font-family:Verdana;font-size:11px;">';
						html += '<p style="background-color:#0064ae; color:white; padding:4px;">'
							html += 'View ' + fileName + ' Bellow Drawing ';
							html += '<a href="javascript:window.print();" style="color:white;">print</a>';
							html += ' | ';
							html += '<a href="javascript:window.close();" style="color:white;">close window</a>';
						html += '</p>';
						//html += '<img src="' + href + '" onclick="window.close();" style="cursor:pointer;" />';
						html += '<img src="' + href + '" />';
					html += '</body>';
				html += '</html>';
			
			drawing = window.open(this.src, 'drawing', 'channelmode=0, fullscreen=0, location=0, menubar=0, resizable=0, scrollbars=0, status=0, titlebar=0, toolbar=0, width=' + width + ', height=' + height + ', left=10, top=10');
			drawing.document.write(html);
			drawing.document.close();
			
		}
		image.src = href;
}


window.onload = function(){
	findBellows();
	initDrawings();
	initTabs();
	
	/*
		forms
	*/
	document.getElementById('fBellowSearchByDiameter').onsubmit = function(){
		searchByBellowDiameter();
		return false;
	}
	
	document.getElementById('fBellowSearchByConnectionDiameter').onsubmit = function(){
		searchByConnectionDiameter();
		return false;
	}
	
	document.getElementById('fBellowSearchByMinMaxLength').onsubmit = function(){
		searchByMinMaxLength();
		return false;
	}
	
	document.getElementById('fBellowSearchByLength').onsubmit = function(){
		searchByLength();
		return false;
	}
	
	document.getElementById('fBellowSearchByV6').onsubmit = function(){
		searchByV6Number();
		return false;
	}
}
