if (!ask) var ask = {};

var _fFlag = false;
//fade in running

var _hasRRContent = false;
var _RRContentBottom = false;

var originalQuery = "";
// When any zoom or search suggestion item is selected, this variable keeps a backup of the
// of the original search query, which will be restored just before the selection wraps around.
// The value of this variable is undefined when there is no zoom or search suggestion selection.

var Const = {};
Const.RIGHT_PANE = 'rpane';
Const.RELATED_SEARCH_PANE = 'rspane';
Const.RIGHT_RAIL = 'sapane';
Const.SEARCH_SUGGESTION_PANE = 'sgpane';
Const.SEARCH_SUGGESTION_BODY = 'sgbody';
Const.MAIN_PANE = 'main';
Const.DEBUG_PANE = 'debug';

// If this javascript gets executed on the client's browser, then we know its not the homepage : TRES-5237
a10.ss.hp == "false";

/*
if (Cookie.isEnabled()) {
    var nextYr = new Date();
    nextYr.setTime(nextYr.getTime() + 31536000000);
    // 1000*60*60*24*365 == 1 year
    Cookie.setCookie("jss", "1", nextYr, "/", _kidsCookieDomain);
    //set jss to indicate that javascript is enabled. the noscript tag on the header.jsp sets the value to 0 if js if disabled.
    //this check sets the jss value to 1 in case used enables their javascript support
}
*/

/*
 grabs the html fragment associated with the specified id
 */
function getContent(id, html) {
    if (html) {
        var startIndex = html.indexOf("<!-- " + id + "_start -->");
        var endIndex = html.indexOf("<!-- " + id + "_end -->");
        if (startIndex != -1 && endIndex != -1) {
            return html.substring(startIndex, endIndex);
        }
    }
    return "";
}

function fadeInDone() {
    _fFlag = false;
    a10.debug("fadeInDone...");
    if (a10.browser.isIE7()) {
        //ie7 cleartype + css filter hack
        $(Const.RIGHT_PANE).style.removeAttribute('filter');
        $(Const.RELATED_SEARCH_PANE).style.removeAttribute('filter');
        $(Const.RIGHT_RAIL).style.removeAttribute('filter');
        //        $(Const.COUNTS_PANE).style.removeAttribute('filter');
        $("header").style.removeAttribute('filter');
    }
    if (a10.browser.isOpera()) {
        //hack for opera, where animation stops, but opacity not set to 1
        $(Const.RIGHT_PANE).style.opacity = 1;
        $(Const.RELATED_SEARCH_PANE).style.opacity = 1;
        $(Const.RIGHT_RAIL).style.opacity = 1;
        //        $(Const.COUNTS_PANE).style.opacity = 1;
        $("header").style.opacity = 1;
    }

    if (_debugEnabled) {
        moveDebugSection();
    }
}

/*
    This is the window.onLoad event handler.
 */
function initPage() {
    registerWheelScrollListener();
    setImageFilters();
    //reset values (for back button)
    if (document.ft) document.ft.reset();

    if ($('q')) {
        // Bind event handlers to query box.
        if (!_disableSS) {
            a10.ss.init('q', 'sgpane', 'sgbody');
        }

        
    }

    // Bind onclick event handler for the entire document.  Bind to documentElement instead of body in order
    // to account for empty white spaces at the bottom of the page where there's no content.
    document.documentElement.onclick = mouseClicked;

    repositionRSA();
    //if pics channel
    if (document.getElementById("midRailMeasure")) {
        if ('undefined' == typeof(_isHP)) {
            arrangeTiles();
        }
        else if (_isHP) {
            arrangeTiles(3,2);
        }
    }

    if (_rrCached) {
        setRightRailContent();
    }

    window.onresize = windowSizeChanged;

    if (_debugEnabled) {
        moveDebugSection();
    }

    if(window['_currentChannel'] && (_currentChannel == 'web' || _currentChannel == 'movies' || _currentChannel == 'schoolhouse' || _currentChannel == 'games')) {
        if (typeof(Binocs) != 'undefined') {
            a10.util.insertScript(Binocs.jsSrc, "binocScript");
        }
    }

    if (window['_currentChannel'] == 'geography') {
        //loadMap();
    }
}

/**
 * call back function that will be invoked by navDropdown.js once its loaded
 */
function navloaded() {
}

function loadMap() {
    if (ask.util.Browser.isSupported()) {
        var map = new ask.local.Map(document.getElementById("map"));
        map.addControl(new ask.local.LargeMapControl());
        map.addControl(new ask.local.ViewModeControl());
        map.addControl(new ask.local.ScaleControl());
        map.addControl(new ask.local.ScrollArrowsControl());
        //map.addControl(new ask.local.SearchBarControl());

        //set the ajax host to the current host for proxy requests (e.g. geocodes)
        ask.local.Defaults.AMX_HOST = window.location.protocol + '//' + window.location.host + window.location.pathname.substr(0,window.location.pathname.lastIndexOf('/'));
        ask.local.Defaults.partnerId = '4374544';
        ask.local.Defaults.StaticTileHost = _staticTileHost;
        ask.local.Defaults.CacheTileHost = _cacheTileHost;

		//set info window image
		map.infoWindow.setImage(
			{
				width: 250, height: 100,
				imgUrl: ask.local.Defaults.LocalSP+ 'infowin.png',
				txtTop: 25, txtLeft: 40, txtWidth: 165, txtHeight: 150,
				hints: { imgWidth: 308, imgHeight: 234 }
			}
		);

        map.enableEffects = true;
        map.render();
    }

}

/**
 * call back function that will be invoked by dialog.js once its loaded
 */
function dialogLoaded() {

}


function setRightRailContent() {
    document.getElementById("sapane").innerHTML = document.getElementById("rrcontent").value;
    ;
    a10.anim.fadeIn("sapane", 0.5, fadeInDone);
}

/*
  onclick event handler for the entire document.
*/
function mouseClicked(e) {
    if (!e) e = window.event;

    // Close nav bubble if click is outside of the bubble and the bubble is shown.
    if (a10.nb.navBubble && !a10.nb.clicked) {
        a10.nb.close();
    }
    a10.nb.clicked = false;
}


