<!--
dimensions = new Array();

function createBackupValues() {
	dimensions[0] = document.getElementById("inpWidth").value;
	dimensions[1] = document.getElementById("selWidthFrac").value;
	dimensions[2] = document.getElementById("inpHeight").value;
	dimensions[3] = document.getElementById("selHeightFrac").value;
}

function sndReq_DimensionPane() {
	destURL = 'div/dimensions.jsp';
	reqDimensions = createXMLRequestObject();
	reqDimensions.onreadystatechange = handleResponseDimensions;
	reqDimensions.open('post', destURL);
	reqDimensions.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
	reqDimensions.send("");	
}

function handleResponseDimensions() {
	var update = new Array();	
	var body;
	var selectionPanel;
	
	
	if(reqDimensions.readyState == 4) {

	  testResponse(reqDimensions);
	
		var response = reqDimensions.responseText;
		
		if(response.indexOf('|' != -1)) {
				update = response.split('|');
				navHtml = update[0];			
				selectionPanel = update[1];
				body = update[2];
		}
		
		// set selection panel
		parent.document.getElementById("divNavPanel").style.display = 'block';		
		parent.document.getElementById("divNavPanel").innerHTML = navHtml;
				
		parent.document.getElementById("divSelectionPanel").style.display = "block";
		parent.document.getElementById("divSelectionPanel").innerHTML = selectionPanel;
		
		// use this panel to display the information
		parent.document.getElementById("divOptionPanel").style.display = "block";
		parent.document.getElementById("divOptionPanel").style.height = 407;
		parent.document.getElementById("divOptionPanel").innerHTML = body;
			
		// Clear the event handler
		reqDimensions.onreadystatechange = emptyFunction;
		
		dimensionTabVisited = true;			
	}
}

function sndReq_UpdateDimensions(){
	var prodID = 9502;
	var wMax;
	var hMax;
	if(document.getElementById("widthMax") != null)
		wMax = Number(document.getElementById("widthMax").value);
	if(document.getElementById("heightMax") != null)
		hMax = Number(document.getElementById("heightMax").value);
	if(document.getElementById("prodID") != null) {
		if(Number(document.getElementById("prodID").value) == prodID) {
			var width = Number(document.getElementById("inpWidth").value)+Number(document.getElementById("selWidthFrac").value);
			var height = Number(document.getElementById("inpHeight").value)+Number(document.getElementById("selHeightFrac").value);
			var alertString = document.getElementById("alertString").value;
			if(width >= wMax && height >= hMax) {
				alert(alertString);
				document.getElementById("inpWidth").value = dimensions[0];
				document.getElementById("selWidthFrac").value = dimensions[1];
				document.getElementById("inpHeight").value = dimensions[2];
				document.getElementById("selHeightFrac").value = dimensions[3];
				return;
			}
		}
	}
	if (pending == true) {
		alert("Request Pending");
	} else {
		pending = true;
		var w = 0;
		var wf = 0;
		var h = 0;
		var hf = 0;
		var l = 0;
		var lf = 0;
		var d = 0;
		var df = 0;
		
		var errorMsg = "";
		var error = false;
		
		// check the width
		if (null != document.getElementById("inpWidth")) {
			w = document.getElementById("inpWidth").value;
			wf = document.getElementById("selWidthFrac").value;
			var maxWidth = document.getElementById("maxWidth").value;
			var minWidth = document.getElementById("minWidth").value;
			
			var width = Number(w) + Number(wf);
			if (width > Number(maxWidth)) {
				errorMsg = errorMsg + "Width is too large!\n";
				error = true;
			}
			if (width < Number(minWidth)) {
				errorMsg = errorMsg + "Width is too small!\n";
				error = true;
			}
		}
		
		// check the height
		if (null != document.getElementById("inpHeight")) {
			h = document.getElementById("inpHeight").value;
			hf = document.getElementById("selHeightFrac").value;
			var maxHeight = document.getElementById("maxHeight").value;
			var minHeight = document.getElementById("minHeight").value;
			
			var height = Number(h) + Number(hf);
			if (height > Number(maxHeight)) {
				errorMsg = errorMsg + "Height is too large!\n";
				error = true;
			}
			if (height < Number(minHeight)) {
				errorMsg = errorMsg + "Height is too small!\n";
				error = true;
			}				
		}
		
		// check the length
		/*
		if (null != document.getElementById("inpLength")) {
			l = document.getElementById("inpLength").value
			lf = document.getElementById("selLengthFrac").value;
			var maxLength = document.getElementById("maxLength").value;
			var minLength = document.getElementById("minLength").value;
							
			var length = Number(l) + Number(lf);
			if (length > Number(maxLength)) {
				errorMsg = errorMsg + "Length is too large!\n";
				error = true;
			}
			if (length < Number(minLength)) {
				errorMsg = errorMsg + "Length is too small!\n";
				error = true;
			}					
		}
		
		// check the depth
		if (null != document.getElementById("inpDepth")) {
			d = document.getElementById("inpDepth").value;
			df = document.getElementById("selDepthFrac").value;	
			var maxDepth = document.getElementById("maxDepth").value;
			var minDepth = document.getElementById("minDepth").value;
							
			var depth = Number(d) + Number(df);
			if (depth > Number(maxDepth)) {
				errorMsg = errorMsg + "Depth is too large!\n";
				error = true;
			}
			if (depth < Number(minDepth)) {
				errorMsg = errorMsg + "Depth is too small!\n";
				error = true;
			}							
		}
		*/
		
		// TODO client-side validation of integer, float number entry
		if (error) {
			alert(errorMsg);
			pending = false;
			return;
		}

		//sndReq_Update(0, w, wf, h, hf);
		
		// Send a request to the server to update its ConfigItem and run comaptibility+pricing check
		// Input args:
		// arg[0] = materialTypeId
		// arg[1] = new materialId
		
		var dest = "";
		var queryPost = "w=" + w + "&wf=" + wf + "&h=" + h + "&hf=" + hf + "&l=" + l + "&lf=" + lf + "&d=" + d + "&df=" + df;
		dest = "update_dimension.jsp";			
		reqUpdateDimension = createXMLRequestObject();
		reqUpdateDimension.onreadystatechange = handleResp_UpdateDimension;
		reqUpdateDimension.open('post', dest);
		reqUpdateDimension.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
		reqUpdateDimension.send(queryPost);	
	}
}


