var MAX_SORTABLE_RESULTS = 500;

/**************************************/
/*    Utility Classes & Functions     */
/**************************************/
String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g,"");
}

String.prototype.encode = function() {
    return encodeURIComponent(this);
}

if(!Array.indexOf) {
    Array.prototype.indexOf = function(obj){
        for(var i=0; i<this.length; i++){
            if(this[i]==obj){
                return i;
            }
        }
        return -1;
    }
}

function Querystring_g(qs) {
    // optionally pass a querystring to parse
    this.params = new Object();
    this.get=Querystring_get_g;

    if (qs == null)
        qs=location.search.substring(1,location.search.length);



    if (qs.length == 0)
        return;

    qs = qs.replace(/\+/g, ' ');
    var args = qs.split('&'); // parse out name/value pairs separated via &

    // split out each name=value pair
    for (var i=0;i<args.length;i++) {
        var pair = args[i].split('=');
        var name = pair[0];
        var value = (pair.length==2) ? encodeURI(unescape(pair[1])) : name;
        this.params[name] = value;
    }
}

function Querystring_get_g(key, default_) {
    var value=this.params[key];
    return (value!=null) ? value : default_;
}

function GetValueStringFromSelectedCheckboxes_g(wrapDivId) {
    var myDiv = document.getElementById(wrapDivId);

    var selectedValues = new Array();
    for( var i = 0; myDiv.childNodes[i]; i++ ) {
        if(myDiv.childNodes[i].tagName == "LI") {
            if (myDiv.childNodes[i].childNodes[0].type && myDiv.childNodes[i].childNodes[0].type == "checkbox" && myDiv.childNodes[i].childNodes[0].checked)
                selectedValues.push(myDiv.childNodes[i].childNodes[0].value);
        }
    }

    return selectedValues.toString();
}

function GetValueStringFromMultiSelect_g(selectId) {
    var selectObj = document.getElementById(selectId);

    var selectedValues = new Array();
    for (var i = 0; i < selectObj.options.length; i++)
    {
        if (selectObj.options[i].selected)
            selectedValues.push(selectObj.options[i].value);
    }

    return selectedValues.toString();
}

function ClearMultiSelection_g(selectId) {
    var selectObj = document.getElementById(selectId);
    for (var i = 0; i < selectObj.options.length; i++)
        selectObj.options[i].selected = false;
}

function populateCheckboxes_grant(wrapperDivId, selectedValues) {
    var check = false;
    var myDiv = document.getElementById(wrapperDivId);
    var aSelectedValues = selectedValues.split(',');
    for( var i = 0; myDiv.childNodes[i]; i++ ){
        if(myDiv.childNodes[i].tagName == "LI") {
            if (myDiv.childNodes[i].childNodes[0].type && myDiv.childNodes[i].childNodes[0].type == "checkbox"){
                if (aSelectedValues.indexOf(myDiv.childNodes[i].childNodes[0].value) > -1) {
                    myDiv.childNodes[i].childNodes[0].checked = true;
                    myDiv.childNodes[i].className = 'visible';
                    check = true;
                }
            }
        }
    }
    return check;
}

// when category checkbox is present
function populateCategoryCheckboxes_g(selectedValues) {
    var aSelectedValues = selectedValues.split(',');
    for(var i=0;i<aSelectedValues.length;i++) {
        var cat = document.getElementById(aSelectedValues[i]);
        if(cat != null && cat.type=="checkbox")
            cat.checked=true;

    }
}

// when subtype checkbox is present
function populateTypeCheckboxes_g(selectedValues) {
    var aSelectedValues = selectedValues.split(',');
    for(var i=0;i<aSelectedValues.length;i++) {
        var type = document.getElementById('typeid_'+aSelectedValues[i]);
        if(type != null && type.type=="checkbox") type.checked=true;
    }
}



function GetValueStringFromCategoryCheckboxes_g(selectId) {
    var cat =document.getElementById(selectId);
    var catid = new Array();
    for( i=0; i<cat.childNodes.length; i++){
        if( cat.childNodes[i].tagName=="LI" && cat.childNodes[i].childNodes[0].type=='checkbox'){
            if(cat.childNodes[i].childNodes[0].checked)catid.push(cat.childNodes[i].childNodes[0].value);
        }
    }
    return catid;
}

