var imageArray = new Array();

var GlobalUSStates = [{name:"Alaska",code:"AK"},{name:"Alabama",code:"AL"},{name:"Arkansas",code:"AR"},{name:"American Samoa",code:"AS"},{name:"Arizona",code:"AZ"},{name:"California",code:"CA"},{name:"Colorado",code:"CO"},{name:"Connecticut",code:"CT"},{name:"District of Columbia",code:"DC"},{name:"Delaware",code:"DE"},{name:"Florida",code:"FL"},{name:"Federated States of Micronesia",code:"FM"},{name:"Georgia",code:"GA"},{name:"Guam",code:"GU"},{name:"Hawaii",code:"HI"},{name:"Iowa",code:"IA"},{name:"Idaho",code:"ID"},{name:"Illinois",code:"IL"},{name:"Indiana",code:"IN"},{name:"Kansas",code:"KS"},{name:"Kentucky",code:"KY"},{name:"Louisiana",code:"LA"},{name:"Massachusetts",code:"MA"},{name:"Maryland",code:"MD"},{name:"Maine",code:"ME"},{name:"Marshall Islands",code:"MH"},{name:"Michigan",code:"MI"},{name:"Minnesota",code:"MN"},{name:"Missouri",code:"MO"},{name:"Northern Mariana Islands",code:"MP"},{name:"Mississippi",code:"MS"},{name:"Montana",code:"MT"},{name:"North Carolina",code:"NC"},{name:"North Dakota",code:"ND"},{name:"Nebraska",code:"NE"},{name:"New Hampshire",code:"NH"},{name:"New Jersey",code:"NJ"},{name:"New Mexico",code:"NM"},{name:"Nevada",code:"NV"},{name:"New York",code:"NY"},{name:"Ohio",code:"OH"},{name:"Oklahoma",code:"OK"},{name:"Oregon",code:"OR"},{name:"Pennsylvania",code:"PA"},{name:"Puerto Rico",code:"PR"},{name:"Palau",code:"PW"},{name:"Rhode Island",code:"RI"},{name:"South Carolina",code:"SC"},{name:"South Dakota",code:"SD"},{name:"Tennessee",code:"TN"},{name:"Texas",code:"TX"},{name:"Utah",code:"UT"},{name:"Virginia",code:"VA"},{name:"Virgin Islands",code:"VI"},{name:"Vermont",code:"VT"},{name:"Washington",code:"WA"},{name:"Wisconsin",code:"WI"},{name:"West Virginia",code:"WV"},{name:"Wyoming",code:"WY"}];

var GlobalCAProvinces = [{name:"Alberta",code:"AB"},{name:"British Columbia",code:"BC"},{name:"Manitoba",code:"MB"},{name:"New Brunswick",code:"NB"},{name:"Newfoundland and Labrador",code:"NL"},{name:"Nova Scotia",code:"NS"},{name:"Northwest Territories",code:"NT"},{name:"Nunavut",code:"NU"},{name:"Ontario",code:"ON"},{name:"Prince Edward Island",code:"PE"},{name:"Quebec",code:"QC"},{name:"Saskatchewan",code:"SK"},{name:"Yukon",code:"YT"}];

function selectPrimaryNav(nav)
    {
        var selectedNavNumber;
        var navElement;
    
        if(typeof nav == "string")
        {
            navElement = $(nav)
        }
        else
        {
            navElement = nav;
        }
        
        var theLinks = $('primaryNav').getElementsByTagName("A");
        for (var i=0; i<theLinks.length; i++)
        {
            if(theLinks[i] == navElement)
            {
                selectedNavNumber = i;
                theLinks[i].className="current"
            }
            else
            {
                theLinks[i].className=""
            }
        }
        
        
        var subNav = $('secondaryNav').getElementsByTagName("DIV")
        for (var i=0; i<subNav.length; i++)
        {
            subNav[i].style.display="none";
        }
        subNav[selectedNavNumber].style.display="block";
    
        return false;
    }

/*  
    // 
    // Usage:
    // 1. Include prototype.js. this is used all of the place.
    // 2. The primary navigation <A href>s should be inside of an element with an id of "primaryNav".
    // 3. The secondary navigation <DIV>s should be inside an element with an id of "secondaryNav">.
    // 4. The Links for the primary nav need to have this: onClick="selectPrimaryNav(this); return false;"
    // 5. The ID of the default needs to be sent as a parameter inside of the RegisterNavigation function below.
    // 
*/

////////////////////////////
//AJAX multi tier selects//
//////////////////////////
    function getCustomizationByName(customizationName)
    {
        return $('customization_'+customizationName);
    }   
        
    function getCustomizationTierByTierIndex(customizationName, index)
    {
        return $('customization_'+customizationName+'_tier_'+ (index));
    }
    
    function getCustomizationTierLoadImage(customizationName, index)
    {
        return $('customization_'+customizationName+'_tier_'+ (index) + '_load');
    }

    function getCustomizationTiers(customizationName)
    {
        var i = 0;
        var moreTiers = true;
        var tierArray = new Array();

            // Build the array of tiers for this customization
        while(moreTiers)
        {
            var tier = getCustomizationTierByTierIndex(customizationName, i+1);
            if(typeof tier != "undefined")
            {
                tierArray[i] = tier;
            }
            else
            {
                moreTiers = false;
            }   
            i++;
        }
        return tierArray;
    }
    
    
    function attachTierToFormField(field, customizationID, customizationName, tierIndex)
    {
        var theURL = TIER_JSON_ACTION_URL;
    
        var tierArray;      

        tierArray = getCustomizationTiers(customizationName);
        // empty all tiers below ours (watch for off by one error)
        for(var n=tierIndex; n < tierArray.length; n++)
        {
            tierArray[n].options.length = 0;
        }
        
        // show the loading image
        Element.show(getCustomizationTierLoadImage(customizationName, tierIndex));
        
        // Load the values using ajax for the next tier or the 0 tier if this is the last one
        var tierToRequest;
        if(tierArray.length == tierIndex)
        {
            tierToRequest = 0;
        }
        else
        {
            tierToRequest = (tierIndex+1);
        }
            
        var pars = 'customizationDescriptionID='+customizationID+'&tierIndex='+tierToRequest;
        for(var n = 0; n < tierIndex; n++)
        {
            pars += '&selectTier_'+(n+1)+'='+tierArray[n].value+'&';
        }
        //alert(theURL+" "+pars);
        var myAjax = new Ajax.Request( theURL, {method: 'get', parameters: pars, onComplete: processIncomingTier, onFailure: function(r){alert("err: "+r);} });
    }
    
    function processIncomingTier(originalRequest)
    {
        //alert(originalRequest.responseText);
        var tierInfo = eval("("+originalRequest.responseText+")");
        //describeObj(tierInfo);
        
        // fill the tier with the target amount
        var tier;
        if(tierInfo.tierIndex > 0)
        {
            tier = getCustomizationTierByTierIndex(tierInfo.customizationDescriptionID, tierInfo.tierIndex);
            //describeObj(tier);
        }
        else
        {
            // tier zero means that the actual form should be filled
            // MFC: We will also need to check to see if tier zero is a two-part form with <- -> buttons
            
            if(getCustomizationByName(tierInfo.customizationDescriptionID+'_dual'))
            {
                // this means that we are using a dual selector (e.g. InfoUSA City)
                tier = getCustomizationByName(tierInfo.customizationDescriptionID+'_dual');
            }
            else
            {
                tier = getCustomizationByName(tierInfo.customizationDescriptionID);
            }
        }
        
        

        tier.options.length = null;
        for(var i = 0; i < tierInfo.list.length; i++)
        {
            tier.options[i] = new Option(tierInfo.list[i].tierDisplay, tierInfo.list[i].tierValue);
        }
        
        var tmpTier;
        if( tierInfo.tierIndex == 0)
        {           
            var tierArray = getCustomizationTiers(tierInfo.customizationDescriptionID);
            tmpTier = tierArray.length;
        }
        else
        {
            tmpTier = tierInfo.tierIndex - 1;
        }
        
        // hide the loading image
        Element.hide(getCustomizationTierLoadImage(tierInfo.customizationDescriptionID, tmpTier));
    }
    