/*
 Scroll wheel event handler.  Figures out the delta in of a wheel scroll event and scrolls the page.
 Adapted from http://adomas.org/javascript-mouse-wheel/
*/
function wheelScroll(event) {
    var delta = 0;

    if (!event) {/* For IE. */
        event = window.event;
    }

    if (event.wheelDelta) { /* IE/Opera. */
        delta = event.wheelDelta / 120;
        if (a10.browser.isOpera()) {
            var version = a10.browser.version();
            if (version && version < 9.2) {
                //In Opera 9.1x and earlier, delta differs in sign as compared to IE.
                delta = -delta;
            }
        }
    } else if (event.detail) {  // Mozilla
        // In Mozilla, sign of delta is different than in IE. Also, delta is multiple of 3.
        delta = -event.detail / 3;
    }

    var target;
    if (event.target) {
        target = event.target;
    } else if (event.srcElement) {
        target = event.srcElement;
    }
    if ((target && target.tagName && target.tagName.toLowerCase() == 'select') ||
        (target && target.parentNode && target.parentNode.tagName && target.parentNode.tagName.toLowerCase() == 'select')) {
        //select, ignore event
        return;
    }

    /** If delta is nonzero, handle it.
     * Basically, delta is now positive if wheel was scrolled up,
     * and negative, if wheel was scrolled down.
     */
    if (delta) {

        // Determine if mouse is over the zoom bubble.  IE and FF need different mechanism for determining this,
        // since FF gives wrong value for event.clientX/Y, and the mechanism for FF doesn't work reliably on IE.
        var isOverBubble;
        var overBubbleId;
        if (document.all) { // IE
            var bubs = getScrollableBubbles();
            var i;
            for (i = 0; i < bubs.length; i++) {
                var b = bubs[i];
                if ($(b.id)) {
                    isOverBubble = a10.element.containsPoint($(b.id), event.clientX, event.clientY, b.pageScrollDep);
                    if (isOverBubble) {
                        overBubbleId = b.id;
                        break;
                    }
                }
            }
        }

        // When mouse is over the zoom bubble content, scroll the bubble's content only, not the page.
        if (isOverBubble && overBubbleId) {
            // Scroll the bubble content.
            $(overBubbleId).scrollTop += delta * 40 * -1;
            a10.event.cancelDefaultAction(event);
        }
        else { // Scroll the page.
            window.scrollBy(0, delta * 40 * -1);

            // Prevent default page scrolling done by the browser.
            a10.event.cancelDefaultAction(event);
        }
    }
}

/**
 * Returns an array of bubbles in the site that should be scrollable.
 * The bubble element id and whether its position is dependent on the page's scroll offset.
 */
function getScrollableBubbles() {
    return [ { id : "zoomBubbleBody", pageScrollDep : false },  // left rail zoom more bubble
    { id : "bubble-content", pageScrollDep : true }, // blogs binoc preview
    { id : "b_bubHelpContent", pageScrollDep : true } // web binoc preview help
            ];
}

/*
  changes the background of a web results element (SA, teoma result) into hiligh mode
 */
function hilight(elt) {
    elt.style.backgroundColor = 'blue';
    elt.style.color = '#FFF';
}

/*
  changes the background of a web results element (SA, teoma result) into back into normal mode
 */
function unhilight(elt) {
    elt.style.backgroundColor = 'white';
    elt.style.color = '';
}

/*
   Registers wheel scroll listener to handle scrolling via the mouse scroll wheel
 */
function registerWheelScrollListener() {
    if (a10.browser.isFirefox()) { // Mozilla
        //for firefox, only need to handle case where user is scrolling over the left rail
        $("leftRail").addEventListener('DOMMouseScroll', wheelScroll, false);
    }

    if (a10.browser.isIE() || a10.browser.isOpera()) {
        // IE/opera
        window.onmousewheel = document.onmousewheel = wheelScroll;
    }
}


function btn_mouseover(a) {
    if (a.className.indexOf("_n") != -1) {
        a.className = a.className.substring(0, a.className.length - 2) + "_o";
    }
}

function btn_mouseout(a) {
    if (a.className.indexOf("_o") != -1) {
        a.className = a.className.substring(0, a.className.length - 2) + "_n";
    }
}

function btn_mousedown(img) {
    img.src = img.src.substring(0, img.src.length - 5) + "a.gif";

}

function btn_mouseup(img) {
    img.src = img.src.substring(0, img.src.length - 5) + "o.gif";
}

function hover(d) {
    if (_fFlag) { //fade in animation running, do nothing
        return;
    }

    //d.style.backgroundColor = "#F4F4F4";

    //AskX hover effect, TRES-4554
    d.style.backgroundImage = _bgimage;
    d.style.backgroundRepeat = "repeat-x";

    var elts = d.getElementsByTagName("span");
    if (elts.length > 0) {
        if (!elts[0].ignore) {
            elts[0].style.visibility = 'visible';
        }
    }
}

function unhover(d) {
    if (_fFlag) { //fade in animation running, do nothing
        return;
    }

    //d.style.backgroundColor = "#fff";

    //AskX unhover effect, TRES-4554
    d.style.backgroundImage = "";

    var elts = d.getElementsByTagName("span");
    if (elts.length > 0) {
        if (!elts[0].ignore) {
            elts[0].style.visibility = 'hidden';
        }
    }
}

var VideoChannel = {

    hoverVideo : function(d, objectID, w, h, url)
    {
        if (url.indexOf(".swf") != -1) {
            var so = new SWFObject(url, "mov" + d, w, h, "6", "#ffffff");
            so.addParam("quality", "high");
            so.addParam("wmode", "transparent");
            so.write("rollover" + d);
        }
        var rl = document.getElementById("rollover" + d);
        rl.style.display = 'inline';
    },

    unhoverVideo : function(d, imgsrc, w, h)
    {
        var rl = document.getElementById("rollover" + d);
        rl.style.display = 'none';
    },

    getSearchParams : function(ignoreQsrc) {


        if (ignoreQsrc == "false") {

            _qsrc = $F('qsrc');
            if (a10.ss.selectedIndex != -1) {
                // SS qsrc value defaults to 2352
                _qsrc = a10.ss.ssQsrcDefault;
            }
        }

        _channel = "vid";

        _origin = $F('o');

        _partnerID = $F('l');

        if (_origin == "") {
            // Use origin = 0 as default
            _origin = 0;
        }

        if (_partnerID == "") {
            // Use partnerID = dir as default
            _partnerID = 'dir';
        }
        if (ignoreQsrc == "false") {
            return {q : $F('q'), pg : 1, vidt : ($('vidt') ? $F('vidt') : ""), vidl : ($('vidl') ? $F('vidl') : ""), ch : _channel, qsrc : _qsrc, o : _origin, l : _partnerID };
        }
        else {
            return {q : $F('q'), pg : 1, vidt : ($('vidt') ? $F('vidt') : ""), vidl : ($('vidl') ? $F('vidl') : ""), ch : _channel,  o : _origin, l : _partnerID };
        }

    },

    hover: function(d) {
        var cell = document.getElementById("picBox" + d);
        var saveButton = a10.util.getElementsByClassName('saveButton', cell)[0];

        if (saveButton && !saveButton.ignore) { // saveButton.ignore == true when item is already saved
            saveButton.style.visibility = 'visible';
        }

        //cell.style.backgroundColor = '#f4f4f4';

        //AskX hover effect, TRES-4554
        var elts = cell.getElementsByTagName("table");
        elts[0].style.backgroundColor = '#ff8086';
        elts[1].style.backgroundColor = '#fff2D8';
    },

    unhover: function(d) {
        var cell = document.getElementById("picBox" + d);
        var saveButton = a10.util.getElementsByClassName('saveButton', cell)[0];

        if (saveButton && !saveButton.ignore) { // saveButton.ignore == true when item is already saved
            saveButton.style.visibility = 'hidden';
        }

        //cell.style.backgroundColor = '#fff';

        //AskX unhover effect, TRES-4554
        elts = cell.getElementsByTagName("table");
        elts[0].style.backgroundColor = '#fff';
        elts[1].style.backgroundColor = '#fff';
    },

    resetFilters: function(event) {
        $("source").value = "";
        $("sort").value = "";
        $("vidt").selectedIndex = 0;
        $("vidl").selectedIndex = 0;
        searchVid(event);
    }
}