function GetValueStringFromTypeCheckboxes_g(selectId) {
    var type = document.getElementById(selectId);
    var typeid = new Array();
    for( i=0; i<type.childNodes.length; i++){
        if( type.childNodes[i].tagName=="LI" ){
            for(j=0; j< type.childNodes[i].childNodes.length; j++){
                if( type.childNodes[i].childNodes[j].tagName=="UL"){
                    for(k=0; k<type.childNodes[i].childNodes[j].childNodes.length; k++)
                        if( type.childNodes[i].childNodes[j].childNodes[k].tagName=="LI" && type.childNodes[i].childNodes[j].childNodes[k].childNodes[0].type=='checkbox')
                            if(type.childNodes[i].childNodes[j].childNodes[k].childNodes[0].checked)typeid.push(type.childNodes[i].childNodes[j].childNodes[k].childNodes[0].value);
                }
            }
        }
    }
    return typeid;
}



/**************************************/
/*        GSA Helper  Functions       */
/**************************************/
function Submitform_g(form) {
    //get keywords
    var queryParam = 'q=' + document.getElementById("q").value.trim().encode();

    //get other selected parameters
    var catid = GetValueStringFromSelectedCheckboxes_g("pubTypeGroup");
    var ageid = GetValueStringFromSelectedCheckboxes_g("ageGroup");
    var genderid = GetValueStringFromSelectedCheckboxes_g("genderGroup");
    var ethnicityid = GetValueStringFromSelectedCheckboxes_g("ethnicityGroup");
    var popid = GetValueStringFromSelectedCheckboxes_g("popTarget");
    var locationid = GetValueStringFromSelectedCheckboxes_g("locationGroup");
    var regionid = GetValueStringFromMultiSelect_g("region");
    var pubdaterange = document.getElementById("pubDataRange").value;

    //build querystring
    var params = "";
    if (queryParam != "")
        params += '&' + queryParam;
    if (catid != "")
        params += '&catid=' + catid;
    if (popid != "")
        params += '&popid=' + popid;
    if (locationid != "")
        params += '&locationid=' + locationid;
    if (ethnicityid != "")
        params += '&ethnicityid=' + ethnicityid;
    if (genderid != "")
        params += '&genderid=' + genderid;
    if (ageid != "")
        params += '&ageid=' + ageid;
    if (regionid != "")
        params += '&regionid=' + regionid;
    if (pubdaterange != "")
        params += '&pubdate=' + pubdaterange;
    if (params.indexOf('&') == 0)
        params = params.substr(1, params.length - 1);

    //redirect to search
    location.href = 'search.jsp?' + params;
}

function NewBasicSearch_g() {
    var query = document.getElementById("q").value;

    location.href = 'search.jsp?q=' +  query.trim().encode();
}

