/**
 * @author		Library Automation Services Team
 * @version		1.1.0
 * @copyright	Sarawak Information Systems Sdn. Bhd.
 *
 * Development Environment			:	TextPad 4.4.2; multiple
 * Name of the Application			:	string.js
 * Overview of Application			:	Contains javascript functions for 'string' operations
 * Creation/Modification History	:
 *		29-Jun-2001		Created
 *		15-Nov-2001		Modified
 *		07-Mar-2003		Modified
 *		21-Mar-2003		Modified. New function. Old function.
 *
 * 
 * Function Declaration:
 *		function isStrLess(obj, intLength)
 *		function isStrMore(obj, intLength)
 *		function isEmpty(obj)
 *		function trimleft(strString)
 *		function trimright(strString)
 *		function trim(strString)
 *		function trimcleft(strString, strChar)
 *		function trimcright(strString, strChar)
 *		function trimc(strString, strChar)
 *		function Replace(obj, strChar1, strChar2)
 *		function formatNumber(num, idx)
 *		function checkStr(obj, num)
 *		function limitMax(obj, num)
 *		function nextElement(obj)
 *		function validEMailFormat(eMailObj)
 *		function chkSpecialChar(objName, intChange)
 *
 */

/**
 * Check if an object value's length is less than the length specified and not 0 length
 */
function isStrLess(obj, intLength)
{	var intValue = parseInt(intLength);
	var strValue = String(obj.value);
	if (isNaN(intValue))
	{	intValue = 1;
	}
	if ((strValue.length < intValue) && (strValue.length != 0))
	{	return true;
	}
	return false;
}

/**
 * Check if an object value's length is more or equal than the length specified
 */
function isStrMore(obj, intLength)
{	var intValue = parseInt(intLength);
	var strValue = String(obj.value);
	if (isNaN(intValue))
	{	intValue = 1;
	}
	if (strValue.length >= intValue)
	{	return true;
	}
	return false;
}

/**
 * Check if an object's value is empty
 */
function isEmpty(obj)
{	if ((obj.value == null) || (obj.value == ""))
	{	return true;
	}
	return false;
}

/**
 * Trim away the first few left space characters
 */
function trimleft(strString)
{	var strValue = String(strString);
	var strResult = String('');
	var bolSpace = true;
	for (var i=0;i<strValue.length;i++)
	{	if (strValue.charAt(i) != ' ')
		{	bolSpace = false;
		}
		if (bolSpace == false)
		{	strResult = strResult + strValue.charAt(i);
		}
	}
	return strResult;
}

/**
 * Trim away the first few right space characters
 */
function trimright(strString)
{	var strValue = String(strString);
	var strResult = String('');
	var bolSpace = true;
	for (var i=(strValue.length-1);i>-1;i--)
	{	if (strValue.charAt(i) != ' ')
		{	bolSpace = false;
		}
		if (bolSpace == false)
		{	strResult = strValue.charAt(i) + strResult;
		}
	}
	return strResult;
}

/**
 * Trim away the first few left and right space characters
 */
function trim(strString)
{	var strValue = String(strString);
	var strResult = String('');
	strResult = trimleft(strValue);
	strResult = trimright(strResult);
	return strResult;
}

/**
 * Trim away the first few left ... characters
 */
function trimcleft(strString, strChar)
{	var strValue = String(strString);
	var strC = String(strChar);
	var strResult = String('');
	var bolSpace = true;
	for (var i=0;i<strValue.length;i++)
	{	if (strValue.charAt(i) != strC.charAt(0))
		{	bolSpace = false;
		}
		if (bolSpace == false)
		{	strResult = strResult + strValue.charAt(i);
		}
	}
	return strResult;
}

/**
 * Trim away the first few right ... characters
 */
function trimcright(strString, strChar)
{	var strValue = String(strString);
	var strC = String(strChar);
	var strResult = String('');
	var bolSpace = true;
	for (var i=(strValue.length-1);i>-1;i--)
	{	if (strValue.charAt(i) != strC.charAt(0))
		{	bolSpace = false;
		}
		if (bolSpace == false)
		{	strResult = strValue.charAt(i) + strResult;
		}
	}
	return strResult;
}

/**
 * Trim away the first few left and right ... characters
 */
function trimc(strString, strChar)
{	var strValue = String(strString);
	var strC = String(strChar);
	var strResult = String('');
	strResult = trimcleft(strValue, strC);
	strResult = trimcright(strResult, strC);
	return strResult;
}

/**
 * Replaces all specified character in the value of an object with another character
 */
function Replace(obj, strChar1, strChar2)
{	var strString = String(obj.value);
	while (strString.indexOf(strChar1) > 0)
	{	strString = strString.replace(strChar1, strChar2);
	}
	return strString;
}

/*
function Replace(str, strChar1, strChar2, pass0here)
{	var strString = String(str);
	while (strString.indexOf(strChar1) > 0)
	{	strString = strString.replace(strChar1, strChar2);
	}
	return strString;
}*/

/**
 * Replaces all specified character in a string with another character
 */
function ReplaceStr(str, strChar1, strChar2)
{	var strString = String(str);
	while (strString.indexOf(strChar1) > 0)
	{	strString = strString.replace(strChar1, strChar2);
	}
	return strString;
}

function sReplace(str, strChar1, strChar2)
{	var strString = String(str);
	while (strString.indexOf(strChar1) > 0)
	{	strString = strString.replace(strChar1, strChar2);
	}
	return strString;
}

/**
 * Format the number into the decimal point that you want
 */