// Clear "min/max" string in real estate form when user clicks on it for the first time.
function clearREPriceVal(id){
    var inputEle  = document.getElementById(id);
    if("undefined" != typeof(inputEle) && null != inputEle){
        if(inputEle.value == "min" || inputEle.value == "max"){
            inputEle.value = "";
        }
    }
}

// Validate the real estate form
function validateREForm(form){
    var index = -1;
    var minInt = 0;
    var maxInt = 2147483647;    

    // Check form is okay first
    if( undefined == typeof(form) || null == form )
        form.action = "http:www.realestate.com";

    // Zip has to be present and be a number
    var zipEle = document.getElementById('rezip');
    // max price is optional
    var remax = document.getElementById('remax');
    // min price is optional
    var remin = document.getElementById('remin');
    // Num beds is optional
    var rebeds = document.getElementById('rebeds');
    // Num baths is optional
    var rebaths =  document.getElementById('rebaths');

    var zip = parseInt(zipEle.value);
    if(isNaN(zipEle.value) || isNaN(zip) || zip >= maxInt || zip <= minInt){
        // If user didnt provide a zipcode or there was a zipcode error, then direct user to realestate.com :
        zipEle.value = '';
        remax.value = '';
        remin.value = '';
        rebeds.value = '';
        rebaths.value= '';
        form.action = "http://www.realestate.com";
        return true;
    }

    var pricemax = parseInt(remax.value);
    if(isNaN(remax.value) || pricemax >= maxInt || pricemax <= minInt  ){
        remax.value = '';
    }

    var pricemin = parseInt(remin.value);
    if(isNaN(remin.value) || pricemin >= maxInt || pricemin <= minInt  ){
        remin.value = '';
    }

    index = rebeds.selectedIndex;
    var beds = parseInt(rebeds.options[index].value);
    if(isNaN(beds) || beds >= maxInt || beds <= minInt  ){
        rebeds.options[index].value = '';
    }

    index = rebaths.selectedIndex;
    var baths = parseInt(rebaths.options[index].value);
    if(isNaN(baths) || baths >= maxInt || baths <= minInt  ){
        rebaths.options[index].value = '';
    }

    return true;
}

//var APImageChannel = {
//    getSearchParams : function(ignoreQsrc) {
//
//        if (ignoreQsrc == "false") {
//            _qsrc = $F('qsrc');
//            if (a10.ss.selectedIndex != -1) {
//                // SS qsrc value defaults to 2352
//                _qsrc = a10.ss.ssQsrcDefault;
//            }
//        }
//
//        if (ignoreQsrc == "true") {
//            return {q : $F('q'), imgs : ($('imgs') ? $F('imgs') : ""), imgt : ($('imgt') ? $F('imgt') : ""), imgc : ($('imgc') ? $F('imgc') : ""), pg:1, ch: _channel };
//        } else {
//            return {q : $F('q'), imgs : ($('imgs') ? $F('imgs') : ""), imgt : ($('imgt') ? $F('imgt') : ""), imgc : ($('imgc') ? $F('imgc') : ""), pg:1, ch: _channel,  qsrc : _qsrc };
//        }
//    },
//
//    resetFilters: function(event) {
//        $("imgs").selectedIndex = 0;
//        $("imgt").selectedIndex = 0;
//        $("imgc").selectedIndex = 0;
//        searchAP(event);
//    }
//}

var APImageChannel = {
    getSearchParams : function(ignoreQsrc) {

        if (ignoreQsrc == "false") {
            _qsrc = $F('qsrc');
            if (a10.ss.selectedIndex != -1) {
                // SS qsrc value defaults to 2352
                _qsrc = a10.ss.ssQsrcDefault;
            }
        }

        if (ignoreQsrc == "false") {
            return {q : $F('q'), pg : 1, ch : _channel, qsrc : _qsrc};
        }
        else {
            return {q : $F('q'), pg : 1, ch : _channel};
        }
    }
}