function RefineSearch_Grants() {
    var refineQuery = "";
    if (document.getElementById("g_refine_q").value.trim() != "")
        refineQuery = ";" + document.getElementById("g_refine_q").value.encode();

    var regionid = GetValueStringFromMultiSelect_g("recipientregion");
    var pid = "";
    if(document.getElementById("g_refine_pa") != null)
        pid = GetValueStringFromSelectedCheckboxes_g("g_refine_pa");
    else { // only for program area island - no program area filter in left nav - pid must navigate through entire search
        var params = location.search; // get the query string parameters
        if(params != null && params != "" && params.indexOf("pid=") >= 0) {
            var subParams = params.substring(params.indexOf("pid=")+4); // get the values after 'pid=' i.e. start of pid
            if(subParams.indexOf("&") >=0) // check for immediate '&' i.e. end of pid
                pid = subParams.substring(0,subParams.indexOf("&"));
            else // when 'pid=' is last param in query string
                pid = subParams;
        } //inner if
    }//else

    // npo
    var npo = "";
    if(document.getElementById("g_refine_npo") != null && document.getElementById("g_refine_npo").checked)
        npo = document.getElementById("g_refine_npo").value;

    // grant number
    var gnumber = "";
    if(document.getElementById("refine_grantnumber") != null)
        gnumber = document.getElementById("refine_grantnumber").value;

    // grant number
    var gtitle = "";
    if(document.getElementById("refine_granttitle") != null)
        gtitle = document.getElementById("refine_granttitle").value;

    // grant award amount
     var awardamt = "";
    if(document.getElementById("refine_awardamount") != null)
        awardamt = GetValueStringFromSelectedCheckboxes_g("refine_awardamount");

    // grant award amount
     var status = "";
    if(document.getElementById("refine_status") != null)
        status = GetValueStringFromSelectedCheckboxes_g("refine_status");

    //award date
    var awarddate1 = document.getElementById("refine_awarddate1").value;
    var awarddate2 = document.getElementById("refine_awarddate2").value;

    //grant end date
    var grantenddate1 = "";
    if(document.getElementById("refine_grantenddate1") != null)
        grantenddate1 = document.getElementById("refine_grantenddate1").value;

    //featured grant
    var isfeatured = "";
    if(document.getElementById("refine_featuredgrant") != null && document.getElementById("refine_featuredgrant").checked)
        isfeatured = document.getElementById("refine_featuredgrant").value;

//    // grantmaking fund method
     var fundmethod = "";
    if(document.getElementById("refine_fundmethodGroup") != null)
        fundmethod = GetValueStringFromSelectedCheckboxes_g("refine_fundmethodGroup");
//
//
//    var granttype = GetValueStringFromMultiSelect_g("refine_granttypeRange");


    //get current querystring
    var querystringHash = new Querystring_g();

    querystringHash.params["regionid"] = regionid;
    querystringHash.params["pid"] = pid;
    querystringHash.params["npo"] = npo;
    querystringHash.params["grantnumber"] = gnumber; // fund id
    querystringHash.params["granttitle"] = gtitle;
    querystringHash.params["awardamount"] = awardamt;
    querystringHash.params["status"] = status;
    querystringHash.params["isfeatured"] = isfeatured;
    querystringHash.params["name"] = 'GRANTS';
    querystringHash.params["awarddate1"] = awarddate1;
    querystringHash.params["awarddate2"] = awarddate2;
    querystringHash.params["grantenddate1"] = grantenddate1;
    querystringHash.params["fundmethod"] = fundmethod;
//    querystringHash.params["granttype"] = granttype;

    querystringHash.params["start"] = "";
    if(document.getElementById("items") != null) querystringHash.params["num"] = document.getElementById("items").value;

    querystringHash.params["q"] = querystringHash.get("q","") + refineQuery;;

    var fullparams = "";
    for (var key in querystringHash.params) {
        if (querystringHash.params[key] != "")
            fullparams += "&" + key + "=" + querystringHash.params[key];
    }
    fullparams = fullparams.substr(1, fullparams.length - 1);

    //redirect to refine search
    if(fullparams == "") location.href = 'search.jsp';
    else location.href = 'search.jsp?' + decodeURI(fullparams);
}

function Navigate_g(startvalue) {
    var querystringHash = new Querystring_g();
    querystringHash.params["start"] = startvalue.toString();

    var fullparams = "";
    for (var key in querystringHash.params)
        fullparams += "&" + key + "=" + querystringHash.params[key];

    fullparams = fullparams.substr(1, fullparams.length - 1);

    //redirect to same search with specified start value
    location.href = 'search.jsp?' + decodeURI(fullparams);
    return false;
}

// when user change the sorting type from left filter's 'Sort Results' drop down
function SortResults_Grants() {
    var sortdir = '0';
    var sortBy = document.getElementById("sortResults").value;

    if(sortBy == 'PUBLICATIONDATE')
        sortdir = '1';

    var querystringHash = new Querystring_g();
    querystringHash.params["sort"] = sortBy.toString();
    querystringHash.params["sortdir"] = sortdir;
    querystringHash.params["start"] = "";

    var fullparams = "";
    for (var key in querystringHash.params)
    {
        if (querystringHash.params[key] != "")
            fullparams += "&" + key + "=" + querystringHash.params[key];
    }

    fullparams = fullparams.substr(1, fullparams.length - 1);
    location.href = 'search.jsp?' + decodeURI(fullparams);

    return false;
}

