//        Author: Alan Smith (Rema Tip Top UK Ltd.) Email: alan.smith@tip-top.co.uk

function check_qty(textbox,e,intMOQ) {

	textbox.value=textbox.value.replace(/[^0-9]/g,'');
	if (textbox.value!=0 && textbox.value!='')  {
		if (textbox.value % intMOQ!=0) {
			var intEntered=textbox.value;
			var intQty=textbox.value-(textbox.value % intMOQ)+intMOQ;
			textbox.value=intQty;
			alert('The quantity for product code '+textbox.name.substring(4)+' must be an exact multiple of '+intMOQ+'.\n\nYou entered a quantity of '+intEntered+', it has been adjusted to '+intQty+'.');
			tab_to(textbox.getAttribute('id'),e,0,'');
		}
	}
	
	//This function is called by the onblur event so lets reset the bgcolor by changing the class
	if (textbox.parentNode.parentNode.getAttributeNode('class').nodeValue=='product_line_focus') {
		textbox.parentNode.parentNode.getAttributeNode('class').nodeValue='product_line_normal';
	}
}

function highlightrow(textbox) {
	//This function is called by the onfocus event so lets change the bgcolor if it's a product line by changing the class
	if (textbox.parentNode.parentNode.getAttributeNode('class').nodeValue=='product_line_normal') {
		textbox.parentNode.parentNode.getAttributeNode('class').nodeValue='product_line_focus';
	}
}

function submit_form(strName, strUrl) {
	var newValue=document.createElement('input');
	var objElement=window.document.getElementById('doOnce');
	var objWait=window.document.getElementById('wait');
	
	if (objElement) {
		objElement.className='hidden';
		objWait.className='';
	}
	if (strName=='') {
		parent.frameMain.location=strUrl;
	} else {
		newValue.type='hidden';
		newValue.name=strName;
		newValue.value=1;
		document.forms[0].appendChild(newValue);
		document.forms[0].submit();
	}
}

function check_return_form() {
	//This function checks that the user has entered all the information required for a product return
	var strMsg="";
	var n;
	
	for (n=1; n <= document.forms[0].reason_count.value; n++) {
		if (eval("document.forms[0].reason_"+n+".value")==1||eval("document.forms[0].reason_"+n+".value")==6) {
			//Check that fault description supplied
			if (!(eval("document.forms[0].fault_"+n+".value"))) {
				strMsg=strMsg+"For ITEM "+n+" you must provide a description of the fault in the box provided.\n\n";
			}
		}
		if (eval("document.forms[0].reason_"+n+".value")==4) {
			var intOrdQty=parseInt(eval("document.forms[0].order_qty_"+n+".value"),10);
			var intDelQty=parseInt(eval("document.forms[0].despatch_qty_"+n+".value"),10);
			var intRetQty=parseInt(eval("document.forms[0].return_qty_"+n+".value"),10);
			
			if (isNaN(intOrdQty)||isNaN(intDelQty)||isNaN(intRetQty)||intOrdQty+intDelQty+intRetQty<3) {
				strMsg=strMsg+"For ITEM "+n+" you must enter a quantity that is greater than 0 in each box.\n\n";
			} else {
				if (intRetQty > intDelQty) {
					strMsg=strMsg+"For ITEM "+n+" you can't return more items than you say we delivered.\n\n";
				} else if (intDelQty <= intOrdQty) {
					strMsg=strMsg+"For ITEM "+n+" you can't return anything for the reason \"Wrong Qty Supplied\" if we delivered a quantity less than or equal to what you ordered. If you still want to make a return you will have to change the reason for returning the goods to \"Ordered in Error\".\n\n";
				} else if (intRetQty > intDelQty-intOrdQty)	{
					strMsg=strMsg+"For ITEM "+n+" you can't return a quantity of "+intRetQty+ ", it would leave you with fewer items than you originally ordered. If you still want to return these you will have to change the reason for returning the goods to \"Ordered in Error\".\n\n";
				}
			}
		}
	}
	
	if (strMsg) {
		alert(strMsg);
	} else {
		document.forms[0].submit();
	}
}

function credit_msg() {
	window.alert('Credit limit exceeded, cannot continue.');
}