/////////////////////////////////
///END AJAX multi tier selects//
///////////////////////////////

/////////////////////////////////
///Display Type Scripts/////////
///////////////////////////////
    var FIELDS = new Array();


    function MoveOption(objSourceElement, objTargetElement)
    {

        var sourceIsTextEdit = false;
        var targetIsTextEdit = false;

        if(objSourceElement.type == "text"){sourceIsTextEdit = true;}
        if(objTargetElement.type == "text"){targetIsTextEdit = true;}

        var arySelectedObjectValue = GenerateSelectedValueArray(sourceIsTextEdit, objSourceElement);


        for (var n = 0; n < arySelectedObjectValue.length; n++)
        {
            var aryTempSourceOptions = new Array();
            var x = 0;


            if(sourceIsTextEdit)
            {
                var intTargetLen = objTargetElement.length++;
                objTargetElement.options[intTargetLen].text = arySelectedObjectValue[n];
                objTargetElement.options[intTargetLen].value = arySelectedObjectValue[n];
                objSourceElement.value = "";
            }
            else
            {
                //looping through source element to find selected options
                for (var i = 0; i < objSourceElement.length; i++) {

                    if (objSourceElement.options[i].value == arySelectedObjectValue[n])
                    {
                        if(!targetIsTextEdit)
                        {
//                              alert( objSourceElement.options[i].value);
                            //need to move this option to target element
                            var intTargetLen = objTargetElement.length++;
                            objTargetElement.options[intTargetLen].text = objSourceElement.options[i].text;
                            objTargetElement.options[intTargetLen].value = objSourceElement.options[i].value;
                            objTargetElement.options[intTargetLen].selected = true;
                        }
                    }
                    else
                    {
                        //storing options that stay to recreate select element
                        var objTempValues = new Object();

                        objTempValues.text = objSourceElement.options[i].text;
                        objTempValues.value = objSourceElement.options[i].value;
                        aryTempSourceOptions[x] = objTempValues;
                        x++;
                    }
                }


                //resetting length of source
                objSourceElement.length = 0;
                objSourceElement.length = aryTempSourceOptions.length;
                //looping through temp array to recreate source select element
                for (var i = 0; i < aryTempSourceOptions.length; i++)
                {
                    objSourceElement.options[i].text = aryTempSourceOptions[i].text;
                    objSourceElement.options[i].value = aryTempSourceOptions[i].value;
                    objSourceElement.options[i].selected = false;
                }
            }

            // Sort the arrays
            manualSort(objTargetElement.options);
            manualSort(objSourceElement.options);
        }
    }

    function GenerateSelectedValueArray(inputIsTextEdit, inputElement)
    {
        var tmpArrayValue = 0;
        var arySelectedObjectValue = new Array();

        if(inputIsTextEdit)
        {
            if(inputElement.value != "")
            {
                // Since it's a text value we can fake it.
                arySelectedObjectValue[0] = inputElement.value;
            }
        }
        else
        {
            for (var i = 0; i < inputElement.length; i++)
            {
                if (inputElement.options[i].selected)
                {
                    arySelectedObjectValue[tmpArrayValue++] = inputElement.options[i].value;
                }
            }
        }
        return arySelectedObjectValue;
    }

    function describeObj( obj )
    {
        var result = "Components:";
        for (var i in obj){
          result += "\nField " + i + " has type " + typeof obj[i] + " = (" + obj[i] +")<br>";
        }


        writePopUp("<title>describe</title>", result);
        //alert(result);
    }

    function writePopUp(head, body)
    {
        var generator=window.open('','name','height=400,width=500,scrollbars=yes');

        generator.document.write("<html><head>" + head + "</head>");
        generator.document.write("<body>" + body + "<p><a href=\"javascript:self.close()\">Close</a> the popup.</p></body></html>");
        generator.document.close();
    }


    function manualSort(aryIn)
    {

        if(aryIn != null)
        {
            for(var i = aryIn.length-1; i > 0; i--)
            {
                for(var n = 0; n < i; n++)
                {
                    if(aryIn[n].value < aryIn[n+1].value)
                    {
                        // Swap the values!!
                        var targetSlotTmp = Object();
                        targetSlotTmp.text = aryIn[n].text;
                        targetSlotTmp.value = aryIn[n].value;
                        targetSlotTmp.selected = aryIn[n].selected;

                        aryIn[n].text = aryIn[n+1].text;
                        aryIn[n].value = aryIn[n+1].value;
                        aryIn[n].selected = aryIn[n+1].selected;

                        aryIn[n+1].text = targetSlotTmp.text;
                        aryIn[n+1].value = targetSlotTmp.value;
                        aryIn[n+1].selected = targetSlotTmp.selected;
                        
                    }
                }
            }
        }
    }

    function registerField(name)
    {
        FIELDS[FIELDS.length] = name;
    }

    function selectAllMultipleSelectItems( obj )
    {
        for (var i = 0; i < obj.length; i++)
        {
            obj.options[i].selected = "true";
        }
    }

    function selectAllInForm(inForm)
    {
    
        for (var i = 0; i < inForm.length; i++)
        {
            var name = inForm.elements[i].name;


            for (var n = 0; n < FIELDS.length; n++)
            {
                if(name == FIELDS[n])
                {
              
                    selectAllMultipleSelectItems(inForm.elements[i]);
                }
            }

        }
    }

    //
    // The following code is responsible for making the group checkbox/radiobutton be
    // selected automatically when a customization in the group is clicked.
    // Call it in the following way.  For each customization form element add:
    //    onClick="selectCustomizationWithinGroup('GROUP_NAME', 'CUSTOMIZATION_NAME');"
    //

    function findFormElementsByName(formElementName)
    {
        // This function works with a string or a regular expression
        regEx = null;
        if(formElementName instanceof RegExp)
        {
            regEx = formElementName;
        }
        else
        {
            regEx = new RegExp("^" + formElementName + "$");
        }

        var elements = new Array();
        for(var i = 0; i < document.forms.length; i++)
        {
            for(var n = 0; n < document.forms[i].elements.length; n++)
            {
                if(document.forms[i].elements[n] != null && document.forms[i].elements[n].name.match(regEx))
                {
                    elements[elements.length] = document.forms[i].elements[n];
                }
            }

        }

        return elements;
    }


    function selectCustomizationWithinGroup(groupName, custName)
    {
    //alert("groupName, custName" + groupName+ ", " + custName);
        var elements = findFormElementsByName("group_selected_" + groupName);
        if(elements != null)
        {
            for(i = 0; i < elements.length; i++)
            {
                //alert(elements[i].value +" == "+ custName);
                if(elements[i].value == custName)
                {
                    elements[i].click();
                    elements[i].checked = true;
                }
            }
        }
    }
    
    // the following functions were copied from the old funcs.js library.
    
        function setFocus( fieldToFocus )
        {
            //alert("setting focus to " + fieldToFocus);
            document.getElementById(fieldToFocus).focus();
        }
        
        function setChecked( fieldToCheck )
        {
            document.getElementById(fieldToCheck).checked = true;
        }
        
        function UpdateSortOrder( fieldToSort, orderBy, sortOrder )
        {
            // orderBy is the velocity hidden field storing the field in which to sort by
            // fieldToSort is newly clicked field header to replace the orderBy field.
            // sortOrder is either 'ascending' or 'descending', it is also a velocity hidden field
            
            // this method also clears out all of the checked members to ensure that they don't get submitted when the user is only changing the sort.
            
            var memberObjectIDs = findFormElementsByName( "memberObjectIDs" );
            
            for(i = 0; i < memberObjectIDs.length; i++)
            {
                memberObjectIDs[i].checked = false;
            }
            
            if( orderBy.value == fieldToSort )
            {       
                if( sortOrder.value == "ascending" )
                {
                    sortOrder.value = "descending";    
                }
                else
                {
                    sortOrder.value = "ascending";  // could have been null above so this is default                
                }
            }        
            else // the field to sort by has changed.
            {   
                orderBy.value = fieldToSort;            
                sortOrder.value = "ascending";            
            }
        }
            
        function UnlockPassword( source, control, hiddenControl )
        {
            if( source.disabled == true )
            {
                source.disabled = false;
                control.disabled = false;
                hiddenControl.value = "true";
            }
            else
            {
                source.disabled = true;
                control.disabled = true;
                hiddenControl.value = "false";
            }
        }
        
        function CopyField( source, target )
        {
            var sourceField = document.getElementById(source);
            var targetField = document.getElementById(target);
            targetField.value = sourceField.value;
        }
        
        function SendToURL( url ){
            window.location = url;
        }
        
        function RedirectURL( url )
        {
            alert( "url is: " + url );
            window.location = url;
        }
        
        function EnsureSelection( objSource, selectType, type )
        {   
            if( objSource.options[0].selected )
            {   
                alert( "Please select a " + selectType + "  before creating a new " + type + "!");
                return false;
            }        
            return true;
        }
        
        function EnsureSelection2( objSource, msg )
        {   
            if( objSource.options[0].selected )
            {   
                alert( msg );
                return false;
            }        
            return true;
        }
        
        function URLConfirm(msg, redirectURL)
        {
            var ret = false;
            ret = confirm(msg);
    
            if(ret)
            {
                window.location = redirectURL;
            }
        }
        
        function areYouSurePassForm(msg, submittedForm)
        {
            var ret = false;
            ret = confirm(msg);
    
            if(ret)
            {
                submittedForm.submit();
            }
        }
        
        function areYouSure(msg)
        {
            return confirm(msg);
        }
        
        function modifyListStart( listStartIndex )
        {   
            document.getElementById( "listStartIndex" ).value=listStartIndex;            
            document.getElementById( "proccess" ).value="true";
            document.forms["pagination"].submit();
        }
        
        function modifyPageNavigation( advance )
        {
            if( advance == "true" )
            {
                //alert("advancing");
                document.getElementById( "proccess" ).value="true";
                document.getElementById( "advance" ).value="true";
                document.getElementById( "reverse" ).value="false";
            }
            else
            {
                //alert("reversing");
                document.getElementById( "proccess" ).value="true";
                document.getElementById( "advance" ).value="false";
                document.getElementById( "reverse" ).value="true";
            }
        }
    
        function updatePageAmount( pageAmount )
        {
            document.getElementById( "changePageAmount" ).value=pageAmount;
        }
        
        function URLforward(redirectURL)
        {
            window.location = redirectURL;
        }
    
        function UnSelect( objSourceElement )
        {
            for (var i = 0; i < objSourceElement.length; i++)
            {
                objSourceElement.options[i].selected = false;
            }
        }
    
        function SimpleAdd( objSourceElement, objTargetElement )
        {
            // Get an array of the values currently in the objTargetElement:
            var existingSelectedValues = new Array();
    
            for (var i = 0; i < objTargetElement.length; i++)
            {
                existingSelectedValues[i] = objTargetElement.options[i].value;
            }
    
            // Now loop through each selected option in the
            // objSourceElement, and add it to objTargetElement
            // if it's not already in there (if it's not already
            // in the existingSelectedValues array):
    
            for (var i = 0; i < objSourceElement.length; i++)
            {
    
                if (objSourceElement.options[i].selected)
                {                
                    if( !arrayContains(existingSelectedValues, objSourceElement.options[i].value) )
                    {
                        var intTargetLen = objTargetElement.length++;
                        objTargetElement.options[intTargetLen].text = objSourceElement.options[i].text;   // .text
    
                        objTargetElement.options[intTargetLen].value = objSourceElement.options[i].value;
    
                        // Add it to the existingSelectedValues so that we don't add it again:
                        existingSelectedValues[ existingSelectedValues.length ] = objSourceElement.options[i].value;
                    }
                }
            }
        }
    
        function SimpleRemove( selectList )
        {
            var unselectedValues = new Array();
            var idx = 0;
            for (var i = 0; i < selectList.length; i++)
            {
                if( !selectList.options[i].selected )
                {
                    var objTempValues = new Object();
                    objTempValues.text = selectList.options[i].text;
                    objTempValues.value = selectList.options[i].value;
                    unselectedValues[idx++] = objTempValues;
                }
            }
    
            // Ssetting length of source to the length of the array:
            selectList.length = unselectedValues.length;
            //looping through temp array to recreate source select element
            for (var i = 0; i < unselectedValues.length; i++)
            {
                selectList.options[i].text = unselectedValues[i].text;
                selectList.options[i].value = unselectedValues[i].value;
                selectList.options[i].selected = false;
            }
        }
    
        function ModifyPageAmount( targetSelectList, controlSelectList )
        {        
            var targetValue;
            for (var i = 0; i < controlSelectList.length; i++)
            {
                if( controlSelectList.options[i].selected )
                {
                    targetValue = controlSelectList.options[i].value;
                }
            }
            
            for (var n = 0; n < targetSelectList.length; n++)
            {
                if( targetSelectList.options[n].value == targetValue )
                {
                    targetSelectList.options[n].selected = true;
                }            
            }
        }
        
        function arrayContains( array, value )
        {
            for (var i = 0; i < array.length; i++)
            {
                if( array[i] == value )
                    return true;
            }
            return false;
        }
    
        function SelectAll( objSourceElement )
        {
            for (var i = 0; i < objSourceElement.length; i++)
            {
                objSourceElement.options[i].selected = true;
            }
        }
        
        function top(obj) 
        { 
            obj = (typeof obj == "string") ? document.getElementById(obj) : obj;
            if (obj.tagName.toLowerCase() != "select" && obj.length < 2)
                return false;
            var elements = new Array();
            for (var i=0; i<obj.length; i++) {
                if (obj[i].selected) {
                    elements[elements.length] = new Array((document.body.innerHTML ? obj[i].innerHTML : obj[i].text), obj[i].value, obj[i].style.color, obj[i].style.backgroundColor, obj[i].className, obj[i].id, obj[i].selected);
                }
            }
            for (i=0; i<obj.length; i++) {
                if (!obj[i].selected) {
                    elements[elements.length] = new Array((document.body.innerHTML ? obj[i].innerHTML : obj[i].text), obj[i].value, obj[i].style.color, obj[i].style.backgroundColor, obj[i].className, obj[i].id, obj[i].selected);
                }
            }
            for (i=0; i<obj.length; i++) {
                if (document.body.innerHTML) obj[i].innerHTML = elements[i][0];
                else obj[i].text = elements[i][0];
                obj[i].value = elements[i][1];
                obj[i].style.color = elements[i][2];
                obj[i].style.backgroundColor = elements[i][3];
                obj[i].className = elements[i][4];
                obj[i].id = elements[i][5];
                obj[i].selected = elements[i][6];
            }
        }
        
        function bottom(obj)
        { 
            obj = (typeof obj == "string") ? document.getElementById(obj) : obj;
            if (obj.tagName.toLowerCase() != "select" && obj.length < 2)
                return false;
            var elements = new Array();
            for (var i=0; i<obj.length; i++) {
                if (!obj[i].selected) {
                    elements[elements.length] = new Array((document.body.innerHTML ? obj[i].innerHTML : obj[i].text), obj[i].value, obj[i].style.color, obj[i].style.backgroundColor, obj[i].className, obj[i].id, obj[i].selected);
                }
            }
            for (i=0; i<obj.length; i++) {
                if (obj[i].selected) {
                    elements[elements.length] = new Array((document.body.innerHTML ? obj[i].innerHTML : obj[i].text), obj[i].value, obj[i].style.color, obj[i].style.backgroundColor, obj[i].className, obj[i].id, obj[i].selected);
                }
            }
            for (i=obj.length-1; i>-1; i--) {
                if (document.body.innerHTML) obj[i].innerHTML = elements[i][0];
                else obj[i].text = elements[i][0];
                obj[i].value = elements[i][1];
                obj[i].style.color = elements[i][2];
                obj[i].style.backgroundColor = elements[i][3];
                obj[i].className = elements[i][4];
                obj[i].id = elements[i][5];
                obj[i].selected = elements[i][6];
            }
        }
        
        function up(obj)
        { 
            obj = (typeof obj == "string") ? document.getElementById(obj) : obj;
            if (obj.tagName.toLowerCase() != "select" && obj.length < 2)
                return false;
            var sel = new Array();
            for (var i=0; i<obj.length; i++) {
                if (obj[i].selected == true) {
                    sel[sel.length] = i;
                }
            }
            
            for (i in sel) {
                if (sel[i] != 0 && ( obj[sel[i]-1] && !obj[sel[i]-1].selected ) ) {
                    var tmp = new Array((document.body.innerHTML ? obj[sel[i]-1].innerHTML : obj[sel[i]-1].text), obj[sel[i]-1].value, obj[sel[i]-1].style.color, obj[sel[i]-1].style.backgroundColor, obj[sel[i]-1].className, obj[sel[i]-1].id);
                    if (document.body.innerHTML) obj[sel[i]-1].innerHTML = obj[sel[i]].innerHTML;
                    else obj[sel[i]-1].text = obj[sel[i]].text;
                    obj[sel[i]-1].value = obj[sel[i]].value;
                    obj[sel[i]-1].style.color = obj[sel[i]].style.color;
                    obj[sel[i]-1].style.backgroundColor = obj[sel[i]].style.backgroundColor;
                    obj[sel[i]-1].className = obj[sel[i]].className;
                    obj[sel[i]-1].id = obj[sel[i]].id;
                    if (document.body.innerHTML) obj[sel[i]].innerHTML = tmp[0];
                    else obj[sel[i]].text = tmp[0];
                    obj[sel[i]].value = tmp[1];
                    obj[sel[i]].style.color = tmp[2];
                    obj[sel[i]].style.backgroundColor = tmp[3];
                    obj[sel[i]].className = tmp[4];
                    obj[sel[i]].id = tmp[5];
                    obj[sel[i]-1].selected = true;
                    obj[sel[i]].selected = false;
                }
            }
        }
        
        function down(obj)
        {
            obj = (typeof obj == "string") ? document.getElementById(obj) : obj;
            if (obj.tagName.toLowerCase() != "select" && obj.length < 2)
                return false;        
            var sel = new Array();
            for (var i=obj.length-1; i>-1; i--) {
                if (obj[i].selected == true) {
                    sel[sel.length] = i;
                }
            }  
            
            for (i in sel) {
               
                if (sel[i] != obj.length-1 && (  obj[sel[i]] && !obj[sel[i]+1].selected ) ) {
                
                    var tmp = new Array((document.body.innerHTML ? obj[sel[i]+1].innerHTML : obj[sel[i]+1].text), obj[sel[i]+1].value, obj[sel[i]+1].style.color, obj[sel[i]+1].style.backgroundColor, obj[sel[i]+1].className, obj[sel[i]+1].id);
                    
                    if (document.body.innerHTML) obj[sel[i]+1].innerHTML = obj[sel[i]].innerHTML;
                    else obj[sel[i]+1].text = obj[sel[i]].text;
                    obj[sel[i]+1].value = obj[sel[i]].value;
                    obj[sel[i]+1].style.color = obj[sel[i]].style.color;
                    obj[sel[i]+1].style.backgroundColor = obj[sel[i]].style.backgroundColor;
                    obj[sel[i]+1].className = obj[sel[i]].className;
                    obj[sel[i]+1].id = obj[sel[i]].id;
                    if (document.body.innerHTML) obj[sel[i]].innerHTML = tmp[0];
                    else obj[sel[i]].text = tmp[0];
                    obj[sel[i]].value = tmp[1];
                    obj[sel[i]].style.color = tmp[2];
                    obj[sel[i]].style.backgroundColor = tmp[3];
                    obj[sel[i]].className = tmp[4];
                    obj[sel[i]].id = tmp[5];
                    obj[sel[i]+1].selected = true;
                    obj[sel[i]].selected = false;
                }
            }
        }
        
        function modifyHiddenMembers( obj )
        {
            if( obj.checked == true )
            {
                modifyRemoveObjectsHiddenMembers( obj );
            }
            else
            {            
                modifyAddObjectsHiddenMembers( obj );
            }
        }
        
        function modifyRemoveObjectsHiddenMembers( obj )
        {        
            var removeObjects = document.getElementsByName("toRemoveIDs");
            
            var sel = new Array();
            for( var i=removeObjects.length-1; i>-1; i--)
            {            
                if(removeObjects[i].value == obj.value)
                {
                    removeObjects[i].value = null;
                }
            }
            
        }
        
        function modifyAddObjectsHiddenMembers( obj )
        { 
            var addObjects = document.getElementsByName("toAddIDs");
            
            var sel = new Array();
            for( var i=addObjects.length-1; i>-1; i--)
            {
                if(addObjects[i].value == obj.value)
                {                
                    addObjects[i].value = null;
                }
            }
        }
        
        function SelectOptionFamily( objSelect )
            {   
                
                var page = 'page';
                var group = 'group';
                var description = 'description';
                        
                var selected = objSelect.options[objSelect.selectedIndex].id;       
                
                var target;
                var control = selected;
                
                if( selected == page )
                {
                    target = group;
                }
                else if( selected == group )
                {
                    target = description;
                }
                
                if( objSelect.selectedIndex + 1 <= objSelect.length )
                {
                    for( var i=objSelect.selectedIndex+1; i<objSelect.length && objSelect.options[i].id != selected; i++ )
                    {   
                        if(objSelect.options[i].id == target)
                        {
                            objSelect.options[i].selected = true;
                        }
                    }
                }
                
                if( objSelect.selectedIndex + 1 <= objSelect.length )
                {
                    if( target == group )
                    {
                        target = description;
                        for( var i=objSelect.selectedIndex+1; i<objSelect.length && objSelect.options[i].id != selected; i++ )
                        {            
                            if(objSelect.options[i].id == target)
                            {
                                objSelect.options[i].selected = true;
                            }
                        }
                    }
                }
        }
        
        function PopulateStateProvinceDropDown( dropDownID, countryCode, optionSelectText )    
        {
            var dropDown = $(dropDownID);  
            
            var otherInput = $('otherCode');
            
            var codeSelected = $(countryCode).value; 
            
            if( codeSelected == null || codeSelected.length == 0 )
            {
                codeSelected = $('originalCountryCode').value;
            }
            
            if( codeSelected=="US" ||  codeSelected == null || codeSelected.length == 0   )
            {
                otherInput.value == "";

                $('provinceRegion').style.display = 'none'; 
                $('provinceRegionTitle').style.display = 'none'; 
                $('stateProvince').style.display = 'block';
                $('stateProvinceTitle').style.display = 'block';

                dropDown.options.length = GlobalUSStates.length+1;

                dropDown.options[0] = new Option(optionSelectText);
                dropDown.options[0].value = "";
                
                for( var i=1; i<GlobalUSStates.length+1; i++)
                {
                    dropDown.options[i] = new Option(GlobalUSStates[i-1].name);                    
                    dropDown.options[i].value = GlobalUSStates[i-1].code;

                    if( GlobalUSStates[i-1].code==$('originalStateCode').value )
                    {
                        dropDown.options[i].selected = true;
                    }
                }
            }
            else if( codeSelected=="CA" )
            {
                otherInput.value == "";

                $('provinceRegion').style.display = 'none'; 
                $('provinceRegionTitle').style.display = 'block';
                $('stateProvince').style.display = 'block';
                $('stateProvinceTitle').style.display = 'none';

                dropDown.options.length = GlobalCAProvinces.length+1;

                dropDown.options[0] = new Option(optionSelectText);
                dropDown.options[0].value = "";

                for( var m=1; m<GlobalCAProvinces.length+1; m++)
                {
                    dropDown.options[m] = new Option(GlobalCAProvinces[m-1].name);
                    dropDown.options[m].value = GlobalCAProvinces[m-1].code;
                    if( GlobalCAProvinces[m-1].code==$('originalStateCode').value )
                    {
                        dropDown.options[m].selected = true;
                    }
                }            
            }
            else
            {   
                $('provinceRegion').style.display = 'block'; 
                $('provinceRegionTitle').style.display = 'block'; 
                $('stateProvince').style.display = 'none';
                $('stateProvinceTitle').style.display = 'none';

                if( $('originalCountryCode').value != codeSelected )
                {
                    otherInput.value = "";
                }
                else if( $('originalStateCode').value.length > 0 )
                {
                    otherInput.value = $('originalStateCode').value;
                }
            }
        
    }
    
