function trim( str ) {
    str = new String( str );
    return str.replace( /^\s+/g, '' ).replace( /\s+$/g, '' );
}

function updateModels(make, isNew, isCert, modelDD) {
    callback = function(models) {
        DWRUtil.removeAllOptions(modelDD);
        modelDD.options[0] = new Option("All Models", "");
        DWRUtil.addOptions(modelDD, models, "id", "description");
    }

    ResearchUtil.getModelsByMake(make, isNew, isCert, callback);
}

function updateNewModels(make, isNew, isCert, isUsed, modelDD) {
    callback = function(models) {
        DWRUtil.removeAllOptions(modelDD);
        modelDD.options[0] = new Option("All Models", "");
        DWRUtil.addOptions(modelDD, models, "id", "description");
    }

    ResearchUtil.getNewModelsByMake(make, isNew, isCert, isUsed, callback);
}

function yearIndex(years, year) {
    if (years) {
        for (i = 0; i < years.length; i++) {
            if (year == years[i]) {
                return i;
            }
        }
    }

    return -1;
}

function resetYears(make, model, isNew, isCert, endYearDD, beginYearDD) {
    callback = function(years) {
        if (years != null) {
            if (years.length > 0) {
                DWRUtil.removeAllOptions(endYearDD);
                DWRUtil.addOptions(endYearDD, years);
            } else {
                DWRUtil.removeAllOptions(endYearDD);
                endYearDD.options[0] = new Option("--", "");
            }

            if (beginYearDD) {
                if (years.length > 0) {
                    DWRUtil.removeAllOptions(beginYearDD);
                    DWRUtil.addOptions(beginYearDD, years);

                    beginYearDD.selectedIndex = beginYearDD.length - 1;
                } else {
                    DWRUtil.removeAllOptions(beginYearDD);
                    beginYearDD.options[0] = new Option("--", "");
                }
            }
        }
    }

    ResearchUtil.getYears(make, model, isNew, isCert, true, callback)
}

function updateYears(make, model, isNew, isCert, endYearDD, beginYearDD) {
    callback = function(years) {
        var endYear = endYearDD.options[endYearDD.selectedIndex].value;
        var beginYear = null;

        if (beginYearDD) {
            beginYear = beginYearDD.options[beginYearDD.selectedIndex].value;
        }

        if (years.length > 0) {
            DWRUtil.removeAllOptions(endYearDD);

            var endYears = years;

            if (beginYear) {
                var beginYearIndex = yearIndex(years, beginYear)

                if (beginYearIndex > -1) {
                    endYears = years.slice(0, beginYearIndex+1);
                }
            }

            DWRUtil.addOptions(endYearDD, endYears);

            if (endYear) {
                setDropdown(endYearDD, endYear);
            }
        } else {
            DWRUtil.removeAllOptions(endYearDD);
            endYearDD.options[0] = new Option("--", "");
        }

        if (beginYearDD) {
            if (years.length > 0) {
                DWRUtil.removeAllOptions(beginYearDD);

                var beginYears = years;

                if (endYear) {
                    var endYearIndex = yearIndex(years, endYear);

                    if (endYearIndex > -1) {
                        beginYears = years.slice(endYearIndex, years.length);
                    }
                }

                DWRUtil.addOptions(beginYearDD, beginYears);

                if (beginYear) {
                    setDropdown(beginYearDD, beginYear);
                } else {
                    beginYearDD.selectedIndex = beginYearDD.length - 1;
                }
            } else {
                DWRUtil.removeAllOptions(beginYearDD);
                beginYearDD.options[0] = new Option("--", "");
            }
        }
    }

    ResearchUtil.getYears(make, model, isNew, isCert, true, callback)
}
/**
 * Copies the name to a title for a set of options.
 * @param options the options to work on.
 */
function copyOptionNamesToTitles(options)
{
    // Verify parameters.
    if(options == null)
    {
        return;
    }
    // Create temp variables.
    var x = 0;
    var o = null;
    var s = null;
    var y = options.length;
    // Loop through the options.
    for(x=0; x<y; x++)
    {
        // Get an option.
        o = options[x];
        // Get its value.
        s = o.value;
        // Create a title and set the value.
        o.setAttribute("title", s);
    }
}

function updateMIModels(make, modelDD) {
    DWRUtil.removeAllOptions(modelDD);
    modelDD.options[0] = new Option('Select One', '');

    callback = function(models) {
        DWRUtil.addOptions(modelDD, models);
        modelDD.disabled = false;
//        var options = modelDD.options;
//        copyOptionNamesToTitles(options);
    }

    if (make == null || make == '') {
        DWRUtil.removeAllOptions(modelDD);
        modelDD.options[0] = new Option('Select One', '');
        modelDD.disabled = true;
    } else {
        ModelSearchUtil.getAllRetailModels(make, callback);
    }
}

