function CheckBrowser(blnPopup) {
	if (!(document.getElementById && document.designMode && document.execCommand)) {
		if (blnPopup) document.location.href = '/ecms/admin/noscript.pop.asp';
		else document.location.href = '/ecms/admin/noscript.asp';
	}
}

function ChangeImage(strName, strSource) {
	document.images[strName].src = strSource;
}

function PreloadImages() {
	var objArgs = PreloadImages.arguments;
	var objImg = new Image;
	for (var intCount = 0; intCount < objArgs.length; intCount++) {
		objImg.src = objArgs[intCount];
	}
}

function Round(dblNumber, intDecimals) {
	if (!intDecimals || intDecimals < 0) intDecimals = 0;
	if (intDecimals > 0) return (Math.round(dblNumber * Math.pow(10, intDecimals)) / Math.pow(10, intDecimals));
	else return Math.round(dblNumber);
}

function FormatNumber(dblNumber, intDecimals) {
	var strNumber = Round(dblNumber, intDecimals).toString();
	var intCut = strNumber.indexOf('.');
	var intPoints, intCount;
	if (intCut < 0) {
		intCut = strNumber.length;
		strNumber += '.';
	}
	intPoints = strNumber.substr(intCut + 1).length
	for (intCount = intPoints; intCount < intDecimals; intCount++) {
		strNumber += '0'
	}
	return strNumber
}

function Popup(strURL, strName, intWidth, intHeight, strStatus, strScroll, strResize, strToolbar, strMenu, intTop, intLeft) {
	if (!strURL) {
		alert('A link must be specified when using the Popup function.');
	}
	else {
		window.name = 'popupopener';
		var strTop, strLeft;
		if (!strName) strName = 'popup';
		if (!intWidth) intWidth = 600;
		if (intWidth > (window.screen.width - 25)) intWidth = (window.screen.width - 25);
		if (!intHeight) intHeight = 400;
		if (intHeight > (window.screen.height - 125)) intHeight = (window.screen.height - 125);
		if (!strStatus) strStatus = 'yes';
		if (!strScroll) strScroll = 'yes';
		if (!strResize) strResize = 'yes';
		if (!strToolbar) strToolbar = 'no';
		if (!strMenu) strMenu = 'no';
		if (intTop && !isNaN(intTop)) strTop = ',top=' + intTop;
		if (intLeft && !isNaN(intLeft)) strLeft = ',left=' + intLeft;
		var objWindow = window.open(strURL, strName, 'width=' + intWidth + ',height=' + intHeight + ',status=' + strStatus + ',scrollbars=' + strScroll + ',resizable=' + strResize + ',toolbar=' + strToolbar + ',menubar=' + strMenu + strTop + strLeft);
		objWindow.focus();
	}
}

function Popdown(strURL, blnLeaveOpen) {
	if (!strURL) {
		alert('A link must be specified when using the Popdown function.');
	}
	else {
		if (top.opener) {
			var objParent = top.opener;
			objParent.location.href = strURL;
			if (!blnLeaveOpen) {
				objParent.focus();
				top.close();
			}
		}
		else {
			alert('Unfortunately the link could not be followed.\nThe window that opened this page may have\nbeen closed, or your browser may not\nsupport this function.');
		}
	}
}

function FormChanged(strForm) {
	var blnChanged = false;
	if (document.forms[strForm]) {
		var objForm = document.forms[strForm];
		var objField, intField, objOption, intOption, blnDefault;
		for (intField = 0; intField < objForm.elements.length; intField++) {
			objField = objForm.elements[intField];
			if (objField.type == 'select-one' || objField.type == 'select-multiple') {
				// check whether there is a default selection
				blnDefault = false;
				for (intOption = 0; intOption < objField.options.length; intOption++) {
					objOption = objField.options[intOption];
					if (objOption.defaultSelected) {
						blnDefault = true;
						break;
					}
				}
				for (intOption = 0; intOption < objField.options.length; intOption++) {
					objOption = objField.options[intOption];
					// first check if it's been deselected, then check if it's been selected without being the default option
					if ((objOption.defaultSelected && !objOption.selected) || (!objOption.defaultSelected && objOption.selected && (blnDefault || intOption > 0))) {
						blnChanged = true;
						break;
					}
				}
				if (blnChanged) break;
			}
			else if (objField.type == 'checkbox' || objField.type == 'radio') {
				if ((objField.defaultChecked && !objField.checked) || (!objField.defaultChecked && objField.checked)) {
					blnChanged = true;
					break;
				}
			}
			// text, textarea, hidden, submit, reset, button, password, file
			else {
				// fix for IE, default value missing line feed characters
				var strDefault = objField.defaultValue;
				var objRX = new RegExp('\r', 'gim');
				if (document.all) strDefault = strDefault.replace(objRX, '\r\n');
				if (objField.value != strDefault) {
					blnChanged = true;
					break;
				}
			}
		}
	}
	return blnChanged;
}