// edit delivery methods 
function uploadList(submittedForm)
{
    setListTypeAndSubmit( "uploadNew", submittedForm );
}
function addAddress(submittedForm)
{
    setForwardTypeAndSubmit( "addEditAddress", submittedForm );
}
function editAddress(addressID,submittedForm)
{
    document.getElementById("hiddenAddressID").value = addressID;
    setForwardTypeAndSubmit( "addEditAddress", submittedForm );
}
function setForwardTypeAndSubmit( forwardType, submittedForm )
{
    //alert( "Changing forwardType from " + document.getElementById("forwardType").value + " to " + forwardType );
    document.getElementById("forwardType").value = forwardType;
    submittedForm.submit();
}

function submit( submittedForm )
{
    submittedForm.submit();
}

function resetForwarType()
{
    document.getElementById("forwardType").value = "";
}
function setListTypeAndSubmit( listType, submittedForm )
{
    document.getElementById("listType").value = listType; 
    submittedForm.submit();
}
function changeListType( listType )
{
    document.getElementById("listType").value = listType;
}

// sort cust methods
function SelectOptionFamily( objSelect )
{   

    var page = 'page';
    var group = 'group';
    var description = 'description';

    var selected = objSelect.options[objSelect.selectedIndex].id;       

    var target;
    var control = selected;

    if( selected == page )
    {
        target = group;
    }
    else if( selected == group )
    {
        target = description;
    }

    if( objSelect.selectedIndex + 1 <= objSelect.length )
    {
        for( var i=objSelect.selectedIndex+1; i<objSelect.length && objSelect.options[i].id != selected; i++ )
        {   
            if(objSelect.options[i].id == target)
            {
                objSelect.options[i].selected = true;
            }
        }
    }

    if( objSelect.selectedIndex + 1 <= objSelect.length )
    {
        if( target == group )
        {
            target = description;
            for( var i=objSelect.selectedIndex+1; i<objSelect.length && objSelect.options[i].id != selected; i++ )
            {            
                if(objSelect.options[i].id == target)
                {
                    objSelect.options[i].selected = true;
                }
            }
        }
    }
}
    