//img channel specific implementations for param fetching and ui
var ImageChannel = {
    getSearchParams : function(ignoreQsrc) {

        _channel = "img";

        if (ignoreQsrc == "false") {
            _qsrc = $F('qsrc');
            if (a10.ss.selectedIndex != -1) {
                // SS qsrc value defaults to 2352
                _qsrc = a10.ss.ssQsrcDefault;
            }
        }

        _origin = $F('o');

        _partnerID = $F('l');

        if (_origin == "") {
            // Use origin = 0 as default
            _origin = 0;
        }

        if (_partnerID == "") {
            // Use partnerID = dir as default
            _partnerID = 'dir';
        }

        if (ignoreQsrc == "false") {
            return {q : $F('q'), imgs : ($('imgs') ? $F('imgs') : ""), imgt : ($('imgt') ? $F('imgt') : ""), imgc : ($('imgc') ? $F('imgc') : ""), qsrc : _qsrc, o : _origin, l : _partnerID };            
        }
        else {
            return {q : $F('q'), imgs : ($('imgs') ? $F('imgs') : ""), imgt : ($('imgt') ? $F('imgt') : ""), imgc : ($('imgc') ? $F('imgc') : ""), o : _origin, l : _partnerID };

        }

    },

    hover: function(d, saFlag, io) {
        //verify usage of SA flag and modify method signature
        if (!saFlag) {
            if (typeof io != 'undefined') {
                var rptLink = $('rpt_' + io);
                if (rptLink) {
                    rptLink.style.visibility = 'visible';
                }
            }
            //var elts = d.getElementsByTagName("span");
            //if (!elts[0].ignore) {
            //    elts[0].style.visibility = 'visible';
            //}
        }
        //d.style.backgroundColor = '#f4f4f4';

        //AskX hover effect, TRES-4554
        elts = d.getElementsByTagName("table");
        elts[0].style.backgroundColor = '#ff8086';
        elts[1].style.backgroundColor = '#fff2D8';

        //elts = d.getElementsByTagName("div");
        //elts[0].style.backgroundColor = '#f2f2f2';
        //elts[1].style.backgroundColor = '#fff2D8';
    },

    unhover: function(d, saFlag, io) {

        if (!saFlag) {
            if (typeof io != 'undefined') {
                var rptLink = $('rpt_' + io);
                if (rptLink) {
                    rptLink.style.visibility = 'hidden';
                }
            }
            //var elts = d.getElementsByTagName("span");
            //if (!elts[0].ignore) {
            //    elts[0].style.visibility = 'hidden';
            //}
        }

        //d.style.backgroundColor = '#fff';

        //AskX unhover effect, TRES-4554
        elts = d.getElementsByTagName("table");
        elts[0].style.backgroundColor = '#fff';
        elts[1].style.backgroundColor = '#fff';

        //elts = d.getElementsByTagName("div");
        //elts[0].style.backgroundColor = '#fff';
        //elts[1].style.backgroundColor = '#fff';
        
    },

    resetFilters: function(event) {
        $("imgs").selectedIndex = 0;
        $("imgt").selectedIndex = 0;
        $("imgc").selectedIndex = 0;
        searchPic(event);
    }
}

/**
 * set midrail width
 */
function setMidRailWidth() {
    var mr = $('midRail');
    a10.debug("mr=" + mr);
    if (mr) {
        //is there content for the right rail
        a10.debug("mr.style.width=" + mr.style.width);
        mr.style.width = calculateMidRailWidth() + 'px';
        a10.debug("mr.style.width=" + mr.style.width);
        if (!_hasRRContent) {
            mr.style.marginRight = "0px";
        }
    }
}

/**
 * set midrail width
 */
function calculateMidRailWidth() {
    var wid = 500;
    //set default midrail width enough for two images and whitespace
    var x = a10.browser.innerDimension()[0];
    var wlr = 230;
    //width left rail
    var wrr = 250;
    //width right rail
    //if bigger than default
    if ((x - wlr) > wid) {
        if (_hasRRContent) {
            //width is screen - left and right rail width
            wid = x - (wlr + wrr);
        } else {
            //width is screen - left rail width
            wid = x - wlr - 20;
            //20 is for scroll bar width
        }
        if (_RRContentBottom) {
            wid = x - wlr;
        }
    }
    return wid;
}

/**
 * add or subtract tiles based on available space
 */
function arrangeTiles(_maxcols, _maxrows) {

    setMidRailWidth();

    var areaWidth = calculateMidRailWidth();

    var i;
    var tileWidth = 173;
    //default
    var tileHeight = 216;
    //default
    var minRows = 2;
    var minCols = 2;
    var maxRows = ('undefined' == typeof(_maxrows))?5:_maxrows;
    var maxCols = ('undefined' == typeof(_maxcols))?18:_maxcols;
    var maxImages = 36;
    var noImagesCalled = 12;
    var areaHeight = 500;
    //default - there is approx 500px height available for images in 1024x768
    var headerHeight = 150;
    //approx header height IE
    var pageSize = 12;
    //default
    var initImage = "sh/i/i.gif";

    //width and height of tiles
    if (typeof _tileWidth != "undefined") {
        tileWidth = _tileWidth;
    }

    if (typeof _tileHeight != "undefined") {
        tileHeight = _tileHeight;
    }

    //totalTileCount - number of images called by application, is set in the pictureGridCombined.tag
    if (typeof _totalTileCount != "undefined") {
        noImagesCalled = _totalTileCount;
    }
    var noCols = Math.floor(areaWidth / tileWidth);
    if (noCols > maxCols) {
        noCols = maxCols;
    }
    if (noCols < minCols) {
        noCols = minCols;
    }

    //available height
    var availHeight = a10.browser.innerDimension()[1] - headerHeight;
    areaHeight = availHeight;


    //if rr is longer use that height
    if ($('rightRail')) {
        var rr = $('rightRail');
        var rrHeight = rr.offsetHeight;
        if (rr.offsetHeight > areaHeight) {
            areaHeight = rr.offsetHeight;
        }
    }

    //noRows depends on available height
    var noRows = Math.ceil(areaHeight / tileHeight);
    //Math.floor(noImagesCalled/noCols);
    if (noRows > maxRows) {
        noRows = maxRows;
    }
    if (noRows < minRows) {
        noRows = minRows;
    }
    

    //no of available spaces for tiles
    pageSize = noRows * noCols;
    if (pageSize > maxImages) {
        //max 36 called
        pageSize = maxImages;
        //if not on last page reduce cols to fill rows completely
        if (noImagesCalled < noRows) {
            noCols = 1
        } 
    }

    //calculate padding
    var spareWidth = areaWidth - (noCols * tileWidth);
    var spareWidthPerBox = spareWidth / noCols;
    var padding = Math.floor(spareWidthPerBox / 2);


    for (i = 0; i < noImagesCalled; i++) {
        //clear spacing
        document.getElementById("picBox" + i).style.marginRight = '0px';
        document.getElementById("picBox" + i).style.clear = 'none';
    }

    for (i = 0; i < noImagesCalled; i++) {

        //show or hide tiles to make full rows
        if (i < pageSize) {
            document.getElementById("picBox" + i).style.display = 'block';
            document.getElementById("picBox" + i).style.visibility = 'visible';
        } else {
            document.getElementById("picBox" + i).style.display = 'none';
            document.getElementById("picBox" + i).style.visibility = 'hidden';
        }

        //add right spacing each tile in row apart from last
        if ((i % noCols) != noCols - 1) {
            document.getElementById("picBox" + i).style.marginRight = spareWidthPerBox + 'px';
        }
    }

    for (i = 0; i < noImagesCalled; i++) {
        //set image src
        if (i < pageSize) {
            if (document.getElementById("image" + i).src.indexOf(initImage) != -1) {
                //replace with correct thumbnail
                document.getElementById("image" + i).src = _images[i];
            }
        }
    }

    writeShowingResults(pageSize);
    writePaging(pageSize);
}

