function charLimit(element,number,start,length,words)
{
	var numChar = element.value;
		if (parseInt(numChar.length) > number)
		{
			element.readOnly = true;
			element.blur();
			alert(words);
			element.readOnly = false;
			element.focus();
			element.value = numChar.substring(start,length);
		}
}


var ns4 = (document.layers); 
var ie4 = (document.all && !document.getElementById);
var ie5 = (document.all && document.getElementById);
var ns6 = (!document.all && document.getElementById);

// Start with checkCapsRedundant = false; if the caps lock gets set, set to true.
checkCapsRedundant = false;

function checkCapsLock(e) {
	var myKeyCode=0;
	var myShiftKey=false;
	var myMsg='Caps Lock Key Enabled.\nYour password is case-sensitive.\nPlease disable Caps Lock to ensure your password is entered correctly.';

	// Internet Explorer 4+
	if ( document.all ) {
		myKeyCode=e.keyCode;
		myShiftKey=e.shiftKey;

	// Netscape 4
	} else if ( document.layers ) {
		myKeyCode=e.which;
		myShiftKey=( myKeyCode == 16 ) ? true : false;

	// Netscape 6
	} else if ( document.getElementById ) {
		myKeyCode=e.which;
		myShiftKey=( myKeyCode == 16 ) ? true : false;
	}

	// Upper case letters are seen without depressing the Shift key, therefore Caps Lock is on
	if ( ( myKeyCode >= 65 && myKeyCode <= 90 ) && !myShiftKey && !checkCapsRedundant ) {
		alert( myMsg );
		checkCapsRedundant = true;

	// Lower case letters are seen while depressing the Shift key, therefore Caps Lock is on
	} else if ( ( myKeyCode >= 97 && myKeyCode <= 122 ) && myShiftKey && !checkCapsRedundant ) {
		alert( myMsg );
		checkCapsRedundant = true;
	}
}

function checkLength(subject, fieldname, minLength, maxLength, loopPartner) {
	var subjectType = subject.type;
	switch (subjectType) {
		case "password":
		case "text":
			if (subject.value.length < minLength) {
				alert('The minimum required length for the ' + fieldname + ' field is ' + minLength + ' characters.\nPlease complete this field.');
				subject.focus();
			}
		break;
	}
	return true;
}

function confirmValues(minLength, field, fieldName, confField, confFieldName, blankFields, showAlerts) {
	if(field.value != confField.value) {
		myMsg = fieldName + ' and ' + confFieldName + ' must be identical.\n';
		if(field.value.length < minLength) {
			myMsg = myMsg + fieldName + ' must be at least ' + minLength + ' characters.\n';	
		}
		myMsg = myMsg + 'Please try again\n';
		if (showAlerts != 'f') {
			alert(myMsg);
		}
		if (blankFields != 'f') {
			field.value = '';
			confField.value = '';
		}
		field.focus();
		return false;
	}
	else {
		if(field.value.length < minLength) {
			if (showAlerts != 'f') {
				alert(fieldName + ' must be at least ' + minLength + ' characters.\nPlease try again.');
			}
			return false;
		}
	}
	return true;
}

function clearForm(formName,elemList) {

	if (elemList) {
		for (var i=0; i < elemList.length; i++) {
		var curElem = formName.elements[elemList[i]];
		curElem.value = "";
		}
		return false;
	}

	for (var i = 1; i < formName.elements.length; i++) {
		var curElem = formName.elements[i];
		curElem.value = "";
	}
}

function menuGen(source, target, enORdis) {
	for (var i = target.length; i > 0; i--)
        target.options[0] = null;

	var selectedText = source.options[source.selectedIndex].text;

	if (selectedText == 'Select one...') {
		target.options[0] = new Option('', '', false, false);
		target.disabled = true;
		return true;

	} else {
		if (enORdis == '1') target.disabled = false;
		else if (enORdis == '0') target.disabled = true;
		var optNamesValues = menuGenHelper(selectedText);
		var optNames = optNamesValues[0];
		var optValues = optNamesValues[1];
	}

	for (var i; i < optNames.length; i++) {
		var name = optNames[i];
		if (optValues == 'use_names') var value = name;
		else var value = optValues[i];

	    target.options[i] = new Option(name, value, false, false);
	}
}

function resultsNav(form,page,curItem,sortedBy){
	form.searchtype.value='display_' + form.type.value;
	form.display.value=curItem;
	form.page.value=page;
	form.submit();
}


function resultsNavJump(form,pageElement) {
	var pageNum = document.getElementById(pageElement).value;
	if (pageNum >= 1 && pageNum <= lastPage) {
		form.page.value=pageNum;
		form.submit();
		return;
	}
	alert('You must enter a number between 1 and ' + lastPage + '!');
} 

