﻿// 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 SetSelectedValueCombo(objCombo, sSelectedValue)
{
	for (var n = 0; n < objCombo.length; n++) {
		if (objCombo.options[n].value == sSelectedValue) 
		{
			objCombo.options[n].selected = true;
			return;
		}
	}	
	objCombo.selectedIndex = 0;
}

function SetFilteredCombo(objCombo1, objCombo2, objComboFiltered)
{
	var li;
	var nStartIndex = 0;
	var nFilteredSelectedValue = "";
	var sFirstItemAdd = "";
//	if (objComboFiltered.attributes["FirstItemAdd"] != null)
//	{
//		if ((objComboFiltered.attributes["FirstItemAdd"].value == "true") || (objComboFiltered.attributes["FirstItemAdd"].value == "True")) sFirstItemAdd = "True";
//	}
//	if (sFirstItemAdd == "True") nStartIndex = 1;
	if (objComboFiltered.selectedIndex > nStartIndex - 1) nFilteredSelectedValue = objComboFiltered.value;
	if ((nFilteredSelectedValue == "" || nFilteredSelectedValue == "0") && (objCombo2.value != "")) nFilteredSelectedValue = Mid(objCombo2.value, InStr(objCombo2.value, ".") + 1);
	
    ClearCombo(objComboFiltered, nStartIndex);
//    if ((sFirstItemAdd == "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)
			}
		}
//	}
	if (nFilteredSelectedValue != "")
		SetSelectedValueCombo(objComboFiltered, nFilteredSelectedValue);
	else
		objComboFiltered.selectedIndex = 0;
}

function ProDoubleCombo_onpropertychange()
{
	if (event != null) 
	{
		var obj = event.srcElement;
		var propName = event.propertyName;
		if (propName == 'selectedIndex')
		{
			eval(obj.getAttribute("onchange"));
		}
	}
}

function ProDoubleCombo_onreadystatechange(obj)
{
	window.setTimeout(obj.getAttribute("onchange"), 0);
}