function writeShowingResults(pageSize) {
    var firstResult = 0;
    var lastResult = 0;
    if (typeof _firstTileIndex != "undefined" && _firstTileIndex != 0) {
        firstResult = _firstTileIndex;
    }

    lastResult = firstResult + pageSize;
    //result sets smaller than page size
    if ((typeof _totalTileCount != "undefined")) {
        if (_totalTileCount < pageSize) {
            lastResult = firstResult + _totalTileCount;
        }
    }

    if ($('indexFirst')) {
        var first = $('indexFirst')
        first.innerHTML = firstResult + 1;
    }
    if ($('indexLast')) {
        var first = $('indexLast')
        first.innerHTML = lastResult;
    }

}

function writePaging(pageSize) {
    //link URL --channel specific
    var pagingStrip = $('ps');
    if (!pagingStrip) {
        return;
    }
    if(typeof _currentChannel != "undefined"){
        if(_currentChannel == 'img'){
            var params = ImageChannel.getSearchParams();
            url = _baseUrl + "/pictures?" + a10.browser.buildParamString(params);
        }else if(_currentChannel == 'vid'){
            var params = VideoChannel.getSearchParams();
            url = _baseUrl + "/video?" + a10.browser.buildParamString(params);
        }
    }
    if((typeof _psQuerySource != "undefined") && (typeof _psQueryID != "undefined")){
        url += "&qsrc=" + _psQuerySource + "&qid=" + _psQueryID;
    }
    if ((typeof _psSiteID != "undefined") && _psSiteID != "") {
         url += "&siteid=" + _psSiteID;
    }
    if((typeof _psClusterID != "undefined")){
        url += "&clfid=" + _psClusterID;
    }

    var startIndex = (typeof _firstTileIndex != "undefined" && _firstTileIndex != 0) ? _firstTileIndex : 0;

    var maxImages = 320;
    if((typeof _totalAvailable != "undefined")){
        if((_totalAvailable < maxImages) && _totalAvailable !=0){
            maxImages = _totalAvailable;
        }
    }

    generatePagingStrip(url, startIndex, pageSize, maxImages, _psBack, _psForward);
    
}

function generatePagingStrip(url, startIndex, pageSize, maxImages, backLabel, forwardLabel) {

    var currentPage = 1;
    var maxPages = 10;
    var pagingHTML = '';
    var i = 1;
    var startIndexHTML = '';
    var pageHTML = '';
    var pageFirst = 1;
    var pageLast = 10;
    var shift = 0;

    var numPages = Math.ceil(maxImages/pageSize);

    //if pageSize = 16 then _firstTileIndex of 0 = page 1, _firstTileIndex of 1 to 15 = page 2 etc
    currentPage = Math.ceil((startIndex + pageSize)/pageSize);

    //if the startIndex is offset from the default there may be an extra page
    //start index of last page
    var lpStartIndex = startIndex + ((numPages - currentPage) * pageSize);
    //offset pages && last page does not include all images
    if(((startIndex % pageSize) != 0) && ((lpStartIndex + pageSize) <  maxImages)){
        numPages += 1;
    }

    //only display 10 page links, calculate start and finish index
    if(numPages > 10){
        pageFirst = currentPage - 5;
        pageLast = currentPage + 4
        if(pageFirst < 1){
            shift = Math.abs(pageFirst) + 1;
            pageFirst = pageFirst + shift;
            pageLast = pageLast + shift;
        }
        if(pageLast > numPages){
            shift = pageLast - numPages;
            pageFirst = pageFirst - shift;
            pageLast = pageLast - shift;
        }
    }else{
        if(numPages < pageLast){
            pageLast = numPages;
        }
    }

    var pagingStrip = $('ps');
    if(pagingStrip) {

        //no paging for single results page
        if(pageLast == 1){
            pagingHTML = "";
        }else{
            if(currentPage > 1){
                startIndexHTML = '&pstart=' + (startIndex - pageSize);
                pageHTML = '&page=' + (currentPage - 1);
                pagingHTML += '&#160;&#160;<a class="KL1 b" style="text-decoration:none" href="' + url + startIndexHTML + pageHTML + '">'+backLabel +'</a>';
            }
            else {
                pagingHTML += '&#160;&#160;<span class="KT2 b">'+backLabel +'</span>';
            }
            pagingHTML += '<ul>';
            for (i=pageFirst;i<=pageLast;i++){

                if(i==currentPage){
                    pagingHTML += '<li id="cur" class="KT2 b">';
                    if (i<10) {
                        pagingHTML += '&#160;';
                    }
                    pagingHTML += '&#160;' + i + '&#160;&#160;</li>';
                }else{
                    var diff = i - currentPage;
                    var pageStartIndex = (startIndex + (diff * pageSize));
                    if(pageStartIndex < 0){pageStartIndex = 0;}
                    startIndexHTML = '&pstart=' + pageStartIndex;
                    pageHTML = '&page=' + (currentPage + diff);
                    pagingHTML += '<li><a class="pl KL1 b" style="text-decoration:none" href="' + url + startIndexHTML + pageHTML + '">'
                    if (i<10) {
                        pagingHTML += '&#160;';
                    }
                    pagingHTML += '&#160;' + i + '&#160;&#160;</a></li>';
                }

            }
            pagingHTML += '</ul>';
            if(currentPage != numPages){
                startIndexHTML = '&pstart=' + (startIndex + pageSize);
                pageHTML = '&page=' + (currentPage + 1);
                pagingHTML += '<a class="KL1 b" style="text-decoration:none" href="' + url + startIndexHTML + pageHTML + '">&#160;'+forwardLabel +'</a>';
            }
            else {
                pagingHTML += '<span class="KT2 b">'+ forwardLabel +'</span>';
            }
        }

        pagingStrip.innerHTML = pagingHTML;
    }
}


window.onscroll = scrollHandler;

// Scroll the sidebar along with the page on horizontal scroll.
function scrollHandler() {
    var sidebarPositionStyle;

    var lr = document.getElementById("leftRail");
    if (lr) {
        if (window.getComputedStyle) {  // Standard-compliant browser
            sidebarPositionStyle = window.getComputedStyle(document.getElementById("leftRail"), null).position;
        } else if (document.body.currentStyle) {  // IE
            sidebarPositionStyle = document.getElementById("leftRail").currentStyle.position;
        } else if (document.defaultView && document.defaultView.getComputedStyle) { //safari
            sidebarPositionStyle = document.defaultView.getComputedStyle(document.getElementById("leftRail"), "").getPropertyValue("position");
            if (sidebarPositionStyle == 'fixed') {
                document.getElementById("leftRail").style.left = -document.body.scrollLeft + "px";
                return;
            }
        }

        if (sidebarPositionStyle == 'fixed') {
            lr.style.left = -document.documentElement.scrollLeft + "px";
        }
    }
}