function FirstFieldFocus(strForm) {
	var objForm, intField, objField;
	var blnValid = false;
	if (strForm && document.forms[strForm]) {
		objForm = document.forms[strForm];
		blnValid = true;
	}
	else if (document.forms[0]) {
		objForm = document.forms[0];
		blnValid = true;
	}
	if (blnValid) {
		for (intField = 0; intField < objForm.elements.length; intField++) {
			objField = objForm.elements[intField];
			if (objField.type != 'hidden') {
				objField.focus();
				break;
			}
		}
	}
}

function SubmitTab(strForm, strRedirect) {
	if (document.forms[strForm]) {
		var objForm = document.forms[strForm];
		if (FormChanged(strForm)) {
			if (confirm('If you browse away from this form, the changes you have made will be lost.\nWould you like to save the changes and continue now?\n\nClick \'OK\' to save and continue or \'Cancel\' to return to the form.')) {
				if (objForm['next']) objForm['next'].value = strRedirect;
				objForm.submit();
			}
		}
		else {
			var strStart = (strRedirect.indexOf('?') >= 0) ? '&' : '?';
			if (objForm['redirect']) strRedirect += (strStart + 'id=' + GetID() + '&redirect=' + escape(objForm['redirect'].value));
			document.location.href = strRedirect;
		}
	}
}

function GetID() {
	var intID = QueryString('id');
	if (intID.length == 0) {
		var objID = document.getElementById('id');
		if (objID) intID = objID.value;
	}
	return intID;
}

function RandomString(intLength, blnUpper) {
	var blnFirst = true;
	var strTemp = '';
	var intCurrentLength, intCurrent;
	for (intCurrentLength = 1; intCurrentLength <= intLength; intCurrentLength++) {
		if (blnFirst) {
			intCurrent = RandomNumber(65, 90);
			blnFirst = false;
		}
		else {
			intCurrent = (Math.random() < 0.5) ? RandomNumber(48, 57) : RandomNumber(65, 90);
		}
		strTemp = strTemp + String.fromCharCode(intCurrent);
	}
	return blnUpper ? strTemp : strTemp.toLowerCase();
}

function RandomNumber(lngLow, lngHigh) {
	var lngBase, lngTemp;
	if (lngLow > lngHigh) {
		lngBase = lngLow;
		lngLow = lngHigh;
		lngHigh = lngBase;
	}
	if (lngLow == lngHigh) {
		lntTemp = lngHigh;
	}
	else {
		lngBase = (lngHigh - lngLow) + 1;
		lngTemp = Math.round((Math.random() * lngBase) + (lngLow - 0.5));
	}
	return lngTemp;
}

function SetCursorSelection(objInput) {
	if (document.selection) objInput.cursorSelection = document.selection.createRange().duplicate();
}

function CurrentSelection(objInput) {
	if (objInput.cursorSelection) return objInput.cursorSelection.text;
	else if (objInput.selectionStart || objInput.selectionStart == 0) return objInput.value.substring(objInput.selectionStart, objInput.selectionEnd);
}

function ReplaceSelection(objInput, strNew) {
	if (objInput.cursorSelection) {
		objInput.cursorSelection.text = strNew;
		objInput.focus;
	}
	else if (objInput.selectionStart || objInput.selectionStart == 0) {
		var intStart = objInput.selectionStart;
		var intEnd = objInput.selectionEnd;
		var intCursor = (objInput.value.substring(0, intStart) + strNew).length;
		objInput.value = objInput.value.substring(0, intStart) + strNew + objInput.value.substring(intEnd);
		objInput.focus();
		objInput.selectionStart = intCursor;
		objInput.selectionEnd = intCursor;
	}
	else objInput.value += strNew;
	objInput.focus();
}

function WrapSelection(objInput, strStart, strEnd) {
	ReplaceSelection(objInput, strStart + CurrentSelection(objInput) + strEnd);
}

