function trim(value)
{
	var tmp = value.replace(/^(\s)+/, '');
	return tmp.replace(/(\s)+$/, '');
}

function isNumeric(value)
{
	regExp = /^(\s)*([-+])?(\d)+(\.(\d)*)?(\s)*$/;
	return regExp.test(value);
}

function isEmpty(value)
{
	return ((value == null) || (trim(value) == ''));
}

function isEMail(value)
{
	regExp = /^[a-z0-9_][\w\.\~\-]*@[\w\.\-]+\.[a-z]{2,4}$/i;
	return regExp.test(value);
}

function isPublicID(value)
{
	regExp = /^[0-9]{16}$/;
	return regExp.test(value)
}

function isElementExists(form, name)
{
	for (var i = 0; i < form.elements.length; i++) {
		if (form.elements[i].name == name) {
			return true;
		}
	}
	return false;
}

function isSelectElement(form, name)
{
	return ((form.elements[name].type == 'select-one') || (form.elements[name].type == 'select-multiple'));
}

function isCheckBoxElement(form, name)
{
	return (form.elements[name].type == 'checkbox');
}

function isTextElement(form, name)
{
	return ((form.elements[name].type == 'text') || (form.elements[name].type == 'textarea') || (form.elements[name].type == 'password'));
}

function setElementValue(form, name, value)
{
	if (!isElementExists(form, name)) {
		return;
	}
	if (isSelectElement(form, name)) {
		setSelectElementValue(form, name, value);
	} else {
		form.elements[name].value = value;
	}
}

function getElementValue(form, name)
{
	if (!isElementExists(form, name)) {
		return null;
	}
	if (isSelectElement(form, name)) {
		return getSelectElementValue(form, name);
	} else if (isCheckBoxElement(form, name)) {
		return form.elements[name].checked;
	} else {
		return form.elements[name].value;
	}
}

function setSelectElementValue(form, name, value)
{
	if (!isElementExists(form, name)) {
		return;
	}
	for (i = 0; i < form.elements[name].options.length; i++) {
		if (form.elements[name].options[i].value == value) {
			form.elements[name].selectedIndex = i;
		}
	}
}

function getSelectElementValue(form, name)
{
	if (!isElementExists(form, name)) {
		return null;
	}
	return form.elements[name].options[form.elements[name].selectedIndex].value;
}

function getSelectElementText(form, name)
{
	if (!isElementExists(form, name)) {
		return null;
	}
	return form.elements[name].options[form.elements[name].selectedIndex].text;
}

function getRadioElementValue(form, name)
{
	var radioGroup = form.elements[name];
	for (var i = 0; i < radioGroup.length; i++) {
		if (radioGroup[i].checked) {
			return radioGroup[i].value;
		}
	}
	return null;
}

function enableFormElements(form)
{
	for (i = 0; i < form.elements.length; i++) {
		form.elements[i].disabled = false;
	}
}

function isInArray(arr, value)
{
	for (i = 0; i < arr.length; i++) {
		if (arr[i] == value) {
			return true;
		}
	}
	return false;
}

function openPrintWin(url)
{
	window.open(url, 'winPrint', 'toolbar=no,menubar=no,scrollbars=yes,resizable=yes,directories=no,status=yes,location=no,width=750,height=550');
}

function openHelp(url)
{
	window.open(url, 'help', 'toolbar=no,menubar=no,scrollbars=yes,resizable=yes,directories=no,status=yes,location=no,width=600,height=400');
}

function getVolumeWeight(deliveryTypeID, weight, width, height, length)
{
	if ((weight <= 0.0) || (width <= 0.0) || (height <= 0.0) || (length <= 0.0)) {
		return 0.0;
	}
	switch (parseInt(deliveryTypeID)) {
	case 1:
		return (weight > (width * height * length * 0.000167)) ? weight : (width * height * length * 0.000167);
		break;
	case 3:
		return (weight > (width * height * length * 0.000280)) ? weight : (width * height * length * 0.000280);
		break;
	default:
		return 0.0;
	}
}

function generateSessionID()
{
	var RANDOMS_COUNT = 5;
	var MAX_RANDOM = 1000000000;
	var randoms = new Array(RANDOMS_COUNT);
	for (var i = 0; i < RANDOMS_COUNT; i++) {
		randoms[i] = Math.floor(Math.random() * MAX_RANDOM)
	}
	return randoms.join('-');
}

function getCookieVal(offset)
{
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1) {
		endstr = document.cookie.length;
	}
	return unescape(document.cookie.substring(offset, endstr));
}

function fixCookieDate(date)
{
	var base = new Date(0);
	var skew = base.getTime();		// dawn of (Unix) time - should be 0
	if (skew > 0) {					// Except on the Mac - ahead of its time
		date.setTime(date.getTime() - skew);
	}
}

function getCookie(name)
{
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen) {
		var j = i + alen;
		if (document.cookie.substring(i, j) == arg) {
			return getCookieVal (j);
		}
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) {
			break;
		}
	}
	return null;
}

function setCookie(name, value, expires, path, domain, secure)
{
	document.cookie =
		name + "=" + escape (value) +
		((expires) ? "; expires=" + expires.toGMTString() : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");
}

function deleteCookie(name, path, domain)
{
	if (getCookie(name)) {
		document.cookie =
			name + "=" +
			((path) ? "; path=" + path : "") +
			((domain) ? "; domain=" + domain : "") +
			"; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
}

// Cookie names
var FIRST_HTTP_REFERER_COOKIE_NAME = 'FirstHTTPReferer';
var HTTP_REFERER_COOKIE_NAME = 'HTTPReferer';
var SESSION_ID_COOKIE_NAME = 'SessionID';
// Setting referer
var HTTPReferer = (document.referrer) ? document.referrer : 'n/a';
if (getCookie(HTTP_REFERER_COOKIE_NAME) == null) {
	setCookie(HTTP_REFERER_COOKIE_NAME, HTTPReferer, null, '/', '', null);
}
// Setting first referer
if (getCookie(FIRST_HTTP_REFERER_COOKIE_NAME) == null) {
	var now = new Date();
	var yearAhead = new Date(now.getYear() + 1, now.getMonth(), now.getDate(), now.getHours(), now.getMinutes(), now.getSeconds());
	setCookie(FIRST_HTTP_REFERER_COOKIE_NAME, HTTPReferer, yearAhead, '/', '', null);
}
// Setting session ID
if (getCookie(SESSION_ID_COOKIE_NAME) == null) {
/*	now = new Date();
	var monthAhead = new Date((now.getMonth() == 11) ? now.getYear() + 1 : now.getYear(), (now.getMonth() == 11) ? 0 : now.getMonth() + 1, now.getDate(), now.getHours(), now.getMinutes(), now.getSeconds());
	setCookie(SESSION_ID_COOKIE_NAME, generateSessionID(), monthAhead, "/", "", null);*/
	setCookie(SESSION_ID_COOKIE_NAME, generateSessionID(), null, "/", "", null);
}