function sndReq_UpdateDimensionsInline(dimensionUpdated){
	if (pending == true) {
		alert("Request Pending");
	} else {
		pending = true;
		var w = 0;
		var wf = 0;
		var h = 0;
		var hf = 0;
		var l = 0;
		var lf = 0;
		var d = 0;
		var df = 0;
		
		var errorMsg = "";
		var error = false;
		
		// check the width
		if (null != document.getElementById("inpWidth")) {
			w = document.getElementById("inpWidth").value
			wf = document.getElementById("selWidthFrac").value;
			var maxWidth = document.getElementById("maxWidth").value;
			var minWidth = document.getElementById("minWidth").value;
			
			var width = Number(w) + Number(wf);
			if (width > Number(maxWidth)) {
				errorMsg = errorMsg + "Width is too large!\n";
				error = true;
			}
			if (width < Number(minWidth)) {
				errorMsg = errorMsg + "Width is too small!\n";
				error = true;
			}
		}
		
		// check the height
		if (null != document.getElementById("inpHeight")) {
			h = document.getElementById("inpHeight").value;
			hf = document.getElementById("selHeightFrac").value;
			var maxHeight = document.getElementById("maxHeight").value;
			var minHeight = document.getElementById("minHeight").value;
			
			var height = Number(h) + Number(hf);
			if (height > Number(maxHeight)) {
				errorMsg = errorMsg + "Height is too large!\n";
				error = true;
			}
			if (height < Number(minHeight)) {
				errorMsg = errorMsg + "Height is too small!\n";
				error = true;
			}				
		}
		
		// TODO client-side validation of integer, float number entry
		if (error) {
			alert(errorMsg);
			pending = false;
			return;
		}

		//sndReq_Update(0, w, wf, h, hf);
		
		// Send a request to the server to update its ConfigItem and run comaptibility+pricing check
		// Input args:
		// arg[0] = materialTypeId
		// arg[1] = new materialId
		
		var dest = "";
		var queryPost = "dimUpdated=" + dimensionUpdated + "&w=" + w + "&wf=" + wf + "&h=" + h + "&hf=" + hf + "&l=" + l + "&lf=" + lf + "&d=" + d + "&df=" + df;
		dest = "update_dimensionInline.jsp";			
		reqUpdateDimension = createXMLRequestObject();
		reqUpdateDimension.onreadystatechange = handleResp_UpdateDimension;
		reqUpdateDimension.open('post', dest);
		reqUpdateDimension.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
		reqUpdateDimension.send(queryPost);	
	}
}