// when user click on any of the header for sorting
function SortHeader_g(metatagName)
{
    var querystringHash = new Querystring_g();
    var sort, sortdir;
    sort = querystringHash.get("sort","");
    sortdir = querystringHash.get("sortdir","");

    var newsort = "", newsortdir = "";
    newsortdir = '0';
    newsort = metatagName;
    if (metatagName == 'TITLE' && sort == 'TITLE' && (sortdir == '0' || sortdir == ''))
        newsortdir = '1';
    else if (metatagName == 'FUNDINSTCITY' && sort == 'FUNDINSTCITY' && (sortdir == '0' || sortdir == ''))
        newsortdir = '1';
    else if (metatagName == 'AMOUNTAWARDED' && sort == 'AMOUNTAWARDED' && (sortdir == '0' || sortdir == ''))
        newsortdir = '1';
    else if (metatagName == 'PUBLICATIONDATE' && sort == 'PUBLICATIONDATE' && sortdir == '0')
            newsortdir = '1';
        else if(metatagName == 'PUBLICATIONDATE' && sort != '' && sort != 'PUBLICATIONDATE') // default sorting for 'Publication Date' should be desc
                newsortdir = '1';
            else if(metatagName == 'PUBLICATIONDATE' && sort == '' && document.getElementById('DateHeader').className == 'desc') // when date is in desc order and used click on the header, date sorting should be asc
                    newsortdir = '0';
                else if(metatagName == 'PUBLICATIONDATE' && sort == '') // default sorting for 'Publication Date' should be desc
                        newsortdir = '1';

    var mySelect = document.getElementById("sortResults");
    for (var i = 0; i < mySelect.options.length; i++)
        mySelect.options[i].selected = (mySelect.options[i].value == newsort);

    querystringHash.params["sort"] = newsort;
    querystringHash.params["sortdir"] = newsortdir;
    querystringHash.params["start"] = "";

    var fullparams = "";
    for (var key in querystringHash.params) {
        if (querystringHash.params[key] != "")
            fullparams += "&" + key + "=" + querystringHash.params[key];
    }

    fullparams = fullparams.substr(1, fullparams.length - 1);
    location.href = 'search.jsp?' + decodeURI(fullparams);

    return false;
}