function formatNumber(num, abs, idx) {
var	formatedNumber; var absNum; var numLen; var dotPos; var extractStr; var tempStr = 0;
	if (num.toString().length < 1) {return "";}
	absNum = Math.floor(parseFloat(num));
	numLen = num.toString().length;
	dotPos = num.toString().indexOf('.') + 1;
	if (dotPos > 0) {
		extractStr = num.toString().substring(dotPos, numLen);
		strLen = extractStr.toString().length;
		strIdx = strLen - 1;
		if (strLen > idx) {
			while (strLen > idx) {
				lastStr = extractStr.toString().substring(strIdx--, strLen--);
				extractStr = extractStr.toString().substring(0, strLen);
				if (lastStr > 4) {
					bfrLen = extractStr.toString().length;
					extractStr = parseInt(extractStr) + 1;
					aftLen = extractStr.toString().length;
					if (aftLen > bfrLen) {
						addedLen = aftLen - bfrLen;
						tempStr = parseInt(tempStr) + parseInt(extractStr.toString().substring(0, addedLen));
						extractStr = extractStr.toString().substring(addedLen, ++bfrLen);
					}
				}
			}
		}
		else {
			loop = idx - strLen;
			for (var i=0; i<loop; i++) {
				extractStr = extractStr + '0';
			}
		}
	}
	else {
		extractStr = '0';
		for (var i=1; i<idx; i++) {
			extractStr = extractStr + '0';
		}
	}
	absNum = parseInt(absNum) + parseInt(tempStr);
	if ((parseFloat(num) < 0) && (num.toString().indexOf('.') > 0) && (num.toString().substring(dotPos, numLen) != "")) {
		absNum = parseFloat(absNum) + 1;
		if (parseInt(absNum) >= 0) {
			absNum = '-' + absNum.toString();
		}
	}
	if (abs > absNum.toString().length) {
		loop = abs - absNum.toString().length;
		for (var i=0; i<loop; i++) {
			absNum = '  ' + absNum.toString();
		}
	}
	formatedNumber = absNum + '.' + extractStr;
	return formatedNumber;
}

/* for checking for the Text area to limit the length of string
*/
function checkStr(obj, num) {
	var len = obj.value.length

	if ((len == 1) && (obj.value.substring(0, 1) == " ")) {
		obj.value = ""
		len = 0
	}
	if (len > num) {
		obj.value = f.value.substring(0, num)
	}
}

/* for limiting the maximum number of characters accepted into a variable. Normally used for textarea
*/
function limitMax(obj, num)
{	if (obj.value.length >= num)
	{ obj.value=obj.value.substr(0, num);
	  nextElement(obj);
	}
}

/* for passing the focus to the next element
*/
function nextElement(obj)
{	f = obj.form;
	num = f.elements.length;
	nextnum = 0;
	for (i=0;i<num;i++)
	{	if (f.elements[i].name==obj.name)
		{	nextnum=i+1;
			if (nextnum>=num)
			{	obj.blur();
				return;
			}
			if (f.elements[nextnum].type!="hidden")
			{	i = num;
			}
			else
			{	found=false;
				for (t=nextnum;t<num;t++)
				{	if (f.elements[t].type!="hidden")
					{	nextnum=t;
						found=true;
						t=num;
					}
				}
				if (found==false)
				{ for (c=0;c<nextnum;c++)
					{	if (f.elements[c].type!="hidden")
						{	nextnum=c;
							found=true;
							c=num;
						}
					}
				}
			}
		}
	}
	f.elements[nextnum].focus();
}

/* Validate e-mail address entered by the user
*/
function validEMailFormat(eMailObj) {
var intCount = 0;
var intInnerCount = 0;
var arrTemp = new Array(" ", "'", "\"", "#", "%", "&", ";", "?", ",");
var strMsg = "";
 for (intCount = 0; intCount < arrTemp.length; intCount++) {
  if (eMailObj.value.indexOf(arrTemp[intCount]) >= 0) {
   for (intInnerCount = 0; intInnerCount < arrTemp.length; intInnerCount++) {
    strMsg = strMsg + " " + arrTemp[intInnerCount];
   }
   alert("Invalid E-Mail Format !\nThank You");
   eMailObj.focus();
   return false;
  }
 }
 //if ((eMailObj.value.indexOf('@') < 1) || (eMailObj.value.indexOf('.') < 2) || eMailObj.value.indexOf('.') > (eMailObj.value.length-3)) {
if ((eMailObj.value.indexOf('@') < 1) || eMailObj.value.indexOf('.') > (eMailObj.value.length-3)) {

  alert("Invalid E-Mail Format !\nThank You");
  eMailObj.focus();
  return false;
 }
 /*if ((eMailObj.value.indexOf('.') - eMailObj.value.indexOf('@')) < 1 ) {
  alert("Invalid E-Mail Format !\nThank You");
  eMailObj.focus();
  return false;
 }*/
 return true;
}

/* check whether the string or form object contains special character. 1:obj; 2:value
*/
function chkSpecialChar(objName, intChange) {
var strObj = "";
var intCount = 0;
var intInnerCount = 0;
var arrTemp = new Array(" ", "'", "\"", "#", "%", "&", ";", "?", ",");
var strMsg = "";
 if (intChange == 1) {strObj = objName.value;} 
 else {strObj = objName;}
 for (intCount = 0; intCount < arrTemp.length; intCount++) {
  if (strObj.indexOf(arrTemp[intCount]) >= 0) {
   for (intInnerCount = 0; intInnerCount < arrTemp.length; intInnerCount++) {
    strMsg = strMsg + " " + arrTemp[intInnerCount];
   }
   return false;
  }
 }
 return true;
}