
function mmInitialize(parent, make, model, make_caption, model_caption, bnew)
    {
    var rgMake;
    
    clearList(parent.mmMakes);
    addElement(parent.mmMakes, make_caption, 0);
    
    if (bnew == 'true')
        {
        for (var i = 0; i < mmMkN.length; i++)
            {
            if (mmMkN[i])
                {
                rgMake = mmMkN[i].split('#');
                addElement(parent.mmMakes, rgMake[0], rgMake[1]);
                }
            }
        }
    else
        {
        for (var i = 0; i < mmMkU.length; i++)
            if (mmMkU[i])
                {
                rgMake = mmMkU[i].split('#');
                addElement(parent.mmMakes, rgMake[0], rgMake[1]);
                }
        }

    if (make)
        {
        setDefaultByText(parent.mmMakes, make);
        mmChangeMake(parent, bnew, model_caption);
        if (model)
            setDefaultByText(parent.mmModels, model);
        }
    else
        {
        parent.mmMakes.selectedIndex = 0;
        mmChangeMake(parent, bnew, model_caption);
        }
    }


function mmChangeMake(parent, bnew, model_caption)
    {
    if (bnew == 'true')
        var ModelList = mmMdN[parent.mmMakes.options[parent.mmMakes.selectedIndex].value];
    else
        var ModelList = mmMdU[parent.mmMakes.options[parent.mmMakes.selectedIndex].value];

    clearList(parent.mmModels);
    addElement(parent.mmModels, model_caption, 0);
    if(ModelList)
        {
        var rgModels = ModelList.split('^');
        for (var i = 0; i < rgModels.length; i++)
            {
            if (rgModels[i])
                {
                var rgModel = rgModels[i].split('#');
                addElement(parent.mmModels, rgModel[0], rgModel[1]);
                }
            }
        parent.mmModels.disabled = false;
        }
    else
        {
        parent.mmModels.disabled = true;
        }

    parent.mmModels.selectedIndex = 0;
    } 

function clearList(list) 
    {
    var i = 0;
    var o = list.options;

    for (i = o.length; i >= 0; --i)
		o[i] = null;
    list.disabled = true;
    }


function addElement(list, text_in, value_in)
    {
    var o = list.options;
    var nIdx;
	if (o.length < 0) //IE for Mac 4.5 sets length to -1 if list is empty
		nIdx = 0;
	else
		nIdx = o.length;
		
	o[nIdx] = new Option(text_in, value_in);
	list.disabled = false;
    }


function setDefaultByText(list, text_in)
    {
    with (list)
        {
        for (var i = 0; i < (options.length); i++)
             {
             if (options[i].text == text_in)
                 {
                 selectedIndex = i;
                 return;
                 }
             }
        }
    }