function SelectAll( objSourceElement )
{
    for (var i = 0; i < objSourceElement.length; i++)
    {
        objSourceElement.options[i].selected = true;
    }
}

function up(obj)
{ 
    obj = (typeof obj == "string") ? document.getElementById(obj) : obj;
    if (obj.tagName.toLowerCase() != "select" && obj.length < 2)
        return false;
    var sel = new Array();
    for (var i=0; i<obj.length; i++)
    {
        if (obj[i].selected == true)
        {
            sel[sel.length] = i;
        }
    }

    for (i in sel)
    {
        if (sel[i] != 0 && !obj[sel[i]-1].selected)
        {
            var tmp = new Array((document.body.innerHTML ? obj[sel[i]-1].innerHTML : obj[sel[i]-1].text), obj[sel[i]-1].value, obj[sel[i]-1].style.color, obj[sel[i]-1].style.backgroundColor, obj[sel[i]-1].className, obj[sel[i]-1].id);
            if (document.body.innerHTML) obj[sel[i]-1].innerHTML = obj[sel[i]].innerHTML;
            else obj[sel[i]-1].text = obj[sel[i]].text;
            obj[sel[i]-1].value = obj[sel[i]].value;
            obj[sel[i]-1].style.color = obj[sel[i]].style.color;
            obj[sel[i]-1].style.backgroundColor = obj[sel[i]].style.backgroundColor;
            obj[sel[i]-1].className = obj[sel[i]].className;
            obj[sel[i]-1].id = obj[sel[i]].id;
            if (document.body.innerHTML) obj[sel[i]].innerHTML = tmp[0];
            else obj[sel[i]].text = tmp[0];
            obj[sel[i]].value = tmp[1];
            obj[sel[i]].style.color = tmp[2];
            obj[sel[i]].style.backgroundColor = tmp[3];
            obj[sel[i]].className = tmp[4];
            obj[sel[i]].id = tmp[5];
            obj[sel[i]-1].selected = true;
            obj[sel[i]].selected = false;
        }
    }
}

