﻿function onInvQtyChange(qtyfld) {
	var reset = false;
	var qty = 0;
	var msgInfo = '';
	
	switch (qtyfld.type) {
		case 'text':
			qty = qtyfld.value;
			break;
		case 'select-one':
			qty = qtyfld[qtyfld.selectedIndex].value
			break;
	}
	if (isNaN(qty) || qty.indexOf(',') >= 0 || qty.indexOf('.') >= 0 || qty < 0) { 
		alert('That is not a valid quantity.');
		reset = true;
		qty = null;
	} else {
		if (qty > 0) 
		{
			var fieldSuffix = qtyfld.name.substr(4);
			// Check for change in price/tax/weight
			var Msg = '';
			var price = parseInt(eval('document.forms[0].price_' + fieldSuffix + '.value'));
			var sprice = parseInt(eval('document.forms[0].sprice_' + fieldSuffix + '.value'));
			if (price != sprice)
				Msg += 'The price for this item has changed. The new price is ' + sprice + '. ';
					
			var weight = parseInt(eval('document.forms[0].wt_' + fieldSuffix + '.value'));
			var sweight = parseInt(eval('document.forms[0].swt_' + fieldSuffix + '.value'));
			if (weight != sweight)
				Msg += 'The weight for this item has changed. The new weight is ' + sweight + '. ';
					
			var tax = parseInt(eval('document.forms[0].tax_' + fieldSuffix + '.value'));
			var stax = parseInt(eval('document.forms[0].stax_' + fieldSuffix + '.value'));
			if (tax != stax) {
				Msg += 'The tax status for this item has changed.';
				if (stax) { 
					Msg += ' The item is now taxable.';
				} else {
					Msg += ' The item is now not taxable.';
				}
			}
			if (Msg) {
				Msg += '\nClick OK to use the new values.';
				if (confirm(Msg)) {
					var objField = eval('document.forms[0].price_' + fieldSuffix);
					objField.value = sprice;
					objField = eval('document.forms[0].tax_' + fieldSuffix);
					objField.value = stax;
					objField = eval('document.forms[0].wt_' + fieldSuffix);
					objField.value = sweight;
				} else {
					reset = true;
					qty = null;
				}
			}
			// Test min/max/incr for text based qty
			if (qty != null && qtyfld.type == 'text') {
				var min = parseInt(eval('document.forms[0].min_' + fieldSuffix + '.value'));
				var max = parseInt(eval('document.forms[0].max_' + fieldSuffix + '.value'));
				var incr = parseInt(eval('document.forms[0].incr_' + fieldSuffix + '.value'));
				
				if (qty < min) {
					msgInfo = 'You need to order at least ' + min + ', changing quantity to ' + min + '.';
					//alert('You need to order at least ' + min + ', changing quantity to ' + min + '.');
					reset = true;
					qty = min;
				}
				if (max > 0 && qty > max) {
					msgInfo = 'You need to order no more than ' + max + ', changing quantity to ' + max + '.';
					//alert('You need to order no more than ' + max + ', changing quantity to ' + max + '.');
					reset = true;
					qty = max;
				}
				if (incr > 1) {
					var incrtst = (qty - min) % incr;
					if (incrtst != 0) {
						var newqty = parseInt(qty) + (incr - incrtst);
						if (max > 0 && newqty > max) { newqty = max; }
						msgInfo = 'The quantity must be in increments of ' + incr + ', changing quantity to ' + newqty + '.';
						//alert('The quantity must be in increments of ' + incr + ', changing quantity to ' + newqty + '.');
						reset = true;
						qty = newqty;
					}
				}
			} else if (qtyfld.type == 'select-one' && !reset) { // yank invalid qty from pulldown menu
				var min = parseInt(eval('document.forms[0].min_' + fieldSuffix + '.value'));
				var incr = parseInt(eval('document.forms[0].incr_' + fieldSuffix + '.value'));
				for (var idx = 1; idx < qtyfld.options.length; idx++) {
					if ((qtyfld.options[idx].value - min) % incr) {
						qtyfld.options[idx] = null;
					}
				}		
			}
		} 
	}
	if (reset) {
		switch (qtyfld.type) {
			case 'text':
				qtyfld.value = qty ? qty : qtyfld.defaultValue;
				break;
			case 'select-one':
				if (qty) {
					for (var idx = 1; idx < qtyfld.options.length; idx++) {
						if (qtyfld.options[idx].selected && qtyfld.options[idx].value != qty) {
							qtyfld.options[idx].selected = false;
						} else if (!qtyfld.options[idx].selected && qtyfld.options[idx].value == qty) {
							qtyfld.options[idx].selected = true;
						}
					}		
				} else {
					for (var idx = 1; idx < qtyfld.options.length; idx++) {
						if (qtyfld.options[idx].selected && !qtyfld.options[idx].defaultSelected) {
							qtyfld.options[idx].selected = false;
						} else if (!qtyfld.options[idx].selected && qtyfld.options[idx].defaultSelected) {
							qtyfld.options[idx].selected = true;
						}
					}		
				}
				break;
		}
	}
	if (msgInfo != '') { alert(msgInfo); }
	
	if (reset) return false;
}