function process_key(objElement,e,strFilter,intMOQ) {
	var strKey
	var strCurVal
	
	strKey=get_key(e);
	
	if (strKey!=0 && objElement.className!='' && objElement.className!='num') {
		objElement.className='';
	}
	if (strKey<32 && strKey!=13) {
		return true;
	} else if (strKey==13) { //it's enter
		var newValue=document.createElement('input');

		if (intMOQ!=null) {
			check_qty(objElement,e,intMOQ);
		}
		
		newValue.type='hidden';
		newValue.value='1';
		if (objElement.name=='search_text') {
			newValue.name='search';
		} else if (objElement.nodeName=='SELECT') {
			document.forms[0].submit();
			return true;
		} else {
			newValue.name='update';
		}
		document.forms[0].appendChild(newValue);
		document.forms[0].submit(0);
		return true;
	} else if (strFilter) { //we're filtering the keystrokes else it's freetext
		if (strFilter=='pd') { //it's positive decimal
			if (strKey==45) {
				return false
			} else {
				if (strKey==46) {
					if (objElement.value.indexOf(String.fromCharCode(strKey))!=-1) {
						return false;
					} else {
						return true;
					}
				} else {
					if (is_digit(strKey)) {
						return true;
					} else {
						return false;
					}
				}
			}
		} else if (strFilter=='d') { //it's any decimal
			if (strKey==45) {
				if (objElement.value.indexOf(String.fromCharCode(strKey))!=-1) {
					return false;
				} else {
					if (objElement.value=='') {
						return true;
					} else {
						return false;
					}
				}
			} else {
				if (strKey==46) {
					if (objElement.value.indexOf(String.fromCharCode(strKey))!=-1) {
						return false;
					} else {
						return true;
					}
				} else {
					if (is_digit(strKey)) {
						return true;
					} else {
						return false;
					}
				}
			}
		} else if (strFilter=='pi') { //it's positive integer
			if (is_digit(strKey)) {
				return true;
			} else {
				return false;
			}
		} else if (strFilter=='i') { //it's any integer
			if (strKey==45) {
				if (objElement.value.indexOf(String.fromCharCode(strKey))!=-1) {
					return false;
				} else {
					if (objElement.value=='') {
						return true;
					} else {
						return false;
					}
				}
			} else {
				if (is_digit(strKey)) {
					return true;
				} else {
					return false;
				}
			}
		} else if (strFilter=='s') { //it's preventing an sql injection hack
			var strExp="[^\"()A-Za-z0-9'_. @-]";
			var regExp = new RegExp(strExp);
			
			if (String.fromCharCode(strKey).match(regExp))  {
				return false;
			} else {
				return true;
			}
		}
	} else {  //it's free text
		return true;
	}
}

function get_key(e) {

	if (window.event) {
		return window.event.keyCode;
	} else if (e) {
		return e.which;
	} else {
		return null;
	}
}

function is_digit(strKey) {
	var strExp='[0-9]';
	var regExp = new RegExp(strExp);
	
	if (String.fromCharCode(strKey).match(regExp))  {
		return true;
	} else {
		return false;
	}
}
	
function tab_to(strID,e,intStep,strMsg) {
	var blnContinue;
	
	if (strMsg!='') {
		alert(strMsg);
	}

	if (e.shiftKey) {
		strID=eval(strID)-intStep;
		if (strID<0) {
			strID=0;
		}
	} else {
		strID=eval(strID)+intStep;
	}

	if (intStep!=0) {
		if (get_key(e)==9) {
			blnContinue=true;
		} else {
			blnContinue=false;
		}
	} else {
		blnContinue=false;
	}
	
	if (intStep==0 || blnContinue) {
		objNext=window.document.getElementById(strID);
		if (!(objNext)) { //return focus to the first element otherwise the next element
			objNext=window.document.getElementById('0');
		}
		//To avoid errors on pages with no objects try if (objNext) {
		if (navigator.userAgent.toLowerCase().indexOf("msie") == -1)  {    // Not Microsoft IExplorer
			setTimeout('objNext.focus();',0);
			if (objNext.nodeName=='INPUT' && objNext.type=="text") {
				objNext.select();
			}
		} else {//Microsoft IExplorer
			objNext.focus();
			if (objNext.nodeName=='INPUT' && objNext.type=="text") {
				var range = objNext.createTextRange();
				range.select();
			}
		}
		//}
	}

	resize_elements();
	
	return !blnContinue;
}