function selectAll(form,page,curItem) {
	form.searchtype.value='display_' + form.type.value;
	form.display.value=curItem;
	form.page.value=page
	form.selectAll.value = 1;
	form.submit();
}
function setOptions(elem,startsWithCheck,exactCheck){
//0 is starts with
//1 is Exact
//Simple function for the Parts Search/Locate Radio buttons.
	if (elem.value.indexOf('nsn') > -1)
	{
		document.mainsearch.matching[0].disabled = true ;
		document.mainsearch.matching[1].checked = 1; 
	}
	else
	{
		//Enable both radio buttons and select Starts With	
		document.mainsearch.matching[0].disabled = false ;
		document.mainsearch.matching[1].disabled = false ;
		document.mainsearch.matching[0].checked = 1;
	}
}

function selectGroup(form,group,allDisMsg,indicator,confMsg){
	var groupChecked = 0;	// Number of checkboxes in the group that are checked.
	var groupSize = 0;		// Total of elements in group.
	var allDisabled = true;	// Track if all the elements are disabled.
	
	if (!indicator) {
		var indicator = "empty";
	} else {}

	if (confMsg) {
		switch (confMsg) {

			case "del_rfq":
				contextMessage = "Delete ALL RFQs?\nAll reports will be selected for deletion and removed when you click Recalculate.\n";
				break;
	
			case "del_rpt":
				contextMessage = "Delete ALL Reports?\nALL reports will be selected for deletion and removed when you click Recalculate.";
				break;

// =====================================================
			default:
				return false;
				break;
		}
// =====================================================

		if (!confirm(contextMessage)) {
			return false;

		} else {}

	} else {}

	for (var i = 0; i < form.elements.length; i++) {
		var curElem = form.elements[i];
		var inGroup = curElem.name.indexOf(group);
		var isCheckbox = curElem.type;
		var isLead = curElem.name.indexOf('_lead');
		var isDis = curElem.name.indexOf('_dis');
		var isEnabled = !curElem.disabled;
		var isDim = curElem.className.indexOf('dim');
		if (inGroup > -1 && isCheckbox == "checkbox" && isLead == -1 && isDis == -1 && isEnabled ) {
			if ( isDim == -1 ) {
				if (curElem.checked) {
					groupChecked++;
				}
				else {}
				groupSize++;
				allDisabled = false;

			} else if ( isDim > -1 ) {
				allDisabled = false;
			} else {}

		} else {}
	}

	if (groupSize == 0) {

		var contextMessage;
		if (!allDisMsg) {
			var allDisMsg = "empty";
		}

		if (allDisabled) {
			switch(allDisMsg) {
				case "all_rpts":
					contextMessage = "No Reports Selected.\nThere are no results available for these reports.";
					break;
	
				default:
					return false;
					break;
			}
			
			alert(contextMessage);
			return false;
		}

		// If at least some of the elements are enabled.
		switch(allDisMsg) {
		// =====================================================
		// REPORT RESULTS
		// -----------------------------------------------------

			// All Available Reports previously selected
			case "all_rpts":
				contextMessage = "If you do not wish to purchase All Available Reports,\nplease deselect the All Available Reports options below.";
				break;

			default:
				return false;
				break;
		}

		alert(contextMessage);
		return false;
	}

	// Set the status of the checkboxes in the group.
	for (var i = 0; i < form.elements.length; i++) {
		var curElem = form.elements[i];
		var inGroup = curElem.name.indexOf(group);
		var isCheckbox = curElem.type;
		var isLead = curElem.name.indexOf('_lead');
		var isIndicator = curElem.name.indexOf(indicator);
		var isDis = curElem.name.indexOf('_dis');
		var isEnabled = !curElem.disabled;
		var isDim = curElem.className.indexOf('dim');
		
		if ((inGroup > -1 && isCheckbox == "checkbox" && isLead == -1 && isDis == -1 && isEnabled  && isDim == -1) || (isIndicator > -1 && isCheckbox == "checkbox" && isLead == -1 && isDis == -1 && isEnabled  && isDim == -1)) {
			if (groupChecked < groupSize) {
				curElem.checked = true;
			} else {
				curElem.checked = false;
			}
		}
	}
}

function addComment(list, commentBox) {

	var listIndex = list.selectedIndex

	if (listIndex > 0) {
		var comment = list[listIndex].value;
		var confirmMsg = "The following will be added to the RFQ Comments:\n\n";
		
		if (confirm(confirmMsg + comment)) {
			var confirmSep = "\n-----\n";
			commentBox.value = commentBox.value + confirmSep + comment;
		}
		list.selectedIndex = 0;
	}
}