// Inventory select list change handler
//function onInvItemChange(invselectfld, idfld, minfld, maxfld, incrfld, pricefld, taxfld, weightfld) {
function onInvItemChange(invselectfld) {

	var fieldSuffix = invselectfld.name.substr(8);
	var str = new String(invselectfld.options[invselectfld.selectedIndex].value);
	var ary = str.split("|");
	var arylength = ary.length;
	var InventoryItemID = 1, Price = 0, Taxable = 'Y', Weight = 0, MinimumOrder = 1, MaximumOrder = 0, OrderIncrements = 1;
	switch (arylength) {
		case 7: // OrderIncrements
			OrderIncrements = parseInt(ary[6]);
		case 6: // MaximumOrder
			MaximumOrder = parseInt(ary[5]);
		case 5: // MinimumOrder
			MinimumOrder = parseInt(ary[4]);
		case 4: // Weight
			Weight = parseFloat(ary[3]);
			SWeight = parseFloat(ary[3]);
		case 3: // Taxable
			if (ary[2] == 'Y' || ary[2] == 'y') {
				Taxable = 1;
				STaxable = 1;
			} else {
				Taxable = 0;
				STaxable = 0;
			}
		case 2: // Price
			Price = parseFloat(ary[1]);
			SPrice = parseFloat(ary[1]);
		case 1: // InventoryItemID
			InventoryItemID = parseInt(ary[0]);
	}
	var objField = eval('document.forms[0].id_' + fieldSuffix);
	objField.value = InventoryItemID;
	objField = eval('document.forms[0].min_' + fieldSuffix);
	objField.value = MinimumOrder;
	objField = eval('document.forms[0].max_' + fieldSuffix);
	objField.value = MaximumOrder;
	objField = eval('document.forms[0].incr_' + fieldSuffix);
	objField.value = OrderIncrements;
	objField = eval('document.forms[0].price_' + fieldSuffix);
	objField.value = Price;
	objField = eval('document.forms[0].sprice_' + fieldSuffix);
	objField.value = Price;
	objField = eval('document.forms[0].tax_' + fieldSuffix);
	objField.value = Taxable;
	objField = eval('document.forms[0].stax_' + fieldSuffix);
	objField.value = Taxable;
	objField = eval('document.forms[0].wt_' + fieldSuffix);
	objField.value = Weight;
	objField = eval('document.forms[0].swt_' + fieldSuffix);
	objField.value = Weight;
    objField = eval('document.forms[0].val_' + fieldSuffix);
    objField.value = invselectfld.options[invselectfld.selectedIndex].text;

//DBG - testing dyn load of DM item info
    $.getJSON("DocMartInfo.asp?InventoryItemID=" + InventoryItemID, 
        function(dminfo) {
            $("#DIV" + fieldSuffix).html(dminfo.DIV);
            $("#" + fieldSuffix + "IMG").attr("src",dminfo.IMG);
            $("#" + fieldSuffix + "LNK").attr("href",dminfo.LNK);
            //$("#" + fieldSuffix + "DETAILS").attr("href",dminfo.DETAILS);
            $("#" + fieldSuffix + "DETAILS").attr("href","DocMartItemView.asp?InventoryItemID=" + InventoryItemID);
        });

	return true;
}
//Short Function Name
function DCI(ImgFieldName, ImgFieldData, LinkFieldName, LinkFieldData, TextFieldName, TextFieldData, DetailsFieldName, DetailsFieldData) {
    return DynamicChangeItem(ImgFieldName, ImgFieldData, LinkFieldName, LinkFieldData, TextFieldName, TextFieldData, DetailsFieldName, DetailsFieldData);
}
function DynamicChangeItem(ImgFieldName, ImgFieldData, LinkFieldName, LinkFieldData, TextFieldName, TextFieldData, DetailsFieldName, DetailsFieldData) {

	var objImgField = eval('document.images[\'' + ImgFieldName + '\']');
	var objLinkField, objTextField, objDetailsLink;
	
	if (document.all) { // IE
		objLinkField = eval('document.all[\'' + LinkFieldName + '\']');
		objDetailsLink = eval('document.all[\'' + DetailsFieldName + '\']');
		objTextField = eval('document.all[\'' + TextFieldName + '\']');
	}
	else {  // NS
		if (document.getElementById) { // 6+
			objLinkField = eval('document.links[\'' + LinkFieldName + '\']');
			objDetailsLink = eval('document.links[\'' + DetailsFieldName + '\']');
			objTextField = eval('document.getElementById(\'' + TextFieldName + '\')');
		}
		else { // 4x
			// Netscape 4 cannot use document.links[linkname] so we need to loop through the links[] collection
			// and find the link by finding an identifier that was added to it (lname or dname)
			for( var i = 0; i < document.links.length-1; i++ ) {
				if (QSValue(document.links[i].search, 'lname') == LinkFieldName) {
					objLinkField = document.links[i];
				}
					
				if (QSValue(document.links[i].search, 'dname') == DetailsFieldName) {
					objDetailsLink = document.links[i];
				}
			}
			
			// NOTE: NS4 doesn't actually work with the text field (objTextField)
		}
	}
	
	if (objImgField) { objImgField.src = ImgFieldData; }
	if (objLinkField) { objLinkField.href = LinkFieldData; }
	if (objDetailsLink) { objDetailsLink.href = DetailsFieldData; }
	if (objTextField) { objTextField.innerHTML = TextFieldData.replace(/``/g,'"'); } // `` is used to encode quotes for HTML

	return true;
}

function QSValue(QueryString, Item) {
	var pos, cStart, cEnd, strValue;
	
	/* First check for a session cookie */
	pos = QueryString.indexOf(Item + '=');
	strValue = '';
	
	if (pos != -1) {
		cStart = pos + Item.length+1; // The length of Item + '='
		cEnd = QueryString.indexOf('&', cStart);
		if (cEnd == -1) cEnd = QueryString.length;
		strValue = QueryString.substring(cStart, cEnd);
		//strValue = unescape(strValue);
	}
	
	return strValue;
}

