
//**************************************************************************
//		Copyright  Sybase, Inc. 1998-2004
//						 All Rights reserved.
//
//	Sybase, Inc. ("Sybase") claims copyright in this
//	program and documentation as an unpublished work, versions of
//	which were first licensed on the date indicated in the foregoing
//	notice.  Claim of copyright does not imply waiver of Sybase's
//	other rights.
//
//	 This code is generated by the PowerBuilder HTML DataWindow generator.
//	 It is provided subject to the terms of the Sybase License Agreement
//	 for use as is, without alteration or modification.  
//	 Sybase shall have no obligation to provide support or error correction 
//	 services with respect to any altered or modified versions of this code.  
//
//       ***********************************************************
//       **     DO NOT MODIFY OR ALTER THIS CODE IN ANY WAY       **
//       ***********************************************************
//
//       ***************************************************************
//       ** IMPLEMENTATION DETAILS SUBJECT TO CHANGE WITHOUT NOTICE.  **
//       **            DO NOT RELY ON IMPLEMENTATION!!!!		      **
//       ***************************************************************
//
// Use the public interface only.
//**************************************************************************


function DW_StringParse(inString)
{
    var result = new DW_StringClass();
    
    if (DW_parseStringAgainstMask(inString, result))
    {
        return result.str;
    }
    else
        return null;
}

function DW_IsString(inString)
{
    if (inString == "")
        return true;
	return DW_parseStringAgainstMask(inString, null);
}

function DW_parseStringAgainstMask(inString, outStr)
{
	var Mask = gMask;

	if (Mask == "") 
	{
		if(outStr != null)
			outStr.str = inString;
		return true;
	}

    // Get encoded format against mask
	var format = new DW_StringEncodingClass(Mask);

    // if invald mask, return false
	if (!format.bValid) return false;

	// Create a new number class
	var s = new DW_StringClass();

	var currChar;
	var charIndex = 0;
	
    var index = 0;
    var encodedFormat = format.encodedFormat;
    var action;
    
	// Create a new number class
	var s = new DW_StringClass();

	while (charIndex < inString.length && index < encodedFormat.length)
	{
		// Now extract one token from encode string
		action = 0;

		if( index < encodedFormat.length)
		{
            action = encodedFormat[index];
			index++;
		}
		
		if (typeof action == "string")
		{
			currChar = inString.substring(charIndex, charIndex+action.length); 
			charIndex = charIndex + action.length

			if (action != currChar)
				return false;
			else
				continue;
		}
		else
			currChar = inString.charAt(charIndex++);

		if(action == DWFMT_allChars)
		{
			s.str = inString;
			break;
		}
		else if(action == DWFMT_allChar)
		{
			s.str += currChar;
		}
		else if(action == DWFMT_stringChar)
		{
			if (DW_parseIsAlpha(currChar) || DW_parseIsDigit(currChar) || currChar==" ") 
				s.str += currChar;
			else
				return false;
		}
		else if(action == DWFMT_upperCaseChar)
		{
			if (DW_parseIsAlpha(currChar) || DW_parseIsDigit(currChar) || currChar==" " || currChar==DW_decimalChar) 
				s.str += currChar.toUpperCase();
			else
				return false;
		}
		else if(action == DWFMT_lowerCaseChar || currChar==" ")
		{
			if (DW_parseIsAlpha(currChar) || DW_parseIsDigit(currChar) || currChar==" " || currChar==DW_decimalChar) 
				s.str += currChar.toLowerCase();
			else
				return false;
		}
		else if(action == DWFMT_numberChar)
		{
			if (DW_parseIsDigit(currChar)) 
				s.str += currChar;
			else
				return false;
		}
	}

	if(outStr != null)
		outStr.str = s.str;

	return true;
}


//
// String formatting code
//
var DWFMT_allChars = 0;
var DWFMT_allChar = 1;
var DWFMT_stringChar = 2;
var DWFMT_upperCaseChar = 3;
var DWFMT_lowerCaseChar = 4;
var DWFMT_numberChar = 5;