function down(obj)
{
    obj = (typeof obj == "string") ? document.getElementById(obj) : obj;
    if (obj.tagName.toLowerCase() != "select" && obj.length < 2)
        return false;
    var sel = new Array();
    for (var i=obj.length-1; i>-1; i--)
    {
        if (obj[i].selected == true)
        {
            sel[sel.length] = i;
        }
    }

    for (i in sel)
    {
        if (sel[i] != obj.length-1 && !obj[sel[i]+1].selected)
        {
            var tmp = new Array((document.body.innerHTML ? obj[sel[i]+1].innerHTML : obj[sel[i]+1].text), obj[sel[i]+1].value, obj[sel[i]+1].style.color, obj[sel[i]+1].style.backgroundColor, obj[sel[i]+1].className, obj[sel[i]+1].id);
            if (document.body.innerHTML) obj[sel[i]+1].innerHTML = obj[sel[i]].innerHTML;
            else obj[sel[i]+1].text = obj[sel[i]].text;
            obj[sel[i]+1].value = obj[sel[i]].value;
            obj[sel[i]+1].style.color = obj[sel[i]].style.color;
            obj[sel[i]+1].style.backgroundColor = obj[sel[i]].style.backgroundColor;
            obj[sel[i]+1].className = obj[sel[i]].className;
            obj[sel[i]+1].id = obj[sel[i]].id;
            if (document.body.innerHTML) obj[sel[i]].innerHTML = tmp[0];
            else obj[sel[i]].text = tmp[0];
            obj[sel[i]].value = tmp[1];
            obj[sel[i]].style.color = tmp[2];
            obj[sel[i]].style.backgroundColor = tmp[3];
            obj[sel[i]].className = tmp[4];
            obj[sel[i]].id = tmp[5];
            obj[sel[i]+1].selected = true;
            obj[sel[i]].selected = false;
        }
    }
}