function saPlusFormSubmit(form, p) {
    var selects,sel,io,text,link;
    selects = form.getElementsByTagName("select");
    if (selects && selects.length > 0) {
        sel = selects[0];
        /* select object */
        io = sel.selectedIndex;
        opt = sel.options[io];
        /*selected option*/
        text = opt.text.replace(/^\s*/, '').replace(/\s*$/, '');
        /*//trim*/
        /*USERCHOICE in extra logging is a placeholder for selected link text (saPlusForm.tag)*/
        /*p.ex = p.ex.replace('USERCHOICE', text);*/
        p.u = opt.value;
        /* selected option's value is destination url */
        p.pt = text;
        /* selected option's text is pick text*/
        location = _RP(p).replace(/&qs=\d*/, "&qs=255");
        /*go to redirect pick url with special qsrc*/
    }
    return false;
}

/*
 Updates value of textfield and move the cursor to the end of the textfield
 */
function setValue(input, value) {
    input.value = value;
    if (a10.browser.isSafari() && input.setSelectionRange) {
        input.setSelectionRange(input.value.length, input.value.length);
    }
}

/* Searches pictures channel by refresh the page
*/
function searchPic(event) {
    var params = ImageChannel.getSearchParams("false");
    var url = _baseUrl + "/pictures?" + a10.browser.buildParamString(params);
    // Append siteID if present    
    if ((typeof _psSiteID != "undefined") && _psSiteID != "") {
         url += "&siteid=" + _psSiteID;
    }
    top.window.location = url;
}

/* Searches pictures channel by refresh the page
*/
function searchVid(event) {
    var params = VideoChannel.getSearchParams("false");
    var url = _baseUrl + "/video?" + a10.browser.buildParamString(params);
    // Append siteID if present
    if ((typeof _psSiteID != "undefined") && _psSiteID != "") {
         url += "&siteid=" + _psSiteID;
    }
    top.window.location = url;
}


function moveDebugSection() {
    var divs = $('sapane').getElementsByTagName("div");
    for (var i = 0; i < divs.length; i++) {
        if (divs[i].id == 'debug') {
            if (a10.browser.isIE6()) {
                divs[i].style.marginLeft = "0px";
                document.body.lastChild.appendChild(divs[i]);
            } else {
                document.getElementById("bodi").appendChild(divs[i]);
            }
            break;
        }
    }
}

/**
 * Called when the iframe which calls the rr content is loaded
 *
 */
function rrLoaded(content) {

    //check the content
    if (content.indexOf("no_rr_content") >= 0) {
        //no content
        _hasRRContent = false;
        if ($("rightRail")) {
            $("rightRail").style.display = 'none';
        }
    } else {
        //has content
        _hasRRContent = true;
    }
    repositionRSA();
    if (document.getElementById("midRailMeasure")) {
        if ('undefined' == typeof(_isHP)) {
            arrangeTiles();
        }
        else if (_isHP) {
            arrangeTiles(3,2);
        }

    }
}

function rightRailFailed(request) {

}

function rightRailRetrieved(request) {
    var html = request.responseText;
    //cache the content
    document.getElementById('rrcontent').value = html;

    if (document.getElementById('sapane')) {
        setTimeout(setRightRailContent, 10);
        //using set timeout instead of a direct call because IE some times breaks on setting the innerHTML
        repositionRSA();

        //have function in top document that caches the content
    } else {
        _rrCached = true;
    }
    rrLoaded(html);
}

function fetchRighRail() {
    var rr = document.getElementById("rrcontent");
    if (rr) {
        var cacheContent = rr.value;
        if (cacheContent == "init") {
            var location = window.location + "";
            var urlPrefix = location.substring(0, location.indexOf("/web"));
            //assuming only web channel has right rail
            a10.ajax.get(urlPrefix + _rr2Url, rightRailRetrieved, rightRailFailed);
        } else {
            //there is rr content
            _hasRRContent = cacheContent.indexOf("no_rr_content") < 0;

            if (document.getElementById("midRailMeasure")) {
                arrangeTiles();
            }

            if (document.getElementById("sapane")) {
                document.getElementById("sapane").innerHTML = cacheContent;
                a10.anim.fadeIn("sapane", 0.5, fadeInDone);
            } else {
                _rrCached = true;
            }
        }
    }
}

/**
 * Get RSA divs from the given container element
 */
function getRSAs(elt) {
    var divs = new Array();
    var childNodes = elt.childNodes;
    if (childNodes) {
        for (var i = 0; i < childNodes.length; i++) {
            if (childNodes[i].tagName && childNodes[i].tagName.toLowerCase() == "table" && childNodes[i].id.indexOf("containerRRSA_") == 0) {
                divs.push(childNodes[i]);
            }
        }
    }
    return divs;
}

/**
 * Repositions RSAs depending on the horizontal width of the browser. If the resolution is wider or equal than 1024,
 * RSAs will appear on the right rail. Otherwise, it'll be shifted to the bottom of the screen
 */
function repositionRSA() {
    if (_hasRRContent) {
        var winWidth = a10.browser.innerDimension()[0];
        //990 not 1024 to allow some space for scrollbar and window edge
        if (winWidth >= 995) {
            _RRContentBottom = false;
            var error=document.getElementById('error');
            if (error && winWidth < (644 + 230 + 240) )
            {
            	$('rightRail').style.right =(winWidth-644-230-240) +  "px";
            }
            else
            {
            	$('rightRail').style.right =0;
            }
            
            if ($('bsa')) {
                var rsaContainer = $('bsar1');
                var divs = getRSAs(rsaContainer);

                rsaContainer = $('bsar2');
                divs = divs.concat(getRSAs(rsaContainer));

                for (var i = 0; i < divs.length; i++) {
                    divs[i].parentNode.removeChild(divs[i]);
                    $('rr_sa_container').appendChild(divs[i]);
                }

                if (divs.length > 0) {
                    $('bsa').style.display = "none";
                }

                var firstContainer = $("containerRRSA_0");

                if (firstContainer) {
                    firstContainer.rows[0].cells[1].style.borderTop = "none 0px #FFF";
                    firstContainer.rows[0].cells[2].style.borderTop = "none 0px #FFF";
                }
            }
            
        } else {
            _RRContentBottom = true;
            if ($('rr_sa_container')) {

                var rsaContainer = $('rr_sa_container');
                var divs = getRSAs(rsaContainer);

                //distribute rsas between 2 cols.. left side gets the extra left over
                var leftCount = Math.ceil(divs.length / 2);
                var bsaCol1 = $('bsar1');
                var bsaCol2 = $('bsar2');
                for (var i = 0; i < leftCount; i++) {
                    divs[i].parentNode.removeChild(divs[i]);
                    bsaCol1.appendChild(divs[i]);
                }

                for (var i = leftCount; i < divs.length; i++) {
                    divs[i].parentNode.removeChild(divs[i]);
                    bsaCol2.appendChild(divs[i]);
                }

                if (divs.length > 0) {
                    $('bsa').style.display = "";
                }

                var firstContainer = $("containerRRSA_0");

                if (firstContainer) {
                    firstContainer.rows[0].cells[1].style.borderTop = "solid 1px #C1C1C1";
                    firstContainer.rows[0].cells[2].style.borderTop = "solid 1px #C1C1C1";
                }
            }
        }

    }
}

