﻿// JScript File
function Len(str)
/***
        IN: str - the string whose length we are interested in

        RETVAL: The number of characters in the string
***/
{  return String(str).length;  }

function Left(str, n)
/***
        IN: str - the string we are LEFTing
            n - the number of characters we want to return

        RETVAL: n characters from the left side of the string
***/
{
        if (n <= 0)     // Invalid bound, return blank string
                return "";
        else if (n > String(str).length)   // Invalid bound, return
                return str;                // entire string
        else // Valid bound, return appropriate substring
                return String(str).substring(0,n);
}

function Right(str, n)
/***
        IN: str - the string we are RIGHTing
            n - the number of characters we want to return

        RETVAL: n characters from the right side of the string
***/
{
        if (n <= 0)     // Invalid bound, return blank string
           return "";
        else if (n > String(str).length)   // Invalid bound, return
           return str;                     // entire string
        else { // Valid bound, return appropriate substring
           var iLen = String(str).length;
           return String(str).substring(iLen, iLen - n);
        }
}

function Mid(str, start, len)
/***
        IN: str - the string we are LEFTing
            start - our string's starting position (1 based!!)
            len - how many characters from start we want to get

        RETVAL: The substring from start to start+len
***/
{
        // Make sure start and len are within proper bounds
        if (start <= 0) start = 1;
        
        if (len == null) 
        {
			len = String(str).length - start + 1;
		}
		if (len <= 0) len = 1;

        var iEnd, iLen = String(str).length;
        if (start + len > iLen)
                iEnd = iLen;
        else
                iEnd = (start - 1) + len;

        return String(str).substring(start-1,iEnd);
}

function InStr(strSearch, charSearchFor)
/*
InStr(strSearch, charSearchFor) : Returns the first location a substring (SearchForStr)
                           was found in the string str.  (If the character is not
                           found, -1 is returned.)
                           
Requires use of:
	Mid function
	Len function
*/
{
	for (i=0; i < Len(strSearch); i++)
	{
	    if (charSearchFor == Mid(strSearch, i, 1))
	    {
			return i;
	    }
	}
	return -1;
}

function ClearCombo(objCombo, nStartIndex)
{
	if (nStartIndex == null) nStartIndex = 0;
	var n = objCombo.length;
	for (var i = nStartIndex; i <= n; i++) {
		objCombo.remove(nStartIndex);
	}
}

function GetSelectedValueCombo(objCombo)
{
	for (var n = 0; n < objCombo.length; n++) {
		if (objCombo.options[n].selected == true) return objCombo.options[n].value;
	}	
}

function SetFilteredCombo(objCombo1, objCombo2, objComboFiltered)
{
	var li;
	var nStartIndex = 0;
	if (objComboFiltered.FirstItemAdd == "True") nStartIndex = 1;
    ClearCombo(objComboFiltered, nStartIndex);
    if (objComboFiltered.FirstItemAdd == "True" && objCombo1.selectedIndex == 0)
    {
    }
    else
    {
		for (var i = 0; i < objCombo2.length; i++) {
			if (GetSelectedValueCombo(objCombo1) == Left(objCombo2.options[i].value, InStr(objCombo2.options[i].value, ".") - 1)) 
			{
				li = document.createElement("option");
				li.text = objCombo2.options[i].text;
				li.value = Mid(objCombo2.options[i].value, InStr(objCombo2.options[i].value, ".") + 1);				
				objComboFiltered.options.add(li)
			}
		}
	}
    objComboFiltered.selectedIndex = 0;
}
