function OptionSelectedValue(aoSelect){
	return aoSelect.options[aoSelect.options.selectedIndex].value;
}

function Replace(asString, asSearch, asReplace){
	ysTemp = asString.split(asSearch);
	return ysTemp.join(asReplace);
}

function jsLeft(asString, aiLength){
	var iStrLen = asString.length;
	return asString.substring(0, aiLength);
}
function jsRight(asString, aiLength){
	var iStrLen = asString.length;
	return asString.substring(asString.length - aiLength, asString.length);
}

function jsDateAdd(asInterval, aiNumber, adtDate){
	var dtOldDate = new Date(adtDate);
	var iOldVarDate = dtOldDate.valueOf();
	var iNewVarDate = iOldVarDate;
	var iAddNum = 0;
	var iSecUnit = 1000;
	var iMinUnit = iSecUnit * 60;
	var iHourUnit = iMinUnit * 60;
	var iDayUnit = iHourUnit * 24;
	var iWeekUnit = iDayUnit * 7;
	
	switch (asInterval){
		case "s" : 
			iAddNum = aiNumber * iSecUnit;
			iNewVarDate += iAddNum;
			break;
		case "n" : 
			iAddNum = aiNumber * iMinUnit;
			iNewVarDate += iAddNum;
			break;
		case "h" : 
			iAddNum = aiNumber * iHourUnit;
			iNewVarDate += iAddNum;
			break;
		case "d" : 
			iAddNum = aiNumber * iDayUnit;
			iNewVarDate += iAddNum;
			break;
		case "w" : 
			iAddNum = aiNumber * iWeekUnit;
			iNewVarDate += iAddNum;
			break;
		case "m":
			iNewVarDate =  jsDateAddMonth(aiNumber, adtDate);
			break;
		case "y":
			iNewVarDate =  jsDateAddMonth(aiNumber * 12, adtDate);
			break;
	}
	var dtReturnDate = new Date(iNewVarDate);
//	alert(iAddNum+"\n"+dtOldDate + "\n" +dtReturnDate);
	return dtReturnDate;
}

function jsDateAddMonth(aiNumber, adtDate){
	var dtOldDate = new Date(adtDate);
	var iSec = dtOldDate.getSeconds();
	var iMin = dtOldDate.getMinutes();
	var iHour = dtOldDate.getHours();
	var iDay = dtOldDate.getDate();
	var iMonth = dtOldDate.getMonth();
	var iYear = dtOldDate.getYear();
	var iYearChange = 0;

	iMonth += aiNumber;

	iYearChange = Math.ceil(iMonth / 12);
	iYear += iYearChange;
	iMonth -= iYearChange * 12;

	var dtReturnDate = new Date(iYear, iMonth, iDay, iHour, iMin, iSec);
	return dtReturnDate.valueOf();
}

function jsFormatDate(aoDate, asStyle){
	var dtDate = new Date(aoDate);
	
	var sFormatDate = jsRight('0000'+dtDate.getFullYear(), 4) + '/' + jsRight('00'+(dtDate.getMonth()+1), 2) + '/' + jsRight('00'+dtDate.getDate(), 2);
	return sFormatDate;

}

function FormatNumber (asNum, aiDecPlace) {
	var f = CDbl(asNum);
	if (f == NaN) {
		return NaN;
	}
	var d = Math.pow(10, aiDecPlace);
	f *= d;
	f = Math.round(f) / d;
	s = f.toString();
	dp = s.indexOf(".");
	if (dp == -1) {
		dp = s.length;
	}
	intPart = s.substr(0, dp);
	decPart = s.substr(dp+1, s.length) + RepeatString("0", aiDecPlace);
	decPart = decPart.substr(0, aiDecPlace);
	return AddComma(intPart, 3) + "." + decPart;
}
function AddComma(asString, aiPartLength){
	var ysTemp = String2Array(asString, aiPartLength);
	return ysTemp.join(",");
}

function String2Array(asString, aiPartLength){
	var iStrLen = asString.length;
	var ysArray = new Array();
	var sTemp = asString;
	var i = 0;
	var j = 0;
	
	do {
		var start = asString.length-aiPartLength;
		if (start < 0) {
			start = 0;
		}
		sTemp = asString.substr(start, asString.length);
		if (sTemp == ""){
			break;
		}
		ysArray[i] = sTemp;
		j += aiPartLength;
		asString = asString.substr(0, asString.length-aiPartLength);
		i++;
	} while (j <= iStrLen);
	ysArray.reverse();
	return ysArray;
}

function RepeatString(asString, iNoOfTime){
	var s = "";
	for (i = 0; i<iNoOfTime; i++){
		s += asString;
	}
	return s;
}
function CDbl(asNum){
	return parseFloat(asNum);
}

function PreviewHTML(oText) {
	var s = oText.value;
	win = window.open(", ", 'Preview', 'toolbar = no, status = no');
	win.document.write("" + s + "");
	win.document.close();
	win.window.focus();
}

function textCounter(field, countfield, maxlimit) {
	if (field.value.length > maxlimit) // if too long...trim it!
	field.value = field.value.substring(0, maxlimit);
	// otherwise, update 'characters left' counter
	else 
	countfield.value = maxlimit - field.value.length;
}

function IsValidEmail(asTempString)
{
   var atCount = 0;
   var periodCount = 0;
   var strLen = asTempString.length;
   var i;
   var temp;
   var validchar= /^\w|[@.-]$/; //valid char = a-z, A-Z, @ , . , _ , -

   if (asTempString == '')
     return false;
     
   for (i = 0; i < strLen; i++)
      {
      temp = asTempString.substring(i, i+1);
	  if (temp == '@') 
         atCount++;
      if (temp == '.') 
         periodCount++;
	  if (!validchar.test(temp)){
//		alert(temp)
		return false;
		}
	  }
   if ((atCount == 1) && (periodCount > 0))
      return true;
   else
      return false;

}

function ChangeQty(aoQty, aiQtyChange, aiMin_Max){
	var iProdQty = parseInt(aoQty.value);
	iProdQty += aiQtyChange;
	if (aiQtyChange > 0) {
		if (iProdQty > aiMin_Max) {
			iProdQty = aiMin_Max;
		}
	} else {
		if (iProdQty < aiMin_Max) {
			iProdQty = aiMin_Max;
		}
	}
	aoQty.value = iProdQty;
}

function SetSelectedIndex(aoSelect, asFindValue){
	for (i=0; i < aoSelect.options.length; i++) {
		if (asFindValue == aoSelect.options[i].value) {
			aoSelect.options.selectedIndex = i;
			return;
		}
	}
}

function SetChecked(aoSelect, aoCheck, aoInput, asFindValue){
	if (aoSelect.options[aoSelect.options.selectedIndex].value == asFindValue){
		aoCheck.checked = true;
		aoInput.disabled = false;
	} else {
		aoCheck.checked = false;
		aoInput.value = '';
		aoInput.disabled = true;
	}
}