function DW_StringEncodingClass(inString)
{
    var index;
    var currChar;
    var encodedFormat = new Array();
    var accum = "";
    var numInSection;
    var offset = 0;
    var bValid = true;
    
    this.encodedFormat = encodedFormat;
	this.color = "";

    var strLen = inString.length;
    for (index=0; index < strLen && bValid; )
        {
        currChar = inString.charAt(index);
        // handle keywords
        if (currChar == "[")
            {
            if (accum != "")
                encodedFormat[offset++] = accum;
            accum = "";
            index++;
            for (; inString.charAt(index) != "]"; index++)
                accum += inString.charAt(index);
            index++; // skip ]
            if (accum.toUpperCase() == "GENERAL")
                encodedFormat[offset++] = DWFMT_allChars;
            else
                {
				if (!parseInt(accum)) 
					this.color = accum.toLowerCase();
				else
					this.color = eval(accum);
                this.keyword = accum;
                }
            accum = "";
            }
		else if (currChar == "X" || currChar == "x" || currChar == "@")
            {
            if (accum != "")
                encodedFormat[offset++] = accum;
            accum = "";
            index++;
            encodedFormat[offset++] = DWFMT_allChar;
            }
        else if (currChar == "A" || currChar == "a")
            {
            if (accum != "")
                encodedFormat[offset++] = accum;
            accum = "";
            index++;
            encodedFormat[offset++] = DWFMT_stringChar;
            }
        else if (currChar == "!")
            {
            if (accum != "")
                encodedFormat[offset++] = accum;
            accum = "";
            index++;
            encodedFormat[offset++] = DWFMT_upperCaseChar;
            }
        else if (currChar == "^")
            {
            if (accum != "")
                encodedFormat[offset++] = accum;
            accum = "";
            index++;
            encodedFormat[offset++] = DWFMT_lowerCaseChar;
            }
        else if (currChar == "#" || currChar == "0")
            {
            if (accum != "")
                encodedFormat[offset++] = accum;
            accum = "";
            index++;
            encodedFormat[offset++] = DWFMT_numberChar;
            }
        else if (currChar == "\\")
            {
            index++;
            accum += inString.charAt(index++);
            }
        else if (currChar == "'")
            {
            index++;
            while (index < strLen)
                {
                currChar = inString.charAt(index);
                if (currChar == "'")
                    break;
                accum += currChar;
                index++;
                }
            // check if we fell off end before finding closing quotes
            if (index == strLen)
                bValid = false;

            index++; // skip trailing '
            }
        else
            {
            accum += currChar;
            index++;
            }
        }

    if (accum != "")
        encodedFormat[offset++] = accum;

	if (encodedFormat.length == 0 ) 
		bValid = false;

    this.bValid = bValid;
}

function DW_StringFormatClass(formatString)
{
    var semiOffset = formatString.indexOf(";");
    
    if (semiOffset != -1)
        {
        this.mainFormat = new DW_StringEncodingClass(formatString.substring(0, semiOffset));
        this.nullFormat = new DW_StringEncodingClass(formatString.substring(semiOffset+1, formatString.length));

        this.bValid = this.mainFormat.bValid && this.nullFormat.bValid;
        }
    else
        {
        this.mainFormat = new DW_StringEncodingClass(formatString);
        this.nullFormat = null;
        this.bValid = this.mainFormat.bValid;
        }

}

function DW_FormatString(formatString, value, control)
{
    var stringFormat = new DW_StringFormatClass(formatString);
    var result = "";
    var format;

    if (stringFormat.bValid)
        {
        if (value == null && stringFormat.nullFormat != null)
            format = stringFormat.nullFormat;
        else
            format = stringFormat.mainFormat;
            
        var index;
        var encodedFormat = format.encodedFormat;
        var action;
        var strIndex = 0;
        var strLen;

        // a length of -1 means that we will always put in " " chars
        if (value != null)
            strLen = value.length;
        else
            strLen = -1;
            
        for (index=0; index < encodedFormat.length ; index++)
            {
            action = encodedFormat[index];
            if (typeof action == "string")
                result += action;
            else if (action == DWFMT_allChars)
                {
                // get the rest
                if (strIndex < strLen)
                    {
                    result += value.substring(strIndex, strLen);
                    strIndex = strLen;
                    }
                }
            else if (action == DWFMT_allChar)
                {
                if (strIndex < strLen)
                    result += value.charAt(strIndex);
                else
                    result += " ";
				strIndex++;
                }
            else if (action == DWFMT_stringChar)
                {
                if (strIndex < strLen && (DW_parseIsAlpha(value.charAt(strIndex)) || DW_parseIsDigit(value.charAt(strIndex))))
                    result += value.charAt(strIndex);
                else
                    result += " ";
				strIndex++;
                }
            else if (action == DWFMT_upperCaseChar)
                {
                if (strIndex < strLen && (DW_parseIsAlpha(value.charAt(strIndex)) || DW_parseIsDigit(value.charAt(strIndex)) || value.charAt(strIndex)==DW_decimalChar))
                    result += value.charAt(strIndex).toUpperCase();
                else
                    result += " ";
				strIndex++;
				}
            else if (action == DWFMT_lowerCaseChar)
                {
                if (strIndex < strLen && (DW_parseIsAlpha(value.charAt(strIndex)) || DW_parseIsDigit(value.charAt(strIndex)) || value.charAt(strIndex)==DW_decimalChar))
                    result += value.charAt(strIndex).toLowerCase();
                else
                    result += " ";
				strIndex++;
				}
            else if (action == DWFMT_numberChar)
                {
                if (strIndex < strLen && DW_parseIsDigit(value.charAt(strIndex)))
                    result += value.charAt(strIndex);
                else
                    result += " ";
				strIndex++;
                }
            }
        }
    else if ( value != null )
		// Simulating a [general] format.
        result = value;
	else
		result = "";

	if (this.bStylePositioning && format && format.bValid)  
        if ( format.color == "" || typeof format.color == "string" )
            control.style.color = format.color;
        else
            control.style.color = convertToRGB( format.color );

    return result;
}