function ApplyDiscount(objDiscount, strForm, strFieldID, strFieldPrice, strFieldDiscount) {
	var objForm = document.forms[strForm];
	if (objForm[strFieldID]) {
		var objFields = objForm[strFieldID];
		var intDiscount = objDiscount['discount'][objDiscount['discount'].selectedIndex].value;
		if (!intDiscount) intDiscount = 0;
		var intRounding = objDiscount['round'][objDiscount['round'].selectedIndex].value;
		if (!intRounding) intRounding = 0;
		var intField, intProduct, dblPrice, intLength;
		if (objFields.length == undefined) intLength = 1;
		else intLength = objFields.length;
		for (intField = 0; intField < intLength; intField++) {
			if (intLength == 1) intProduct = objForm['prdID'].value;
			else intProduct = objFields[intField].value;
			dblPrice = FixNumber(objForm[strFieldPrice + intProduct].value);
			if (intDiscount > 0) dblPrice = (dblPrice * (1 - (intDiscount / 100)));
			if (intRounding > 0) dblPrice = (Math.round((100 / intRounding) * dblPrice) * (intRounding / 100));
			objForm[strFieldDiscount + intProduct].value = FormatNumber(dblPrice, 2);
		}
	}
}

function BrowseImages(strForm, strField, strWidth, strHeight, strSource) {
	var strURL = '/ecms/admin/shared/images/'
	if (strForm && strField) {
		strURL += '?form=' + strForm + '&field=' + strField;
		if (document[strForm][strField].value) strURL += '&source=' + document[strForm][strField].value;
		else if (strSource) strURL += '&source=' + strSource;
		if (strWidth) strURL += '&width=' + strWidth;
		if (strHeight) strURL += '&height=' + strHeight;
	}
	Popup(strURL, 'image', 600, 450);
}

function BrowseFiles(strForm, strField, strSource) {
	var strURL = '/ecms/admin/shared/files/'
	if (strForm && strField) {
		strURL += '?form=' + strForm + '&field=' + strField;
		if (document[strForm][strField].value) strURL += '&source=' + document[strForm][strField].value;
		else if (strSource) strURL += '&source=' + strSource;
	}
	Popup(strURL, 'file', 600, 450);
}

function LaunchEditor(strForm, strField, strAction, intMode) {
	if (document.forms[strForm]) {
		if (!intMode) intMode = 0;
		Popup('/ecms/admin/shared/editor/?form=' + strForm + '&field=' + strField + '&action=' + escape(strAction) + '&mode=' + intMode, 'editor', 632, 510, 'no', 'no');
	}
}

function BrowseCurrencies(strForm, strField) {
	Popup('/ecms/admin/shared/currencies/?form=' + strForm + '&field=' + strField, 'currencies', 600, 450);
}

function BrowseCountries(strForm, strField) {
	Popup('/ecms/admin/shared/countries/?form=' + strForm + '&field=' + strField, 'countries', 600, 450);
}

function LaunchCalendar(strForm, strField, strSource) {
	var strValue = document[strForm][strField].value;
	if (strValue) strSource = strValue;
	Popup('/ecms/admin/shared/date.pop.asp?form=' + strForm + '&field=' + strField + '&date=' + strSource, 'date', 188, 188, 'no', 'no', 'no', 'no', 'no');
}

function ImageDimensions(strForm, strURL, strWidth, strHeight) {
	var objForm = document.forms[strForm];
	var strImage = objForm[strURL].value;
	if (strImage.length > 0) {
		var objImg = new Image;
		with (objImage) {
			src = strImage;
			objForm[strWidth].value = width;
			objForm[strHeight].value = height;
		}
	}
}

function CreateVar(strName, varValue) {
	eval(strName + ' = varValue');
}

function ImageDimensions(strForm, strURL, strWidth, strHeight) {
	var objForm = document.forms[strForm];
	var strImage = objForm[strURL].value;
	CreateVar('sobjImg', new Image);
	sobjImg.formName = strForm;
	sobjImg.widthName = strWidth;
	sobjImg.heightName = strHeight;
	sobjImg.onload = SetDimensions;
	if (strImage.length > 0) {
		sobjImg.src = strImage;
	}
}

function SetDimensions() {
	var objForm = document.forms[sobjImg.formName];
	objForm[sobjImg.widthName].value = sobjImg.width;
	objForm[sobjImg.heightName].value = sobjImg.height;
}