function OnLoadSearchResults_Grants() {

    //populate checkboxes with currently selected criteria
    var querystringHash = new Querystring_g();

    // check pid value coming from query string or hidden parameter 'pid' (in search.jsp)
    if (querystringHash.get("pid","") != "" && document.getElementById("g_refine_pa")!=null ) {
        moveToTop_g('G9');
        populateCheckboxes_grant("g_refine_pa", querystringHash.get("pid",""));
        activateBlock_g('g_refine_pa','link2g');
    }
    else if (document.getElementById("pid").value!= "" && document.getElementById("g_refine_pa")!=null ) {
        moveToTop_g('G9');
        populateCheckboxes_grant("g_refine_pa", document.getElementById("pid").value);
        activateBlock_g('g_refine_pa','link2g');
    }

    if(querystringHash.get("regionid","") != "") {
        moveToTop_g('G18');
        var regionValue = querystringHash.get("regionid","");
        var region = document.getElementById("recipientregion");
        for (var n = 0; n < region.options.length; n++) {
            if (region.options[n].value == regionValue) {
                region.options[n].selected = true;
            }
        }
        activateBlock_g('g_refine_recipientlocationGroup','link9g');

    }

    if (querystringHash.get("grantnumber","") != "" && document.getElementById("refine_grantnumber")!=null) {
        moveToTop_g('G22');
        document.getElementById("refine_grantnumber").value = querystringHash.get("grantnumber","");
    }

    if (querystringHash.get("granttitle","") != "" && document.getElementById("refine_granttitle")!=null) {
        moveToTop_g('G23');
        document.getElementById("refine_granttitle").value = decodeURI(querystringHash.get("granttitle",""));
    }
    
    if (querystringHash.get("awarddate1","") != "" || querystringHash.get("awarddate2","") != "") {
        moveToTop_g('G21');
        document.getElementById("refine_awarddate1").value = querystringHash.get("awarddate1","");
        document.getElementById("refine_awarddate2").value = querystringHash.get("awarddate2","");
    }

    if (document.getElementById("refine_grantenddate1") != null && querystringHash.get("grantenddate1","") != "") {
        moveToTop_g('G17');
        document.getElementById("refine_grantenddate1").value = querystringHash.get("grantenddate1","");
    }

    if (querystringHash.get("awardamount","") != "" && document.getElementById("refine_awardamount")!=null) {
        moveToTop_g('G24');
        populateCheckboxes_grant("refine_awardamount", querystringHash.get("awardamount",""));
        activateBlock_g('refine_awardamount','link24');
    }

    if (querystringHash.get("status","") != "" && document.getElementById("refine_status")!=null) {
        moveToTop_g('G20');
        populateCheckboxes_grant("refine_status", querystringHash.get("status",""));
        activateBlock_g('refine_status','link20');
    }

    if(document.getElementById("refine_featuredgrant") != null && querystringHash.get("isfeatured","") != "" && querystringHash.get("isfeatured","") == "1") {
        moveToTop_g('G25');
        document.getElementById("refine_featuredgrant").checked = true;
    }
    // npo
    if (querystringHash.get("npo","") != "" && document.getElementById("g_refine_npo")!=null) {
        moveToTop_g('G2');
        document.getElementById("g_refine_npo").checked = true;
    }
//    // grant fund method
    if (querystringHash.get("fundmethod","") != "" && document.getElementById("refine_fundmethodGroup")!=null) {
        moveToTop_g('G26');
        populateCheckboxes_grant("refine_fundmethodGroup", querystringHash.get("fundmethod",""));
        activateBlock_g('refine_fundmethodGroup','link26');
    }
    var sort, sortdir;
    sort = querystringHash.get("sort","PUBLICATIONDATE"); // by default sorting is date descending
    sortdir = querystringHash.get("sortdir","");

    if(sortdir == '') { // default sorting where sortdir is not specified
        if(sort == 'FUNDINSTCITY' || sort == 'TITLE' || sort == 'AMOUNTAWARDED') sortdir = '0';
        else sortdir = '1';
    }

    if(querystringHash.get("q","") != '') {
        moveToTop_g('G1');
    }
    // when q has some value and no other sorting selected
    if(querystringHash.get("q","") != '' && querystringHash.get("sort","") == '')
        sort = "RELEVANCE";

    var sortBySelect = document.getElementById("sortResults");
    if(sortBySelect != null) {
        for (var i = 0; i < sortBySelect.options.length; i++) {
            if (sortBySelect.options[i].value == sort)
                sortBySelect.options[i].selected = true;
        }
    }

    var itemVal = querystringHash.get("num","");
    var items = document.getElementById("items");
    if(items != null) {
        for (var i = 0; i < items.options.length; i++) {
            if (items.options[i].value == itemVal)
                items.options[i].selected = true;
        }
    }

    if (sort != "" && googleResults > 0) {

        if (sortdir != "") {
            if (sort == "TITLE") {
                document.getElementById("TitleColumn").className = "selected";
                document.getElementById("TitleGroup").className = "border selected";
                if (sortdir == "0")
                    document.getElementById("TitleHeader").className = "asc";
                else
                    document.getElementById("TitleHeader").className = "desc";
            }
            else if (sort == "FUNDINSTCITY")  {
                document.getElementById("CityColumn").className = "selected";
                document.getElementById("CityGroup").className = "border selected";
                if (sortdir == "0")
                    document.getElementById("CityHeader").className = "asc";
                else
                    document.getElementById("CityHeader").className = "desc";
            }
            else if (sort == "AMOUNTAWARDED") {
                document.getElementById("AmtColumn").className = "selected";
                document.getElementById("AmtGroup").className = "border selected";
                if (sortdir == "0")
                    document.getElementById("AmtHeader").className = "asc";
                else
                    document.getElementById("AmtHeader").className = "desc";
            }
            else if (sort == "PUBLICATIONDATE") {
                    document.getElementById("DateColumn").className = "selected";
                    document.getElementById("DateGroup").className = "selected";
                    if (sortdir == "0")
                        document.getElementById("DateHeader").className = "asc";
                    else
                        document.getElementById("DateHeader").className= "desc";
                }
        }
    }
}

// when you unselect category, all subtypes are unselected and vice versa
// element = category checkbox, subTypePostion = subtypes position
function validateCategory_g(element, subTypePostion) {
    var catTypes = document.getElementById("refine_catTypes"+subTypePostion);
    if(catTypes != null) {
        for( var j = 0; catTypes.childNodes[j]; j++ ) {
            if (catTypes.childNodes[j].type && catTypes.childNodes[j].type == "checkbox") catTypes.childNodes[j].checked = element.checked;
            else if(catTypes.childNodes[j].tagName=="LI" && catTypes.childNodes[j].childNodes[0].type == "checkbox" )catTypes.childNodes[j].childNodes[0].checked = element.checked;
        }
    }
}