function resize_elements() {
	var windowHeight;
	var windowWidth;
	var newHeight;
	var newTableWidth;
	var objDoc;
	var intFirefoxOffset;
	var rowCount;
	var descSpan;

	if (window.frames['frameMain']) {
		objDoc=window.frames['frameMain'].document;
		intFirefoxOffset=40;
	} else {
		objDoc=window.document;
		intFirefoxOffset=0;
	}

	if (window.innerWidth) {//if browser supports window.innerWidth
		windowWidth=window.innerWidth;
		windowHeight=window.innerHeight-intFirefoxOffset;
	} else if (document.all) {//else if browser supports document.all (IE 4+)
		windowWidth=objDoc.documentElement.clientWidth;
		windowHeight=objDoc.documentElement.clientHeight;
	}

	newTableWidth=windowWidth-21;

	if (objDoc.getElementById('table_body')) {
		objDoc.getElementById('table_body').style.width=newTableWidth+"px";
	}
	
	if (objDoc.getElementById('product_table')) {
		//div and table widths
		objDoc.getElementById('product_table').style.width=(newTableWidth+16)+"px";
		objDoc.getElementById('table_header').style.width=newTableWidth+"px";
		//column widths
		objDoc.getElementById('table_body').rows[0].cells[0].width=objDoc.getElementById('table_header').rows[4].cells[0].width;
		objDoc.getElementById('table_body').rows[0].cells[1].width=objDoc.getElementById('table_header').rows[4].cells[1].width;
		objDoc.getElementById('table_body').rows[0].cells[3].width=objDoc.getElementById('table_header').rows[4].cells[3].width;
		objDoc.getElementById('table_body').rows[0].cells[4].width=objDoc.getElementById('table_header').rows[4].cells[4].width;
		//div height
		objDoc.getElementById('product_table').style.height=windowHeight-objDoc.getElementById('table_header').offsetHeight+"px";
	} else if (objDoc.getElementById('content_table')) {
		objDoc.getElementById('content_table').style.width=(newTableWidth+16)+"px";
		objDoc.getElementById('table_header').style.width=newTableWidth+"px";
		objDoc.getElementById('content_table').style.height=windowHeight-objDoc.getElementById('table_header').offsetHeight+"px";
	} else if (objDoc.getElementById('basket_table')) {
		//table and div widths
		objDoc.getElementById('table_header').style.width=newTableWidth+"px";
		objDoc.getElementById('basket_table').style.width=(newTableWidth+16)+"px";
		objDoc.getElementById('basket_footer').style.width=(newTableWidth+16)+"px";
		objDoc.getElementById('table_footer').style.width=newTableWidth+"px";
		//footer height
		objDoc.getElementById('basket_footer').style.height=objDoc.getElementById('table_footer').offsetHeight+"px";
		//resize centre table
		objDoc.getElementById('basket_table').style.height=(windowHeight-objDoc.getElementById('table_header').offsetHeight-objDoc.getElementById('table_footer').offsetHeight)+"px";
		//postion the footer after the centre div
		objDoc.getElementById('basket_footer').style.top=(objDoc.getElementById('table_header').offsetHeight+objDoc.getElementById('basket_table').offsetHeight)+"px";
		//column widths
		objDoc.getElementById('table_body').rows[0].cells[0].width=objDoc.getElementById('table_header').rows[4].cells[0].width;
		objDoc.getElementById('table_body').rows[0].cells[2].width=objDoc.getElementById('table_header').rows[4].cells[2].width;
		descSpan=objDoc.getElementById('table_body').getAttributeNode('name').nodeValue;
		if (descSpan!=7) {
			objDoc.getElementById('table_body').rows[0].cells[3].width=objDoc.getElementById('table_header').rows[4].cells[3].width;
			objDoc.getElementById('table_body').rows[0].cells[4].width=objDoc.getElementById('table_header').rows[4].cells[4].width;
			objDoc.getElementById('table_body').rows[0].cells[5].width=objDoc.getElementById('table_header').rows[4].cells[5].width;
			objDoc.getElementById('table_body').rows[0].cells[6].width=objDoc.getElementById('table_header').rows[4].cells[6].width;
		}
		if (descSpan==2) {
			objDoc.getElementById('table_body').rows[0].cells[7].width=objDoc.getElementById('table_header').rows[4].cells[7].width;
		}
	} else if (objDoc.getElementById('order_table')) {
		//div and table widths
		objDoc.getElementById('order_table').style.width=(newTableWidth+16)+"px";
		objDoc.getElementById('table_header').style.width=newTableWidth+"px";
		//column widths
		objDoc.getElementById('table_body').rows[2].cells[0].width=objDoc.getElementById('table_header').rows[4].cells[0].width;
		objDoc.getElementById('table_body').rows[2].cells[1].width=objDoc.getElementById('table_header').rows[4].cells[1].width;
		objDoc.getElementById('table_body').rows[2].cells[3].width=objDoc.getElementById('table_header').rows[4].cells[3].width;
		objDoc.getElementById('table_body').rows[2].cells[4].width=objDoc.getElementById('table_header').rows[4].cells[4].width;
		//div height
		objDoc.getElementById('order_table').style.height=windowHeight-objDoc.getElementById('table_header').offsetHeight+"px";
	} else if (objDoc.getElementById('simple')) {
		//div and table widths
		objDoc.getElementById('simple').style.width=windowWidth+"px";
		objDoc.getElementById('simple_table').style.width=windowWidth+"px";
		//div height
		objDoc.getElementById('simple').style.height=windowHeight-objDoc.getElementById('simple_table').offsetHeight+"px";
	} else if (objDoc.getElementById('return_table')) {
		//div and table widths
		objDoc.getElementById('return_table').style.width=(newTableWidth+16)+"px";
		objDoc.getElementById('table_header').style.width=newTableWidth+"px";
		//div height
		objDoc.getElementById('return_table').style.height=windowHeight-objDoc.getElementById('table_title').offsetHeight-objDoc.getElementById('table_header').offsetHeight+"px";
	}
}