function handleResp_UpdateDimension() {

	
	if(reqUpdateDimension.readyState == 4){	
	
	  testResponse(reqUpdateDimension);

		var response = reqUpdateDimension.responseText;
		var update = new Array();
		
		if(response.indexOf('|' != -1)) {
			update = response.split('|');
		}
		
				
		// Clear the event handler
		reqUpdateDimension.onreadystatechange = emptyFunction;
		pending = false;
		
		// determine if we can price
		if (update[4] == "true") {
			// can update the price
			sndReq_UpdatePrice();
		} else {
			// price can not be updated
		}
		
		
		// determine if we can add to the cart
		if (update[3] == "true") {
			// can add to cart

			/*
			document.getElementById("imgAddToCart").src="/smith_noble/images/config/btnAddToCartUnselected_110x21.gif";
			var faddonmouseover = function() {this.src='/smith_noble/images/config/btnAddToCartOver_110x21.gif';};
			var faddonmouseout =  function() {this.src='/smith_noble/images/config/btnAddToCartUnselected_110x21.gif';};
			var faddonclick = function() {document.location = 'addToSession.jsp';};
			document.getElementById("imgAddToCart").onmouseover=faddonmouseover;
			document.getElementById("imgAddToCart").onmouseout=faddonmouseout;
			document.getElementById("imgAddToCart").onclick =faddonclick;
			*/
										
		} else {
			// can not add to cart
			
			/*
			document.getElementById("imgAddToCart").src="/smith_noble/images/config/btnAddToCartDisabled_110x21.gif";
			var faddonmouseover = function() {};
			var faddonmouseout =  function() {};
			var faddonclick = function() {alert('The product needs to be fully configured before it can be added to the cart.');};				
			document.getElementById("imgAddToCart").onmouseover=faddonmouseover;
			document.getElementById("imgAddToCart").onmouseout=faddonmouseout;
			document.getElementById("imgAddToCart").onclick =faddonclick;					
			*/
		}
		
		dimensionTabVisited = true;
		
		sndReq_DimensionPane();	
		
	}else{
		// request still pending
	}
}	

function changeDimension(){
	// Toggle buttons
	document.getElementById("imgBtnChgDimension").src = "/smith_noble/images/v3/buttons/btnChangeDimensionsDisabled_118x21.gif";
	document.getElementById("imgBtnChgDimension").onclick = emptyFunction;
	document.getElementById("imgBtnSaveDimension").src = "/smith_noble/images/v3/buttons/btnSave_56x21.gif";
	document.getElementById("imgBtnSaveDimension").onclick = saveDimension;
	document.getElementById("imgBtnCancelDimension").src = "/smith_noble/images/v3/buttons/btnCancel_56x21.gif";
	document.getElementById("imgBtnCancelDimension").onclick = cancelDimension;	
	
	// Toggle width
	if(document.getElementById("isWidth").value == "true"){
		document.getElementById("divWidthIntSelect").style.display = "block";
		document.getElementById("divWidthIntDisplay").style.display = "none";
		document.getElementById("divWidthFracSelect").style.display = "block";
		document.getElementById("divWidthFracDisplay").style.display = "none";
	}
	
	// Toggle height
	if(document.getElementById("isHeight").value == "true"){
		document.getElementById("divHeightIntSelect").style.display = "block";
		document.getElementById("divHeightIntDisplay").style.display = "none";
		document.getElementById("divHeightFracSelect").style.display = "block";
		document.getElementById("divHeightFracDisplay").style.display = "none";
	}
	
	// Toggle depth
	if(document.getElementById("isDepth").value == "true"){
		document.getElementById("divDepthIntSelect").style.display = "block";
		document.getElementById("divDepthIntDisplay").style.display = "none";
		document.getElementById("divDepthFracSelect").style.display = "block";
		document.getElementById("divDepthFracDisplay").style.display = "none";
	}
}

