﻿function GetSelectedGeoAreaIds()
{   
    var geoAreaIds = '';
    var p = /[?&]GeoAreaID=((?:,?\d+)+)/.exec(window.location.href)						                        
    if (p)
        geoAreaIds = p[1];
    if (geoAreaIds == ''){
        ss = getCookie('ss');    
        p = /g=((?:,?\d+)+)/.exec(ss ? ss : '');
        if(p)
            geoAreaIds = p[1];
    }
    //Cookie is the preferred selection on the settings page
    if (window.location.href.indexOf('Settings.aspx') > -1 || geoAreaIds == ''){
        gc = getCookie('UserGeoAreaID');
        if(gc)
            geoAreaIds = gc;
    }
    if (geoAreaIds == '' || geoAreaIds == 'undefined') {
        defaultGA = (window.location.host.indexOf('homes.point2.com') != -1) ? '35611' : '101';
        geoAreaIds = defaultGA;
    }
    return geoAreaIds;
}

function SetSelectedGeoAreaIds(g)
{                                 
    document.getElementsByName('GeoAreaID')[0].value = g;
}

function GetPrunedGeoAreaIds()
{
    var geoAreaIds = '';
    var p = /[?&]XGeoAreaID=((?:,?\d+)+)/.exec(window.location.href)						                        
    if (p)
        geoAreaIds = p[1];
    if (geoAreaIds == ''){
        ss = getCookie('ss');
        p = /xg=((?:,?\d+)+)/.exec(ss ? ss : '');
        if (p)
            geoAreaIds = p[1];
    }
    return geoAreaIds;
}

function setupColumnView() {		                    
    var initParam = GetSelectedGeoAreaIds().split(',')[0];
    try
    {
        GetInitScript('/SearchGeoAreaAncestryProvider.aspx?GeoAreaID=' + initParam, function(data) { eval(data); });
    }
    catch (ex)
    {						                    
        GetInitScript('/SearchGeoAreaAncestryProvider.aspx?GeoAreaID=' + initParam, function(data) { eval(data); });
    } 
    //the next line needs to be revised when we turn on multiselect 
    SetSelectedGeoAreaIds(initParam);	                                           
    cv.initialized = true;
} 

var cv;
var __colviewTimer;
function initColumnView(cvid, onselid, onaddid, ondelid, addvalid, count, multiselectEnabled, heirarchicalSelection, onSelStateChangedId, statePath) {
    count++;
    var success = false;
    if (count < 10) 
    {
        try 
        {
            dh = new DataHolder();
            cv = new ColumnView(cvid, dh);
            success = true;
        } 
        catch(ex) 
        {
            setTimeout('initColumnView(\''+cvid+'\', \''+onselid+'\', \''+onaddid+'\', \''+ondelid+'\', \''+addvalid+'\', \''+count+'\', \'' + multiselectEnabled + '\', \'' + heirarchicalSelection + '\', \'' +onSelStateChangedId+ '\', \'' + statePath +')', 1000);
        }
    }
    if(success) {
        // now that it's loaded set it up
        dh.setView(cv);
        var root = dh.getRootNode();
        lastNode = root;
        cv.setColumnCount(3);
        cv.setViewOverlap(15);
        cv.setMultiSelectEnabled(multiselectEnabled,heirarchicalSelection);
        dh.sendCallback = function(arg, callback, context) { arg = parseIdFromPath(arg); AsyncRequest(arg, callback, context, '/SearchGeoAreaProvider.aspx?GeoAreaID='); };
        cv.init();
        cv.setHiddenFieldId('columnViewData');
        if (onselid != '')
            cv.setEventId('onselect', onselid);
        if (onaddid != '')
            cv.setEventId('onadd', onaddid);
        if (ondelid != '')
            cv.setEventId('ondel', ondelid);
        if (addvalid != '')
            cv.setEventId('addvalidate', addvalid);	
        if (onSelStateChangedId != '')
            cv.setEventId('selStateChanged', onSelStateChangedId);	
            
        if(cv.multiSelectEnabled && GetSelectedGeoAreaIds() != '') { 
            root.hasSelectedDescendants = true;
            statePath += 'GeoAreaID=' + GetSelectedGeoAreaIds();
            statePath += '&XGeoAreaID=' + GetPrunedGeoAreaIds();
            __colviewTimer = setTimeout('setupColumnView()',4000);
            GetInitScript(statePath, function(data) { eval(data); currentState=cv.renderSelectionState(); clearTimeout(__colviewTimer); if(!cv.initialized){setupColumnView();};});
        } else {
            setupColumnView();
        }
    }
}