function setDefaultByValue(list, value_in)
    {
    with (list)
        {
        for (var i = 0; i < (options.length); i++)
             {
             if (options[i].value == value_in)
                 {
                 selectedIndex = i;
                 return;
                 }
             }
        }
    }



      function PostalCodeGotFocus(objPostalCode)
        {
        if (objPostalCode.value == 'ZIP Code')
          objPostalCode.select();
        }

      function ProcessKey(nForm)
        {
        var nKeyCode = window.event.keyCode;

        if((nKeyCode == 13) || (nKeyCode == 32))
          {
          if (nForm == 1) GotoVIP(document.Form1);          
          if (nForm == 2) GotoNCBS(document.Form2);
          return false;
          }
        else
          return true;
        }

      function GotoVIP(oForm)
        {
        var strPage = '';
        var strAsciiMake = oForm.mmMakes.options[oForm.mmMakes.selectedIndex].value;
        var strAsciiModel = oForm.mmModels.options[oForm.mmModels.selectedIndex].value;
        var strNew = oForm.mmType.options[oForm.mmType.selectedIndex].value;

        if (!CheckNames(oForm, strAsciiMake, strAsciiModel)) return;
        if (strNew == 'true') strPage = 'new.asp';
        if (strNew == 'false') strPage = 'used.asp';

        window.location.href='http://carpoint.msn.com/vip/overview/' + MakeSafeName(strAsciiMake) + '/' + MakeSafeName(strAsciiModel) + '/' + strPage + '?src=Home&pos=Find';
        }

      function GotoNCBS(oForm)
        {
        var strAsciiMake = oForm.mmMakes.options[oForm.mmMakes.selectedIndex].value;
        var strAsciiModel = oForm.mmModels.options[oForm.mmModels.selectedIndex].value;

        if (!CheckNames(oForm, strAsciiMake, strAsciiModel)) return;
        if (!ValidatePostalCode(oForm.PostalCode)) return;
        window.location.href='http://carpoint.msn.com/newcar/ncbs1.asp?Make=' + MakeSafeName(strAsciiMake) + '&Model=' + MakeSafeName(strAsciiModel) + '&Zip=' + oForm.PostalCode.value + '&src=Home&pos=Quote';
        }

      function MakeSafeName(strName)
        {
        return(MyReplace(MyReplace(MyReplace(strName, ' ', '%20'), '/', '-'), '&', '%26'));
        }

      
      function MyReplace(szStringToSearch, szLookFor, szReplaceWith)
        {
        var szResultString = '';
        for(iPos = 0; iPos < szStringToSearch.length; iPos++)
          {
          if(szStringToSearch.substring(iPos, iPos + szLookFor.length) == szLookFor)
            {
            szResultString = szResultString + szReplaceWith;
            iPos = iPos + szLookFor.length - 1;
            }
          else
            szResultString = szResultString + szStringToSearch.substring(iPos, iPos + 1);
          }
        return(szResultString);
        }

      function CheckNames(oForm, strAsciiMake, strAsciiModel)
        {
        if(strAsciiMake == '0')
          {
          alert('Please select a Make to continue.');
          oForm.mmMakes.focus();
          return false;
          }
        if(strAsciiModel == '0')
          {
          alert('Please select a Model to continue.');
          oForm.mmModels.focus();
          return false;
          }
        return true;
        }

      function ValidatePostalCode(oPostalCode)
        {
        if (!isValidPostal(oPostalCode))
          {	
          alert('Invalid ZIP Code (5 digits required).');
          oPostalCode.focus(); 
          oPostalCode.select(); 
          return false;	
          }
        return true;
        }

    
//United States Zip Code
function isValidPostal(oCode)
{
	//declarations
    oCode.value = LRTrim(oCode.value);
    var strCode = oCode.value;

	var str0to9 = "0123456789"; //valid numbers
	var cTemp; //holding var for current character being tested, needed for NS bug
	//var cDash = "-"; //dash character for longer Zip code

	if (strCode.length != 5) return false; // && strCode.length != 10 removed because we're not checking for zip extension
	for (i = 0; i < 5; i++)
	{
		cTemp = strCode.charAt(i); //get the current character being tested
		if (str0to9.indexOf(cTemp) == -1) return false; //hey, it isn't a valid character
	}
	/* not using longer zip code, uncomment if used in future
	if (strCode.length == 10) //test if it's longer format zip code
	{
		cTemp = strCode.charAt(5); //get character where dash is supposed to be
		if (cDash.indexOf(cTemp) == -1) return false;
		for (i = 6; i < 10; i++) //test for last four digits
		{
			cTemp = strCode.charAt(i); //get the current character being tested
			if (str0to9.indexOf(cTemp) == -1) return false; //hey, it isn't a valid character
		}
	} */
	return true; //if we made it this far, it must be valid!
}


function LRTrim(str)
{
	var strTrim = "";
	len = str.length;

	// Find non white space at start
	for (i=0; i < len; i++)
	{
		strChar = str.charAt(i);
		if (strChar != " " && strChar != "\t")
			break;
	}
			
	//Find non white space at end
	for (j=(len - 1); j > i; j--)
	{
		strChar = str.charAt(j);
		if (strChar != " " && strChar != "\t")
			break;
	}

	// Loop through and copy the remaining data
	for (k=i; k <= j; k++)
		strTrim += str.charAt(k);

	return strTrim;
}