function saveDimension(){

	// Toggle buttons
	document.getElementById("imgBtnChgDimension").src = "/smith_noble/images/v3/buttons/btnChangeDimensions_118x21.gif";
	document.getElementById("imgBtnChgDimension").onclick = changeDimension;
	document.getElementById("imgBtnSaveDimension").src = "/smith_noble/images/v3/buttons/btnSaveDisabled_56x21.gif";
	document.getElementById("imgBtnSaveDimension").onclick = emptyFunction;
	document.getElementById("imgBtnCancelDimension").src = "/smith_noble/images/v3/buttons/btnCancelDisabled_56x21.gif";
	document.getElementById("imgBtnCancelDimension").onclick = emptyFunction;

	// Toggle width
	if(document.getElementById("isWidth").value == "true"){
		document.getElementById("divWidthIntSelect").style.display = "none";
		document.getElementById("divWidthIntDisplay").style.display = "block";
		document.getElementById("divWidthFracSelect").style.display = "none";
		document.getElementById("divWidthFracDisplay").style.display = "block";
		//Update Width
		document.getElementById("divWidthIntDisplay").innerHTML = document.getElementById("inpWidth").value;
		document.getElementById("divWidthFracDisplay").innerHTML = fractionDisplay(document.getElementById("selWidthFrac").value, document.getElementById("fracDenom").value);
	}
	
	// Toggle height
	if(document.getElementById("isHeight").value == "true"){
		document.getElementById("divHeightIntSelect").style.display = "none";
		document.getElementById("divHeightIntDisplay").style.display = "block";
		document.getElementById("divHeightFracSelect").style.display = "none";
		document.getElementById("divHeightFracDisplay").style.display = "block";
		//Update
		document.getElementById("divHeightIntDisplay").innerHTML = document.getElementById("inpHeight").value;
		document.getElementById("divHeightFracDisplay").innerHTML = fractionDisplay(document.getElementById("selHeightFrac").value, document.getElementById("fracDenom").value);
	}
	
	// Toggle depth
	if(document.getElementById("isDepth").value == "true"){	
		document.getElementById("divDepthIntSelect").style.display = "none";
		document.getElementById("divDepthIntDisplay").style.display = "block";
		document.getElementById("divDepthFracSelect").style.display = "none";
		document.getElementById("divDepthFracDisplay").style.display = "block";
		//Update
		document.getElementById("divWidthIntDisplay").innerHTML = document.getElementById("inpDepth").value;	
		document.getElementById("divWidthFracDisplay").innerHTML = fractionDisplay(document.getElementById("selDepthFrac").value, document.getElementById("fracDenom").value);
	}
	
	// Server-side update
	sndReq_UpdateDimensions();	
	
}

function cancelDimension(){
	// Toggle buttons
	document.getElementById("imgBtnChgDimension").src = "/smith_noble/images/v3/buttons/btnChangeDimensions_118x21.gif";
	document.getElementById("imgBtnChgDimension").onclick = changeDimension;
	document.getElementById("imgBtnSaveDimension").src = "/smith_noble/images/v3/buttons/btnSaveDisabled_56x21.gif";
	document.getElementById("imgBtnSaveDimension").onclick = emptyFunction;
	document.getElementById("imgBtnCancelDimension").src = "/smith_noble/images/v3/buttons/btnCancelDisabled_56x21.gif";
	document.getElementById("imgBtnCancelDimension").onclick = emptyFunction;

	// Toggle width
	if(document.getElementById("isWidth").value == "true"){
		document.getElementById("divWidthIntSelect").style.display = "none";
		document.getElementById("divWidthIntDisplay").style.display = "block";
		document.getElementById("divWidthFracSelect").style.display = "none";
		document.getElementById("divWidthFracDisplay").style.display = "block";
	}
	
	// Toggle height
	if(document.getElementById("isHeight").value == "true"){
		document.getElementById("divHeightIntSelect").style.display = "none";
		document.getElementById("divHeightIntDisplay").style.display = "block";
		document.getElementById("divHeightFracSelect").style.display = "none";
		document.getElementById("divHeightFracDisplay").style.display = "block";
	}
	
	// Toggle depth
	if(document.getElementById("isDepth").value == "true"){	
		document.getElementById("divDepthIntSelect").style.display = "block";
		document.getElementById("divDepthIntDisplay").style.display = "none";
		document.getElementById("divDepthFracSelect").style.display = "block";
		document.getElementById("divDepthFracDisplay").style.display = "none";
	}
	
}

function fractionDisplay(fraction, denom){
    var unit = "";
    if(fraction == 0 || denom == 0){
    	unit="0/0";
    }else{
        var numer = Math.round(fraction * denom);
        var n = numer;
    	var d = denom;  	
    	var gcf = GCF(denom, numer);       
     	n = n/gcf;
    	d = d/gcf;               
        unit = n + "/" + d;
    }
    return unit;
}

function GCF(num1, num2){
    if(num2 <= num1 && num1 % num2 == 0){
    	return num2;
    }else{
    	if(num1 < num2){
    		return GCF(num2, num1);
    	}else{
    		return GCF(num2, num1 % num2);
    	}
    }
}
-->