// when you select the subtype then category (parent) must be checked if it is not selected
// when you unselect the subtype then category (parent) must be unchecked if no other subtypes are selected for that category
// subTypeElement = subtype checkbox, parentId = category checkbox, parentStatus = category position
function validateSubType_g(subTypeElement, parentId, parentStatus) {
    var parent = document.getElementById(parentId);
    var moreTypesSelected = false;
    if(parent != null && subTypeElement.checked && !parent.checked){parent.checked = true;}
    else if(parent != null && !subTypeElement.checked && parent.checked) {
        var subTypeDiv = document.getElementById("refine_catTypes"+parentStatus);
        for( var j = 0; subTypeDiv.childNodes[j]; j++ ) {
            if( subTypeDiv.childNodes[j].tagName=="LI" && subTypeDiv.childNodes[j].childNodes[0].type == "checkbox" && subTypeDiv.childNodes[j].childNodes[0].checked ){moreTypesSelected = true;}
            if (subTypeDiv.childNodes[j].type && subTypeDiv.childNodes[j].type == "checkbox" && subTypeDiv.childNodes[j].checked){moreTypesSelected = true;}
        }
        if(!moreTypesSelected){parent.checked = false;}
    }
}

// open the +/- section
function activateBlock_g(divId, elementId) {
    new W.Toggle(divId, elementId).activate(); return false;
}

// get off from Program Area island
function redirectToPR_g() {
    var querystringHash = new Querystring_g();
    querystringHash.params["src"] = ""; // remove any src value
    querystringHash.params["pid"] = ""; // remove pid value
    querystringHash.params["start"] = ""; // remove start value
    querystringHash.params["isgrant"] = ""; // remove isgrant value

    var fullparams = "";
    for (var key in querystringHash.params) {
        if (querystringHash.params[key] != "")
            fullparams += "&" + key + "=" + querystringHash.params[key];
    }

    fullparams = fullparams.substr(1, fullparams.length - 1);
    location.href = '/pr/search.jsp?' + decodeURI(fullparams);

    return false;
}

// when user press enter key in the left filter's search text box
function DetectEnterKey_Grants(e) {
    var key = window.event ? e.keyCode : e.which;
    var keychar = String.fromCharCode(key);
    if (key == 13) RefineSearch_Grants();  // when enter key is pressed, submit the form
}

function removeItem_g(paramName,itemId) {
    var querystringHash = new Querystring_g();

    var paramValues = querystringHash.params[paramName];
    var valuesArray = paramValues.split(",");
    var newValues = new Array();
    for(var i=0; i<valuesArray.length;i++) {
        if(valuesArray[i] != itemId) newValues.push(valuesArray[i]);
    }

    querystringHash.params[paramName] = newValues;
    // when paramName is 'catid' remove typeid also.
    if(paramName == 'catid') querystringHash.params["typeid"] = "";

    var fullparams = "";
    for (var key in querystringHash.params) {
        if (querystringHash.params[key] != "")
            fullparams += "&" + key + "=" + querystringHash.params[key];
    }

    fullparams = fullparams.substr(1, fullparams.length - 1);
    location.href = 'search.jsp?' + fullparams;

    return false;
}

// move block to top of left filter
function moveToTop_g(spanid) {
    if($(spanid+'g')!=null) $(spanid+'g').innerHTML = $(spanid).innerHTML;
    if($(spanid)!=null) {
        $(spanid).style.display = 'none';
        $(spanid).innerHTML = '';
    }
}

//return true when there are parameters other than 'x','y','src','q','num'.
function otherParam_g() {
    var querystringHash = new Querystring_g();
    var extraParam = new Array('x','y','src','q','num','ss','name','isprod','search_options');
    for (var key in querystringHash.params) {
        if (querystringHash.params[key] != "") {
            if(key != extraParam[0] && key != extraParam[1] && key != extraParam[2] && key != extraParam[3] && key != extraParam[4]  && key != extraParam[5] && key != extraParam[6] && key != extraParam[7] && key != extraParam[8])
                return true;
        }
    }
    return false;
}