// image resize 
function fSetCustomSize(ID){
        document.getElementById(ID).style.visibility = "hidden";
        var nW= document.getElementById("nW").value;
        var nH= document.getElementById("nH").value;
        fRestoreSize(ID);
         changeSize(ID,nW,nH);
}  
function fImageSmaller(ID){
    changeSize(ID,100,100)
    changeSize(ID,300,200)
}
  
function fRestoreSize(ID){
        document.getElementById(ID).width = imageArray[ID][0];      
        document.getElementById(ID).height = imageArray[ID][1];
         
        document.getElementById('targetWH').style.width = imageArray[ID][0] +'px';      
        document.getElementById('targetWH').style.height = imageArray[ID][1] +'px';
}
function changeSize(ID,nW,nH)
{
    // window.status="Page is loaded"

    var boxH = document.getElementById(ID).height;
    var boxW = document.getElementById(ID).width;
    startW = boxW;
    startH = boxH;
    if(imageArray[ID] == undefined){
        var imageSizeArray = new Array();
        imageSizeArray.push(startW);
        imageSizeArray.push(startH);        
        imageArray[ID] = imageSizeArray;
    }
    //desired width
    var stageH= 200;
    var stageW= 168;

    if(nW > 1){
        stageW = nW;
    }
    if(nH > 1){
        stageH = nH;
    }
    //
    var nPercent= 100;
    var nPercentH;
    var nPercentW;
    //
    nPercentH = Math.round(stageH/boxH*100);
    nPercentW = Math.round(stageW/boxW*100);
    //      
    if (boxH>stageH || boxW>stageW) {
        if (nPercentH<=nPercentW) {
            nPercent = nPercentH;
        } else {
            nPercent = nPercentW;
        }
    } 
    document.getElementById(ID).height= boxH * (nPercent/100);
    document.getElementById(ID).width= boxW * (nPercent/100);
    document.getElementById(ID).style.visibility = "visible";
    //
    //7-3-06
    //targetWH not found, no reference in .vms
    //document.getElementById('targetWH').style.width = stageW +'px';       
    //document.getElementById('targetWH').style.height = stageH +'px';

    //document.getElementById('targetWH').style.backgroundImage = 'none';
    //document.getElementsByClassName('targetWH').style.width = stageW; 
    //document.getElementsByClassName('targetWH').style.height = stageH;    
 }
 
 function write_date()
 {
 var thetime=new Date();
 
 var nday=thetime.getDay();
 var nmonth=thetime.getMonth();
 var ntoday=thetime.getDate();
 var nyear=thetime.getYear();
 var AorP=" ";
 
 if (nday==0)
   nday="Sunday";
 if (nday==1)
   nday="Monday";
 if (nday==2)
   nday="Tuesday";
 if (nday==3)
   nday="Wednesday";
 if (nday==4)
   nday="Thursday";
 if (nday==5)
   nday="Friday";
 if (nday==6)
   nday="Saturday";
   
 nmonth+=1;  
   
 if (nmonth==1)
   nmonth="January";
 if (nmonth==2)
   nmonth="February";
 if (nmonth==3)
   nmonth="March";
 if (nmonth==4)
   nmonth="April";
 if (nmonth==5)
   nmonth="May";
 if (nmonth==6)
   nmonth="June";
 if (nmonth==7)
   nmonth="July";
 if (nmonth==8)
   nmonth="August";
 if (nmonth==9)
   nmonth="September";
 if (nmonth==10)
   nmonth="October";
 if (nmonth==11)
   nmonth="November";
 if (nmonth==12)
   nmonth="December";
 
 if (nyear<=99)
   nyear= "19"+nyear;
 
 if ((nyear>99) && (nyear<2000))
  nyear+=1900;
 
 document.write(nday+" &bull; "+nmonth+" "+ntoday+", "+nyear);
 
}
/////////////////////////////////////
///End Display Type Scripts/////////
///////////////////////////////////

