// SaibMD - General Purpose Modules JavaScript file
// Copyright (c) The Saudi Investment Bank 2005
// -----------------------------------------------------------
// The version below must be updated on every change
var SaibMDVersion = "SaibMD.0003 12Jan05 General Purpose";				// Version of this JS file
SaibVCStore(SaibMDVersion);						// Store it
// -----------------------------------------------------------
// Modification Log
// 07Jan05 MPC First version produced
// 12Jan05 MPC Added "value of" function
// 23Jan05 MPC Added manipulators
// -----------------------------------------------------------

function SaibMDPadZero(Dat, Sze)					// Zero Pad to Size
{
	var WKSTR = Dat+"=";						// Stringize
	var j = WKSTR.length;
	i = Sze - (j-1);
	while (i>0) { WKSTR = "0"+WKSTR; i--; }
	WKSTR = WKSTR.substring(0,Sze);
	return WKSTR;
}

function SaibMDTrim(Istr)						// TRIM a string
{
	var Ostr = Istr;
	var Iprv = 32;							// Trick for previous byte
	var Icur = 31;	
	var Iuse = true;
	var Isze = Istr.length
	var Ichr = "";
	var j = 0;

	var Isze = Istr.length
	var k = Isze - 1;
	if (Isze < 1) return Ostr;

	while (k >= 1)							// Remove all trailing SPACE
	{	if (Istr.charCodeAt(k) == 32) { Isze--; k--; }
		else break;
	}

	Ostr = "";							// Null output
	for (j==0; j<Isze; j++)
	{
		Ichr = Istr.charAt(j);					// Char from Input
		Icur = Ichr.charCodeAt(0);
		if (Icur == 9) { Ichr = " "; Icur = 32; }		// Replace TAB by SPACE				
		Iuse = true;
		if (Icur == 32 && Iprv == 32) Iuse = false;		// Don't use embedded SPACES
//		if (Icur == 32 && j == k) Iuse = false;			// Drop last byte if SPACE
		if (Iuse == true) { Ostr = Ostr + Ichr; Iprv = Icur; }  // Use the byte
	}
	return Ostr;
}

function SaibMDValueOf(Istr)						// Returns first found numeric value
{
	var	Ostr = "";
	var	i = Istr.length;				
	if (i < 1) return Ostr;						// No data

	var	j = 0;
	var	HadDig = false;
	var	HadDec = false;

	for (j==0; j<i; j++)
	{	
		var Ch = Istr.charAt(j);

		if (HadDig == false)
		{   
			if (Ch >= "0" && Ch <= "9") { HadDig = true; Ostr = Ostr+Ch; }
		}
		else
		{ 	if ((Ch >= "0" && Ch <= "9") || (Ch == "." && HadDec == false))
			{	Ostr = Ostr+Ch; if (Ch == ".") HadDec = true; }
			else break;
		}
	}
	return Ostr;
}


function SaibMDOnBlurTrim(TagObject)					// Final Trimming
{
	TagObject.value = SaibMDTrim(TagObject.value);
}

function SaibMDOnBlurValueOf(TagObject)					// Extract Value
{
	TagObject.value = SaibMDValueOf(TagObject.value);
}