function DW_StringClass(str) 
{
    if (arguments.length == 0)
        str = "";
        
    this.str = str;
}


function DW_LeftTrim(inString)
{
    if (inString == null)

        return inString;
        
    var index, tempChar, outString = "";
    var strLength = inString.length;
    // skip leading blanks
    for (index=0; index < strLength; index++)
        {
        tempChar= inString.charAt (index);
        if (tempChar != " ")
            break;
        }
    if (index < strLength)
        outString = inString.substring(index, strLength);

    return outString;
}

function DW_RightTrim(inString)
{
    if (inString == null)

        return inString;
        
    var index, tempChar, outString = "";
    // skip trailing blanks
    for (index=inString.length-1; index >= 0; index--)
        {
        tempChar= inString.charAt (index);
        if (tempChar != " ")
            break;
        }
    if (index >= 0)    
        outString = inString.substring(0, index+1);

    return outString;
}

function DW_ConvertLike(inString, escapeChar)
{
    var index;
    var outString = "";
    var tempChar;
    var strLength = inString.length;

    if (arguments.length < 2)
        escapeChar = "";
        
    // force to string type or charAt will fail!
	inString = inString + "";
    for ( index=0; index < strLength; index++ )
        {
        tempChar = inString.charAt( index );
        if (tempChar == escapeChar) 
            {
            index++;
            outString += inString.charAt( index );
            }
        else if (tempChar == "%")
            outString += ".*";
        else if (tempChar == "_")
            outString += ".";
        else
            outString += tempChar;
        }
    return new RegExp(outString);
}

function DW_Fill(inString, length)
{
    var outIndex, inIndex;
    var outString = "";
    var strLength = inString.length;

    // Fill("*--", 4) = "*--*"
	inString = inString + "";
    for ( outIndex=0, inIndex=0; outIndex < length; outIndex++, inIndex++ )
        {
        // restart input string if necessary
        if (inIndex >= strLength)
            inIndex = 0;
        outString += inString.charAt( inIndex );
        }
    return outString;
}

function DW_Mid(inString, start, length)
{
    var end
    
    if (arguments.length < 3)
        end = inString.length;
    else
        end = start + length;
        
    return inString.substring(start-1,end)
}

function DW_Replace(inString, start, length, replString)
{
    var sResult = inString.substring(0, start-1);
    sResult += replString;
    sResult += inString.substring(start + length -1, inString.length);

    return sResult;
}

function DW_Right(inString, length)
{
    var strLen = inString.length
    return inString.substring(strLen - length, strLen)
}

function DW_Space(n)
{
    var sResult = "";
    for (var i=0; i < n;  i++)
        sResult += " ";

    return sResult;
}

function DW_WordCap(inString)
{
    var lowerCaseString = inString.toLowerCase();
    var outString = "";
    var index;
    var tempChar;
    var bCap = true;
    var strLength = lowerCaseString.length;
    
    for(index=0; index < strLength; index++)
        {
        tempChar = lowerCaseString.charAt( index );
        if (bCap && tempChar != " ")
            {
            outString += tempChar.toUpperCase();
            bCap = false;
            }
        else if (tempChar == " ")
            {
            bCap = true;
            outString += tempChar;
            }
        else
            outString += tempChar;
        }

    return outString;
}