function popFlash(URL) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=1,width=795,height=564,left = 240,top = 118');");
}





/*
 * Really easy field validation with Prototype
 * http://tetlaw.id.au/view/blog/really-easy-field-validation-with-prototype
 * Andrew Tetlaw
 * Version 1.5.3 (2006-07-15)
 * 
 * Copyright (c) 2006 Andrew Tetlaw
 * http://www.opensource.org/licenses/mit-license.php
 */
Validator = Class.create();

Validator.prototype = {
	initialize : function(className, error, test, options) {
		this.options = Object.extend({}, options || {});
		this._test = test ? test : function(v,elm){ return true };
		this.error = error ? error : 'Validation failed.';
		this.className = className;
	},
	test : function(v, elm) {
		return this._test(v,elm);
	}
}

var Validation = Class.create();

Validation.prototype = {
	initialize : function(form, options){
		this.options = Object.extend({
			onSubmit : true,
			stopOnFirst : false,
			immediate : false,
			focusOnError : true,
			useTitles : false,
			onFormValidate : function(result, form) {},
			onElementValidate : function(result, elm) {}
		}, options || {});
		this.form = $(form);
		if(this.options.onSubmit) Event.observe(this.form,'submit',this.onSubmit.bind(this),false);
		if(this.options.immediate) {
			var useTitles = this.options.useTitles;
			var callback = this.options.onElementValidate;
			Form.getElements(this.form).each(function(input) { // Thanks Mike!
				Event.observe(input, 'blur', function(ev) { Validation.validate(Event.element(ev),{useTitle : useTitles, onElementValidate : callback}); });
			});
		}
	},
	onSubmit :  function(ev){
		if(!this.validate()) Event.stop(ev);
	},
	validate : function() {
		var result = false;
		var useTitles = this.options.useTitles;
		var callback = this.options.onElementValidate;
		if(this.options.stopOnFirst) {
			result = Form.getElements(this.form).all(function(elm) { return Validation.validate(elm,{useTitle : useTitles, onElementValidate : callback}); });
		} else {
			result = Form.getElements(this.form).collect(function(elm) { return Validation.validate(elm,{useTitle : useTitles, onElementValidate : callback}); }).all();
		}
		if(!result && this.options.focusOnError) {
			Form.getElements(this.form).findAll(function(elm){return $(elm).hasClassName('validation-failed')}).first().focus()
		}
		this.options.onFormValidate(result, this.form);
		return result;
	},
	reset : function() {
		Form.getElements(this.form).each(Validation.reset);
	}
}