function updateMIYears(make, model, yearDD) {
    DWRUtil.removeAllOptions(yearDD);

    callback = function(years) {
        DWRUtil.addOptions(yearDD, years);
        yearDD.disabled = false;
    }

    if (model == null || model == '') {
        DWRUtil.removeAllOptions(yearDD);
        yearDD.options[0] = new Option('', '');
        yearDD.disabled = true;
    } else {
        ResearchUtil.getMIYears(make, model, callback);
    }
}

function updatePhotoGalleryByGroupAndTitle(groupId, title) {

    callback = function(contentItems) {

    }

    ResearchUtil.findPhotoGalleryByGroupAndTitle(groupId, title, callback);
}



function updateVideoGalleryByGroup(groupId) {

    callback = function(contentItems) {

    }

    ResearchUtil.findVideoGalleryByGroup(groupId, callback);
}

function updateVideoGalleryByGroupAndTitle(groupId, title) {

    callback = function(contentItems) {

    }

    ResearchUtil.findVideoGalleryByGroupAndTitle(groupId, title, callback);
}

function update360GalleryByGroup(groupId, listItem) {

    callback = function(contentItems) {
       var titleArray = new Array();
       DWRUtil.removeAllOptions(listItem);
       for (var i = 0; i < contentItems.length; i++){
             contentItem = contentItems[i];
             titleArray[i] = contentItem.title;
             //contentBody = contentItem.contentBody.split("|");
             //contentVideo = contentBody[0];
       }
       DWRUtil.addOptions(listItem,titleArray)
    }

    ResearchUtil.find360GalleryByGroup(groupId, callback);
}

function update360GalleryByGroupAndTitle(groupId, title) {

    callback = function(contentItems) {

    }

    ResearchUtil.find360GalleryByGroupAndTitle(groupId, title, callback);
}

/**
* add openPopWin to links
* */
Event.observe(window, "load", initMediaLinks);

function initMediaLinks() {
    setupLinks('#top-picks-results ul li a', 660, 400);
    setupLinks('#top-pick-links #tpl-recommended ul li a', 660, 400);
    setupLinks('#tpl-additional-ul li a', 660, 400);
    setupLinks('#autosh-recent .photos a', 760, 525);
    setupLinks('#autosh-recent .videos a', 660, 380);
    setupLinks('.gallery-overlay .photos', 760, 525);
    setupLinks('.gallery-overlay .threesixty', 660, 380);
    setupLinks('.gallery-overlay .videos', 660, 380);
    setupLinks('#galleries li a', 760, 525);
    setupLinks('#threesixty li a', 660, 380);
    setupLinks('#spins li a', 660, 380);
    setupLinks('#autoshow-photo li a', 760, 525);
    setupLinks('#as-related-photos .photo a', 700, 540);
    setupLinks('#as-photo-main a', 700, 540);
    setupLinks('#rnc-results #page-results a.link-picks', 660, 400);
    articlehelpfullinks();
};

function setupLinks(id, sizew, sizeh) {
    $A($$(id)).each(function(el) {
        el.observe("click", function() {
            openPopWin(el.href, 'no', 'no', sizew, sizeh);
        });
    });


};
function articlehelpfullinks(){
    /* created by suman karamched for article helpfulness functionality */
    if(!($("articlehelpful"))) return;
    $$("#articlehelpful a")[0].observe("click",function(){
        ArticleHelpful.processRequest(contentId, 'true');
        $("articlehelpful").update("Thank you for your feedback.");
    });

    $$("#articlehelpful a")[1].observe("click",function(){
        ArticleHelpful.processRequest(contentId, 'false');
        $("articlehelpful").update("Thank you for your feedback.");
    });
}

function padChar(characters) {
    var retVal = "" + characters;

    while (retVal.length != 3) {
        retVal = "0" + retVal;
    }

    return retVal;
}

function encodeASCII(input) {
    if (input == null || input.length == 0) {
        return "";
    }

    var retVal = "";
    for (var i = 0; i < input.length; i++) {
        retVal += padChar(input.charCodeAt(i));
    }

    return retVal;
}

function encodeKeywords(searchBoxName) {
    var keywords = document.getElementById(searchBoxName).value;

    if(keywords.length > 0){
        document.getElementById("keywords_display").value = keywords;
        document.getElementById("keywordsrep").value = encodeASCII(keywords);
        document.getElementById("keywordsrc").value = encode64(keywords);
     }else{
        document.getElementById("keywords_display").value = "";
        document.getElementById("keywordsrep").value = "";
        document.getElementById("keywordsrc").value = "";
     }
}