String.prototype.toDecimal = function() {
	if (this.search(/\.\d{2}/) > 0) return this;
	else {
		if (this.search(/\.\d{1}/) > 0) return this + '0';
		else return this + '.00';
	}
}

function CopyFields(strForm, strSrc, strDst) {
	var objForm = document.forms[strForm];
	var objArgs = CopyFields.arguments;
	var intCount, intSubCount, objSField, objBField;
	for (intCount = 3; intCount < objArgs.length; intCount++) {
		objSField = objForm[strSrc + objArgs[intCount]];
		objBField = objForm[strDst + objArgs[intCount]];
		if (objSField.type == 'select-one') {
			objBField.selectedIndex = objSField.selectedIndex;
		}
		else if (objSField.type == 'select-multiple') {
			for (intSubCount = 0; intSubCount < objSField.options.length; intSubCount++) {
				objBField.options[intSubCount].selected = objSField.options[intSubCount].selected;
			}
		}
		else if (objSField.type == 'checkbox' || objSField.type == 'radio') {
			if (objSField.length) {
				for (intSubCount = 0; intSubCount < objSField.length; intSubCount++) {
					objBField[intSubCount].checked = objSField[intSubCount].checked;
				}
			}
			else objBField.checked = objSField.checked;
		}
		else {
			if (objSField.length) {
				for (intSubCount = 0; intSubCount < objSField.length; intSubCount++) {
					objBField[intSubCount].value = objSField[intSubCount].value;
				}
			}
			else objBField.value = objSField.value;
		}
	}
}

function HTMLEncode(strInput) {
	var strTemp = strInput
	if (strTemp.length > 0) {
		strTemp = strTemp.replace('&', '&amp;');
		strTemp = strTemp.replace('"', '&quot;');
		strTemp = strTemp.replace('<', '&lt;');
		strTemp = strTemp.replace('>', '&gt;');
	}
	return strTemp
}

function HTMLDecode(strInput) {
	var strTemp = strInput;
	if (strTemp.length > 0) {
		strTemp = strTemp.replace('&quot;', '"');
		strTemp = strTemp.replace('&lt;', '<');
		strTemp = strTemp.replace('&gt;', '>');
		strTemp = strTemp.replace('&amp;', '&');
	}
	return strTemp;
}

function FixNumber(strNumber) {
	var objRX = new RegExp('[^0-9.]') 
    var strTemp = strNumber.replace(objRX, '');
    return strTemp;
}

function QueryString(strKey) {
	var intCount, arrItem;
	var strQuery = window.location.search;
	if (strQuery.substr(0, 1) == '?') strQuery = strQuery.substr(1);
	var arrQuery = strQuery.split('&');
	for (intCount = 0; intCount < arrQuery.length; intCount++) {
		arrItem = arrQuery[intCount].split('=');
		if (arrItem[0] == strKey) {
			return arrItem[1] ? arrItem[1] : '';
			break;
		}
	}
}

function AutoGenerateSEOURL(strForm, strField, strName) {
	var objForm = document.forms[strForm];
	var strTemp = objForm[strName].value;
	//Strip out crazy characters and spaces
	strTemp = strTemp.toLowerCase();
	var objRX = new RegExp('[^a-zA-Z0-9_ ]', 'gim');
	strTemp = strTemp.replace(objRX, '');
	objRX = new RegExp('[ ]', 'gim');
	strTemp = strTemp.replace(objRX, '-');	
	objForm[strField].value = strTemp;
}
function HoverRow(strColour, strItem) {
	strItem.style.backgroundColor = strColour;
}

function HoverCell(strType,strItem,strHover) {
	//OVER
	if (strType == 'over') {
		strItem.parentNode.style.backgroundColor = strHover;
		strItem.parentNode.bgColor = strHover;
	// OUT
	} else if (strType == 'out') {
		var intPRow =  eval(strItem.parentNode.rowIndex) - 1;
		var strTable = strItem.parentNode.parentNode;
		var strColour = '#FFFFFF';
		if (intPRow == 1) {
			strColour = '';
		} else if (strTable.childNodes[intPRow].bgColor != undefined) {
			strColour = strTable.childNodes[intPRow].bgColor;
		}
		
		strItem.parentNode.style.backgroundColor = BGColor(strColour);
		strItem.parentNode.bgColor = BGColor(strColour);
	}
}
function LabelSelect(strForm, strField, intItem) {
	document.forms[strForm][strField][intItem].click();
}