//adds enter to submit support to form input elements to hack around IE issues with hidden forms
function addInputSubmitEvent(form, input) {
    input.onkeydown = function(e) {
        e = e || window.event;
        if (e.keyCode == 13) {
            if (form.onsubmit && !form.onsubmit()) {
                return false;
            }
            form.submit();
            return false;
        }
    };
}


function showAdvSearch(title) {
    var dim = a10.browser.innerDimension();

    if (a10.browser.isIE()) {
        var form = $('adv_form');
        //ie doesn't handle enter to submit for forms properly when form is initially hidden
        var inputs = form.getElementsByTagName('input');

        for (var j = 0; j < inputs.length; j++) {
            addInputSubmitEvent(form, inputs[j]);
        }
    }

    if (dim[0] <= 800 && dim[1] <= 600) {
        return true;
    } else {
        advSearchDialog.show();
        populateFindFields($('q').value);
        return false;
    }
}

function validateASQuery() {
    for (var i = 0; i < 4; i++) {
        var query = document.getElementsByName("q" + i);
        if (query[0] && query[0].value.replace(/^\s+|\s+$/, '') != "") {
            return true;
        }
    }
    return false;
}

function windowSizeChanged() {
    repositionRSA();
    scrollHandler();

    //if pics channel
    if (document.getElementById("midRailMeasure")) {
        if ('undefined' == typeof(_isHP)) {
            arrangeTiles();
        }
        else if (_isHP) {
            arrangeTiles(3,2);
        }
        
    }

	//draggable map sa
	if (window.samap) {
		window.resizeSaMapContainer();
		window.samap.autoResize();
	}
}