Object.extend(Validation, {
	validate : function(elm, options){
		options = Object.extend({
			useTitle : false,
			onElementValidate : function(result, elm) {}
		}, options || {});
		elm = $(elm);
		var cn = elm.classNames();
		return result = cn.all(function(value) {
			var test = Validation.test(value,elm,options.useTitle);
			options.onElementValidate(test, elm);
			return test;
		});
	},
	test : function(name, elm, useTitle) {
		var v = Validation.get(name);
		var prop = '__advice'+name.camelize();
		if(Validation.isVisible(elm) && !v.test($F(elm), elm)) {
			if(!elm[prop]) {
				var advice = Validation.getAdvice(name, elm);
				if(typeof advice == 'undefined') {
					var errorMsg = useTitle ? ((elm && elm.title) ? elm.title : v.error) : v.error;
					advice = '<div class="validation-advice" id="advice-' + name + '-' + Validation.getElmID(elm) +'" style="display:none">' + errorMsg + '</div>'
					switch (elm.type.toLowerCase()) {
						case 'checkbox':
						case 'radio':
							var p = elm.parentNode;
							if(p) {
								new Insertion.Bottom(p, advice);
							} else {
								new Insertion.After(elm, advice);
							}
							break;
						default:
							new Insertion.After(elm, advice);
				    }
					advice = $('advice-' + name + '-' + Validation.getElmID(elm));
				}
				if(typeof Effect == 'undefined') {
					advice.style.display = 'block';
				} else {
					new Effect.Appear(advice, {duration : 1 });
				}
			}
			elm[prop] = true;
			elm.removeClassName('validation-passed');
			elm.addClassName('validation-failed');
			return false;
		} else {
			var advice = Validation.getAdvice(name, elm);
			if(typeof advice != 'undefined') advice.hide();
			elm[prop] = '';
			elm.removeClassName('validation-failed');
			elm.addClassName('validation-passed');
			return true;
		}
	},
	isVisible : function(elm) {
		while(elm.tagName != 'BODY') {
			if(!$(elm).visible()) return false;
			elm = elm.parentNode;
		}
		return true;
	},
	getAdvice : function(name, elm) {
		return Try.these(
			function(){ return $('advice-' + name + '-' + Validation.getElmID(elm)) },
			function(){ return $('advice-' + Validation.getElmID(elm)) }
		);
	},
	getElmID : function(elm) {
		return elm.id ? elm.id : elm.name;
	},
	reset : function(elm) {
		elm = $(elm);
		var cn = elm.classNames();
		cn.each(function(value) {
			var prop = '__advice'+value.camelize();
			if(elm[prop]) {
				var advice = Validation.getAdvice(value, elm);
				advice.hide();
				elm[prop] = '';
			}
			elm.removeClassName('validation-failed');
			elm.removeClassName('validation-passed');
		});
	},
	add : function(className, error, test, options) {
		var nv = {};
		nv[className] = new Validator(className, error, test, options);
		Object.extend(Validation.methods, nv);
	},
	addAllThese : function(validators) {
		var nv = {};
		$A(validators).each(function(value) {
				nv[value[0]] = new Validator(value[0], value[1], value[2], (value.length > 3 ? value[3] : {}));
			});
		Object.extend(Validation.methods, nv);
	},
	get : function(name) {
		return  Validation.methods[name] ? Validation.methods[name] : new Validator();
	},
	methods : {}
});

Validation.add('IsEmpty', '', function(v) {
				return  ((v == null) || (v.length == 0)); // || /^\s+$/.test(v));
			});

Validation.addAllThese([
	['isRequired', 'This is a required field.', function(v) {
				return !Validation.get('IsEmpty').test(v);
			}],
	['isRequiredProposalBox', 'Please check the above box to approve the submission of this proposal.', function(v) {
				return !Validation.get('IsEmpty').test(v);
			}],
	['validate-number', 'Please enter a valid number in this field.', function(v) {
				return Validation.get('IsEmpty').test(v) || (!isNaN(v) && !/^\s+$/.test(v));
			}],
	['validate-digits', 'Please use numbers only in this field. please avoid spaces or other characters such as dots or commas.', function(v) {
				return Validation.get('IsEmpty').test(v) ||  !/[^\d]/.test(v);
			}],
	['validate-alpha', 'Please use letters only (a-z) in this field.', function (v) {
				return Validation.get('IsEmpty').test(v) ||  /^[a-zA-Z]+$/.test(v)
			}],
	['validate-alphanum', 'Please use only letters (a-z) or numbers (0-9) only in this field. No spaces or other characters are allowed.', function(v) {
				return Validation.get('IsEmpty').test(v) ||  !/\W/.test(v)
			}],
	['validate-date', 'Please enter a valid date.', function(v) {
				var test = new Date(v);
				return Validation.get('IsEmpty').test(v) || !isNaN(test);
			}],
	['validate-email', 'Please enter a valid email address. For example fred@domain.com.', function (v) {
				return Validation.get('IsEmpty').test(v) || /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(v)
			}],
	['validate-url', 'Please enter a valid URL.', function (v) {
				return Validation.get('IsEmpty').test(v) || /^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(v)
			}],
	['validate-date-au', 'Please use this date format: dd/mm/yyyy. For example 17/03/2006 for the 17th of March, 2006.', function(v) {
				if(Validation.get('IsEmpty').test(v)) return true;
				var regex = /^(\d{2})\/(\d{2})\/(\d{4})$/;
				if(!regex.test(v)) return false;
				var d = new Date(v.replace(regex, '$2/$1/$3'));
				return ( parseInt(RegExp.$2, 10) == (1+d.getMonth()) ) && 
							(parseInt(RegExp.$1, 10) == d.getDate()) && 
							(parseInt(RegExp.$3, 10) == d.getFullYear() );
			}],
	['validate-currency-dollar', 'Please enter a valid $ amount. For example $100.00 .', function(v) {
				// [$]1[##][,###]+[.##]
				// [$]1###+[.##]
				// [$]0.##
				// [$].##
				return Validation.get('IsEmpty').test(v) ||  /^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/.test(v)
			}],
	['validate-one-required', 'Please select one of the above options.', function (v,elm) {
				var p = elm.parentNode;
				var options = p.getElementsByTagName('INPUT');
				return $A(options).any(function(elm) {
					return $F(elm);
				});
			}]
]);
//////////////////////// END VALIDATION CODE //////////////////////////////