// START of code from webadvancedsearch.js
function populateFindFields(query) {
    var findFields = new Array();
    findFields = new Array();
    findFields[0] = findFields[1] = findFields[2] = findFields[3] = '';
    var numOR = 0;
    var numPhrases = 0;
    var lastNonMinusTokenIsPhrase = false;
    var token = "";
    var originalQueryWithoutMinusTokens = "";

    var regex = /("[^"]+")|(\S+)/g;
    var preTokens = query.match(regex);
    var tokens = new Array();

    if (!preTokens) {//if can't parse, just set as first value
        document.getElementById('q0').value = query;
        return;
    }

    for (var i = 0; i < preTokens.length; i++) {
        token = preTokens[i];
        if (token.indexOf("last:") == 0 || token.indexOf("lang:") == 0 || token.indexOf("site:") == 0 || token.indexOf("inurl:") == 0 || token.indexOf("intitle:") == 0) {
            continue;
        } else if (token == "OR") {
            numOR++;
            lastNonMinusTokenIsPhrase = false;
        } else if (isPhrase(token)) {
            numPhrases++;
            lastNonMinusTokenIsPhrase = true;
        } else if (token.indexOf("-") != 0) {
            lastNonMinusTokenIsPhrase = false;
        }
        tokens.push(token);

        if (token.indexOf("-") != 0) {
            originalQueryWithoutMinusTokens += (" " + token);
        }
    }

    // now tokens contains the list of words and phrases that make up the original query

    // -Detect presence of "OR"
    if (numOR >= 1) {
        var numClauses = numOR + 1;
        var numOccurrences;
        var nonORTokens = new Array();
        var nonORTokenOccurrences = new Array();
        for (var i = 0; i < tokens.length; i++) {
            token = tokens[i];
            if (token != "OR") {
                if (nonORTokenOccurrences[token]) {
                    nonORTokenOccurrences[token]++;
                } else {
                    nonORTokenOccurrences[token] = 1;
                    nonORTokens.push(token);
                }
            }
        }

        var constructableWithORField = true;
        var numSingleOccurrence = 0;
        for (var i = 0; i < nonORTokens.length; i++) {
            token = nonORTokens[i];
            numOccurrences = nonORTokenOccurrences[token];
            if (numOccurrences == 1) {
                numSingleOccurrence++;
            } else if (numOccurrences != numClauses) {
                constructableWithORField = false;
                break;
            }
        }


        if (numSingleOccurrence != numClauses) {
            constructableWithORField = false;
        }

        if (constructableWithORField) {
            for (var i = 0; i < nonORTokens.length; i++) {
                token = nonORTokens[i];
                numOccurrences = nonORTokenOccurrences[token];
                if (numOccurrences == 1) {   // put it in 3rd field
                    findFields[2] += " " + token;
                } else {
                    if (token.indexOf('-') == 0) { // preceded by "-" so put it in 4th field
                        findFields[3] += " " + token.substring(1);
                    } else { // put everything else in 1st field
                        findFields[0] += " " + token;
                    }
                }
            }
        } else {
            for (var i = 0; i < tokens.length; i++) {
                token = tokens[i];
                findFields[0] += " " + token;
            }
        }
    } else {
        /* -If "OR" is NOT present, put all words preceded by "-" into 4th field, put the phrase into 2nd field if
            there's exactly 1 phrase, put all remaining items in 1st field */

        for (var i = 0; i < tokens.length; i++) {
            token = tokens[i];
            if (token.indexOf("-") == 0) { // preceded by "-" so put it in 4th field
                findFields[3] += " " + token.substring(1);
            } else if (isPhrase(token) && numPhrases == 1 && lastNonMinusTokenIsPhrase) { // only put a phrase in 2nd field if it's the only phrase and that it's the last non-minus token
                findFields[1] = token.replace(/\"/g, '');
            } else { // put everything else in 1st field
                findFields[0] += " " + token;
            }
        }
    }

    var isComplexQuery = false;

    for (var i = 0; i < 4; i++) {
        findFields[i] = a10.util.trim(findFields[i]);
        if (i > 0 && findFields[i] != "") {
            isComplexQuery = true;
        }
    }

    if (isComplexQuery) {
        // since query is constructed in a complex way, we want to make sure the ordering of the non-minus tokens is the same as the original query
        var minusField = findFields[3];
        findFields[3] = "";
        var constructedQueryWithoutMinusTokens = a10.util.trim(buildAdvancedQueryFromFindFields(findFields));
        if (constructedQueryWithoutMinusTokens == a10.util.trim(originalQueryWithoutMinusTokens)) {
            // at this point, everything looks okay, so restoring value of the minus field
            findFields[3] = minusField;
        } else {
            findFields[0] = findFields[1] = findFields[2] = findFields[3] = "";

            for (var i = 0; i < tokens.length; i++) {
                token = tokens[i];
                findFields[0] += " " + token;
            }
            findFields[0] = a10.util.trim(findFields[0]);
        }
    }

    for (var i = 0; i < 4; i++) {
        document.getElementById('q' + i).value = findFields[i];
    }
}

function isPhrase(token) {
    if (token.length < 2)    // if so, it can't even contain the 2 quotes
        return false;
    else return (token.charAt(0) == '"' && token.charAt(token.length - 1) == '"');
}

function addQuotes(checkString, requireSpace) {
    var returnString = checkString;
    if (checkString != "") {
        //if spaces required and not present, do nothing, else continue on to add quotes
        if (requireSpace && checkString.indexOf(" ") < 0) {
            return returnString;
        }
        //if string doesn't have both start and end quote, add them
        if (checkString.charAt(0) != '"' && checkString.charAt(checkString.length - 1) != '"') {
            returnString = '"' + returnString + '"';
        }
    }
    return returnString;
}

function buildAdvancedQueryFromFindFields(findFields) {
    var advancedQueryFromFindFields = "";
    var clause = "";
    if (findFields[0] != "") { // all the words
        clause += (" " + findFields[0]);
    }
    if (findFields[1] != "") { // exact phrase
        clause += (" " + addQuotes(findFields[1], false));
        // add quotes even for single word
    }
    if (findFields[3] != "") { // without the words
        var withoutWords = findFields[3].split(" ");
        for (var i = 0; i < withoutWords.length; i++)
            clause += (" -" + withoutWords[i]);
    }

    if (findFields[2] != "") { // at least one of the words
        var trimmedClauseWithSpace = a10.util.trim(clause);
        if (trimmedClauseWithSpace != "")
            trimmedClauseWithSpace += " ";
        var atLeastOneOfTheWords = findFields[2].split(" ");
        advancedQueryFromFindFields += (" " + trimmedClauseWithSpace + atLeastOneOfTheWords[0]);
        for (var i = 1; i < atLeastOneOfTheWords.length; i++) {
            advancedQueryFromFindFields += (" OR " + trimmedClauseWithSpace + atLeastOneOfTheWords[i]);
        }
    } else {
        advancedQueryFromFindFields += clause;
    }
    return a10.util.trim(advancedQueryFromFindFields);
}
// END of code from webadvancedsearch.js

//used by lrail_start.jsp and lrail_start_3152.jsp, in lieu of <input> tag b/c of TRES-3414
function submitQueryBoxForm() {
    // SS qsrc value defaults to 2352
    if(document.getElementById("q").value == "")
    {
       window.close();
     }
    
    if (a10.ss.selectedIndex != -1) {
        document.getElementById("qsrc").value = a10.ss.ssQsrcDefault;
    }

    if (document.ft) {
        document.ft.submit();
    }
}

//updates qsrc when input is populated by zoom or search suggestion via up/down key
function updateQsrc() {

    if (a10.ss.selectedIndex != -1) {
        document.getElementById("qsrc").value = a10.ss.ssQsrcDefault;
    }
}

/**
 * Close all popup UI elements, such as drop down menu, bubbles, etc.  This function
 * is often invoked before showing a pop up element, to ensure there's only one
 * popup on screen at all time.  All pop up UI elements must include a call to
 * its closing function within this function.
 */
ask.closeAllPopUps = function() {
    
}


var queryMap;

function fillQueryMap() {
    if ("undefined" == typeof(queryMap)) {
        queryMap = new Array();
        var query = window.location.search.substring(1);
        var parms = query.split('&');
        for (var i = 0; i < parms.length; i++) {
            var pos = parms[i].indexOf('=');
            if (pos > 0) {
                var key = parms[i].substring(0, pos);
                queryMap[key] = parms[i].substring(pos + 1);
            }
        }
    }
}

function setFilterOption(name) {
    var select = document.getElementById(name);
    if ("undefined" != typeof(select) && null != select) {
        fillQueryMap();
        var selected = false;
        for (var i = 0; i < select.options.length; ++i) {
            var query = queryMap[name];
            var value = "undefined" != typeof(query) && query == select.options[i].value;
            select.options[i].selected = value;
            if (value) {
                selected = true;
            }
        }
        if (!selected && select.options.length > 0) {
            select.options[0].selected = true;
        }
    }
}

function setImageColor() {
    setFilterOption("imgc");
}

function setImageSize() {
    setFilterOption("imgs");
}

function setImageType() {
    setFilterOption("imgt");
}

function setImageFilters() {
    setImageSize();
    setImageType()
    setImageColor()
}

function setRRSAImageSize(img, width, height, divId) {
    var div = document.getElementById(divId);
    if (img.width != 0 && img.height != 0) {
        var offsetX = Math.floor((img.width - width) / 2);
        var offsetY = Math.floor((img.height - height) / 2);
        div.style.marginLeft = (-offsetX) + "px";
        div.style.marginTop = (-offsetY) + "px";
        div.style.width = img.width + "px";
        div.style.height = img.height + "px";
    }
    div.style.visibility = "visible";
}

/**
 * Call this function to sync the params (o,l,siteid) for the advanced search modal dialog on the homepage and reply pages
 * with the values of the hidden input fields that were set by homepage.jsp and lrail_start respectively.
 * Nelson - There are two definitions of this function, one in hp.js and one in site_na.js. Need both for adv search in homepage
 * and reply pages.
 * TO DO - After consolidate into a new file of shared functionality between homepage and reply pages.
 */
function syncAdvSearchParams(form_name){
    var origin = $F('o');
    var partnerID = $F('l');
    var siteID = $F('siteid');
    var adv_form = document.getElementById(form_name);

    if( adv_form.o.value  != origin ){
        adv_form.o.value = origin;
    }

    if( adv_form.l.value  != partnerID ){
        adv_form.l.value = partnerID;
    }

    if( 'siteid' in adv_form && adv_form.siteid.value != siteID){
        adv_form.siteid.value = siteID;
    }
}

//Start the current time widget module :
function currentTimeLoaded() {
    if (typeof ask.currentTime != 'undefined') {
        ask.currentTime.init();
        return;
    }
    // Keep trying...
    setTimeout(currentTimeLoaded, 1000);
}

if (typeof ask.currentTime != 'undefined') {
    ask.currentTime.init();
} else {
    // Try again in one second...
    setTimeout(currentTimeLoaded, 1000);
}


