/********************************************************************
ValidateAdvSearchPage
Validates the advanced search page.

Param:
roForm				Reference to the search form
rsBadChkMessage		Message to display if day chk are invalid.
rsMissingDayMessage	Message to display if missing either or both days.
bReset				Validation is for reset of form - autopass.
*********************************************************************/

function ValidateAdvSearchPage(roForm, rsDaysBadChkMessage, sDateRangeInvalidValueMessage, sDateRangeReverseDate, bReset) {

    var bResult;
    jQuery.Validated = true;
    if (bReset) {
        bResult = true;
    }
    else if (!AdvSearchFormSearchSubmit(sDateRangeInvalidValueMessage, sDateRangeReverseDate))	//CLA-20807
    {
        jQuery.Validated = false;
        bResult = false;
    }
    else if (!CheckDaysComponent(roForm, rsDaysBadChkMessage)) {
        jQuery.Validated = false;
        bResult = false;
    }
    else {
        bResult = true;
    }

    if (bResult) {
        window.location.href = "#top"
    }

    //CLA-20807 Comment this code block
    /*else if (!CheckDateRangeComponent(roForm, sDateRangeInvalidValueMessage, sDateRangeReverseDate)) {
    jQuery.Validated = false;
    bResult = false;
    }*/

    return bResult;
}

/********************************************************************
ValidateSearchPage
Ensures that the activity details search page is valid.
	
The only way activity details search can be invalid is if
the days of week checkboxes are present and	the user has 
deselected all the days of the week.	

Param:
roForm			Reference to the search form
rsBadChkMessage	Message to display if the checks on the form are invalid
bReset			Called for a form reset
*********************************************************************/
function CheckDaysComponent(roForm, rsBadChkMessage) {
    var iChk;

    //Make sure at least one is checked		
    iChk = 0;
    if (roForm.chkWeekDay1.checked)
        iChk++;

    if (roForm.chkWeekDay2.checked)
        iChk++;

    if (roForm.chkWeekDay3.checked)
        iChk++;

    if (roForm.chkWeekDay4.checked)
        iChk++;

    if (roForm.chkWeekDay5.checked)
        iChk++;

    if (roForm.chkWeekDay6.checked)
        iChk++;

    if (roForm.chkWeekDay7.checked)
        iChk++;

    //day 8 is all. Its "special" so we'll check if its present first...
    if (roForm.chkWeekDay8)
        if (roForm.chkWeekDay8.checked)
            iChk++;

    if (iChk == 0) {
        alert(rsBadChkMessage);
        roForm.chkWeekDay8.focus();
        return false;
    }

    return true;
}

/********************************************************************
SetExclusiveSelection(oSelect, iN)
Deselects the exclusive item if anything else is selected.
	
If user attempts to add exclusive item to multiple select it will
be removed. 
	
If exclusive item is selected & an additional item is
selected, either singly or as multiple select, the exclusive item will
deselect.

Param:
oSelect		Select control from form
iN			Index of the exclusive item in oSelect.options	
*********************************************************************/
function SetExclusiveSelection(oSelect, iN) {
    var i, bDeselectN;

    for (i = 0; i < oSelect.length; i++)
        if (i != iN && oSelect.options[i].selected) {
            oSelect.options[iN].selected = false;
            break;
        }
}

//Check Course Id on Activities Search page
function CheckCID(form, sActivitySearchInvalidCourseNumberMessage) {
    jQuery.Validated = false;
    var test;
    test = ((isInteger(form.cbarcode.value)) && (form.cbarcode.value.length > 0) && (form.cbarcode.value != 0));
    if (test == true) {
        jQuery.Validated = true;
        return true;
    }
    else {
        var msg = sActivitySearchInvalidCourseNumberMessage;
        alert(msg);
        return false;
    }
}

//check valid keyword on Activities Search page	
function CheckKeywordSearch(form, sActivitySearchMissingKeywordMessage) {
    var test;
    test = (form.inputtextKeyword.value.length > 0 && isWhitespace(form.inputtextKeyword.value) == 0);
    if (test == true) {
        return true;
    }
    else {
        var msg = sActivitySearchMissingKeywordMessage;
        alert(msg);
        return false;
    }
}

//check valid date range on Activities Search page	
function CheckDateRangeComponent(form, sActivityDateRangeInvalidValueMessage, sActivityDateRangeReverseDate) {
    var iCount, bValid, bPopupMsg;
    iCount = 0;

    if (form.DayFrom.selectedIndex == 0 || form.MonthFrom.selectedIndex == 0 || form.YearFrom.selectedIndex == 0 || form.DayTo.selectedIndex == 0 || form.MonthTo.selectedIndex == 0 || form.YearTo.selectedIndex == 0) {
        if (form.DayFrom.selectedIndex == 0 && form.MonthFrom.selectedIndex == 0 && form.YearFrom.selectedIndex == 0 && form.DayTo.selectedIndex == 0 && form.MonthTo.selectedIndex == 0 && form.YearTo.selectedIndex == 0) {
            bValid = true;
        }
        else {
            if (form.DayFrom.selectedIndex == 0) {
                iCount++;
                form.DayFrom.focus();
            }
            else if (form.MonthFrom.selectedIndex == 0) {
                iCount++;
                form.MonthFrom.focus();
            }
            else if (form.YearFrom.selectedIndex == 0) {
                iCount++;
                form.YearFrom.focus();
            }
            else if (form.DayTo.selectedIndex == 0) {
                iCount++;
                form.DayTo.focus();
            }
            else if (form.MonthTo.selectedIndex == 0) {
                iCount++;
                form.MonthTo.focus();
            }
            else if (form.YearTo.selectedIndex == 0) {
                iCount++;
                form.YearTo.focus();
            }

            if (iCount > 0 || iCount < 6) {
                alert(sActivityDateRangeInvalidValueMessage);
                return false;
            }
            else {
                bValid = true;
            }
        }
    }
    else {
        bValid = true;
    }

    if (bValid) {
        if (form.YearTo.value < form.YearFrom.value) {
            bPopupMsg = true;
        }
        else if (form.YearTo.value == form.YearFrom.value) {
            if (form.MonthTo.value < form.MonthFrom.value) {
                bPopupMsg = true;
            }
            else if (form.MonthTo.value == form.MonthFrom.value && form.DayTo.value < form.DayFrom.value) {
                bPopupMsg = true;
            }
        }
        if (bPopupMsg) {
            alert(sActivityDateRangeReverseDate);
            form.DayFrom.focus();
            return false;
        }
    }

    return true;
}

//Activities Search page
function submitForm() {
    $('#activity-list-form').submit();
}

//Activities search page	
function navigatePage(nextPage) {
    document.ActivityList.NextPageValue.value = nextPage;
    $('#activity-list-form').submit();
}

//Activities Deatils page or Course Details page
function OpenGISMap(sMapUrl) {
    window.open(sMapUrl, "NewWin")
}

//Activities Details page or Course Details page	
function SubmitActivityDetailsForm() {
    document.activityDetails.submit();
}

//LeagueGroup Details page or League Details page	
function SubmitActivityGroupDetailsForm() {
    document.ActivitiesLeagueGroupDetails.submit();
}

//Sports Reports Calendar Control
function SubmitCalendar(eControl) {
    document.frmCalendar.CalendarControl.value = eControl;
    document.frmCalendar.submit();
}

function AdvSearchKeywordSearchSubmit(sKeywordRequiredMessage, sDefaultKeyword) {
    var skeyword;
    jQuery.Validated = false;
    skeyword = $('.activity-search #cbarcode').attr("value");
    skeyword = jQuery.trim(skeyword);
    if (skeyword == "" || skeyword == sDefaultKeyword || skeyword == '#' || skeyword == '%' || skeyword == '&') {
        alert(sKeywordRequiredMessage);
        return false;
    }
    else {
        jQuery.Validated = true;
        $('.activity-search #keyword_search_form').submit();
    }
}

function AdvSearchFormSearchSubmit(sInvalidDateRangeMessage, sActivityDateRangeReverseDate) {
    var bChecked = true;
    var jQSearchCriteriaPanel = $('#activties-browse-control-panel');
    var iCount = 0;

    if (bChecked == true) {
        var jQDateFrom = $('#DateRangeFrom');
        var jQDateTo = $('#DateRangeTo');

        //CLA-20807
        var jQDateFromDay = $(".DayOrMonthDropDownList[name='SuperDropDownFrom']");
        var jQDateFromMonth = $(".MonthOrDayDropDownList[name='SuperDropDownFrom']");
        var jQDateFromYear = $(".YearDropDownList[name='SuperDropDownFrom']");
        var jQDateToDay = $(".DayOrMonthDropDownList[name='SuperDropDownTo']");
        var jQDateToMonth = $(".MonthOrDayDropDownList[name='SuperDropDownTo']");
        var jQDateToYear = $(".YearDropDownList[name='SuperDropDownTo']");

        if (jQDateFromDay.val() == 0 || jQDateFromMonth.val() == 0 || jQDateFromYear.val() == 0 || jQDateToDay.val() == 0 || jQDateToMonth.val() == 0 || jQDateToYear.val() == 0) {
            if (jQDateFromDay.val() == 0 && jQDateFromMonth.val() == 0 && jQDateFromYear.val() == 0 && jQDateToDay.val() == 0 && jQDateToMonth.val() == 0 && jQDateToYear.val() == 0) {
                bChecked = true;
            }
            else {
                if (jQDateFromDay.val() == 0) {
                    iCount++;
                    jQDateFromDay.focus();
                }
                else if (jQDateFromMonth.val() == 0) {
                    iCount++;
                    jQDateFromMonth.focus();
                }
                else if (jQDateFromYear.val() == 0) {
                    iCount++;
                    jQDateFromYear.focus();
                }
                else if (jQDateToDay.val() == 0) {
                    iCount++;
                    jQDateToDay.focus();
                }
                else if (jQDateToMonth.val() == 0) {
                    iCount++;
                    jQDateToMonth.focus();
                }
                else if (jQDateToYear.val() == 0) {
                    iCount++;
                    jQDateToYear.focus();
                }

                if (iCount > 0 || iCount < 6) {
                    alert(sInvalidDateRangeMessage);
                    return false;
                }
                else {
                    bChecked = true;
                }
            }
        }
        else {
            bChecked = true;
        }

        //Datefrom format validation
        if (bChecked == true && jQDateFrom.val() != '') {
            if (CheckDateFormatValue("dd-mm-yyyy", jQDateFrom.val()) == false) {
                bChecked = false;
                alert(sInvalidDateRangeMessage);
                jQSearchCriteriaPanel.accordion('activate', 2);

                //CLA-20807
                //jQDateFrom.focus();
                //jQDateFrom.select();
                jQDateFromDay.focus();
                jQDateFromDay.select();
            };
        };
        //Dateto format validation
        if (bChecked == true && jQDateTo.val() != '') {
            if (CheckDateFormatValue("dd-mm-yyyy", jQDateTo.val()) == false) {
                bChecked = false;
                alert(sInvalidDateRangeMessage);
                jQSearchCriteriaPanel.accordion('activate', 2);

                //CLA-20807
                //jQDateTo.focus();
                //jQDateTo.select();
                jQDateToDay.focus();
                jQDateToDay.select();
            };
        };

        //Convert date string to date type
        if (jQDateTo.val() != '' && jQDateFrom.val() != '') {
            if (bChecked == true) {
                var dDateFrom = ConvertValToDate("dd-mm-yyyy", jQDateFrom.val());
                var dDateTo = ConvertValToDate("dd-mm-yyyy", jQDateTo.val());
            };

            //Date to must later or equal to "Date from"
            if (bChecked == true) {
                if ((CompareDates(dDateFrom, dDateTo)) == "Greater") {
                    bChecked = false;
                    //CLA-20807
                    //alert(sInvalidDateRangeMessage);
                    alert(sActivityDateRangeReverseDate);
                    jQSearchCriteriaPanel.accordion('activate', 2);

                    //CLA-20807
                    //jQDateTo.focus();
                    //jQDateTo.select();
                    jQDateToDay.focus();
                    jQDateToDay.select();
                };
            };
        }
    }; // end of if (bChecked == true)

    if (bChecked) {
        return true;
    }
    else {
        return false;
    }
}

function FilterByComplex(complexId, contentType, searchType) {
    //CLA-22685, will filting course or league if the course or league table is displayed.
    if ($('.show-course.hidden').length > 0) {
        var url, activityType, activityId, bServerSide;

        if (contentType == "Course") {
            url = $('#course-tab select').data('url');
            activityType = $('#course-tab select').data('activityType');
            activityId = $('#course-tab select').data('activityId');
            bServerSide = $('#course-tab select').data('bServerSide');

            $("#course-tab .activity-detail-wrapper").html($('#course-tab select').data('courseTableHead'));
        } else {
            url = $('#league-tab select').data('url');
            activityType = $('#league-tab select').data('activityType');
            activityId = $('#league-tab select').data('activityId');
            bServerSide = $('#league-tab select').data('bServerSide');
            $("#league-tab .activity-detail-wrapper").html($('#league-tab select').data('leagueTableHead'));
        }

        ShowActivityDetail(url, activityType, activityId, bServerSide, complexId);
    } // or filting activity or leaguegroup
    else {
        var link, target; ;
        link = "ActivitiesAdvSearch.asp?FilterByComplex=true&ComplexId=" + complexId;

        if (contentType == "Course") {
            link += "&GetCourses=true";
            target = "#course-tab .search-result";
        } else if (contentType == "League") {
            link += "&GetLeagues=true";
            target = "#league-tab .search-result";
        }

        if (searchType == "BasicSearch") {
            link += "&BasicSearch=true";
        } else if (searchType == "AdvSearch") {
            link += "&AdvSearch=true";
        }
        link = pAppendSeesionInfo(link);
        $('body').removeAttr('aria-live');
        jQuery.ajaxifyDirectLoad({ method: 'get', target: target, link: link, loading_target: target });
    }
}


function FormatActivityDetailTable(sEcho, iTotalRecords, iTotalDisplayRecords, iDisplayLength, activityId) {
    $("#activity" + activityId + " table.activity-course-detail").dataTable({
        "iDisplayLength": iDisplayLength,
        "bJQueryUI": true,
        "bSort": false,
        "bLengthChange": false,
        "bFilter": false,
        "sPaginationType": "full_numbers",
        "bProcessing": true,
        "bServerSide": true,
        "sAjaxSource": "ActivitiesAdvSearch.asp"
    });

    return false;
}

var oDataTable;


function ShowActivityDetail(url, activityType, activityId, bServerSide, complexId) {
    var sInfo;
    var id = "#activity-" + activityType + "-" + activityId;
    //For barcode search,the activity detail will be built into page in advance in order to improve the performance.
    if ($(id + " .dataTables_wrapper").length == 0 && $(id + " table.activity-detail tbody td").length > 1) {
        bServerSide = false;
    }   

    if (activityType == "1") {
        sInfo = "Showing _START_ to _END_ of _TOTAL_ courses";
        if (complexId == 0) {
            $('#course-tab select').data('url', url);
            $('#course-tab select').data('activityType', activityType);
            $('#course-tab select').data('activityId', activityId);
            $('#course-tab select').data('bServerSide', bServerSide);

            if (!$('#course-tab select').data('courseTableHead') || $('#course-tab select').data('courseTableHead') == "") {
                $('#course-tab select').data('courseTableHead', $(id + " .activity-detail-wrapper").html());
            }      
        }
    }
    else {
        sInfo = "Showing _START_ to _END_ of _TOTAL_ leagues";
        if (complexId == 0) {
            $('#league-tab select').data('url', url);
            $('#league-tab select').data('activityType', activityType);
            $('#league-tab select').data('activityId', activityId);
            $('#league-tab select').data('bServerSide', bServerSide);

            if (!$('#league-tab select').data('leagueTableHead') || $('#league-tab select').data('leagueTableHead') == "") {
                $('#league-tab select').data('leagueTableHead', $(id + " .activity-detail-wrapper").html());
            }    
        }
    }
  

    url = url + "&ComplexId=" + complexId;

    if (!bServerSide) {
        $(".show-course").addClass("hidden");
        $(".hide-course").removeClass("hidden");
        $(".activity-detail-wrapper").removeClass("hidden");

        oDataTable = $("table.activity-detail").dataTable({
            "bJQueryUIAlt": true,
            "bSort": false,
            "bLengthChange": false,
            "bFilter": false,
            "bPaginate": false,
            "bAutoWidth": true
        });

        //apply ARIA rules
        $(".show-course").attr("aria-hidden", "true");
        $(".hide-course").removeAttr("aria-hidden");
        $(".activity-detail-wrapper").removeAttr("aria-hidden");
    } else {

        if (complexId == 0) {
            $(".show-course").removeClass("hidden");
            $(".hide-course").addClass("hidden");
            $(".activity-detail-wrapper").addClass("hidden");
            $(id + " .activity-detail-wrapper").removeClass("hidden");

            //apply ARIA rules
            $(".show-course").removeAttr("aria-hidden");
            $(".hide-course").attr("aria-hidden", "true");
            $(".activity-detail-wrapper").attr("aria-hidden", "true");
            $(id + " .activity-detail-wrapper").removeAttr("aria-hidden");
        }

        if (activityType == "1") {
            $(id + " .activity-detail-wrapper").html($('#course-tab select').data('courseTableHead'));
        } else {
            $(id + " .activity-detail-wrapper").html($('#league-tab select').data('leagueTableHead'));
        }

        if ($(id + " .dataTables_wrapper").length == 0 || complexId > 0) {
            oDataTable = $(id + " table.activity-detail").dataTable({
                "bJQueryUIAlt": true,
                "bSort": false,
                "bLengthChange": false,
                "bFilter": false,
                "sPaginationType": "full_numbers",
                "bProcessing": true,
                "bServerSide": true,
                "sAjaxSource": url,
                "fnInitComplete": function () { if (g_CSS_DISABLED) { $(".ajax-load-message, .dataTables_processing").html(""); } },
                "sAjaxRequestDataType": "xml",
                "sInfo": sInfo,
                "sZeroRecords": function () { location.href = pAppendSeesionInfo("ActivitiesAdvSearch.asp"); }
            });
        }

        $(id + " .show-course").addClass("hidden");
        $(id + " .hide-course").removeClass("hidden");
        $(id + " .hide-course").focus();

        //apply ARIA rules
        $(id + " .show-course").attr("aria-hidden", "true");
        $(id + " .hide-course").removeAttr("aria-hidden");
    }

    return false;
}


function HideActivityDetail(activityType, activityId) {
    var id = "#activity-" + activityType + "-" + activityId;
    
    if (oDataTable != null) {
        $(id + " .activity-detail-wrapper").addClass("hidden");
        $(id + " .show-course").removeClass("hidden");
        $(id + " .hide-course").addClass("hidden");
        $(id + " .show-course").focus();

        $('#course-tab select').data('url', "");
        $('#league-tab select').data('url', "");


        if (activityType == "1") {
            $("#course-tab .activity-detail-wrapper").html("");
        }
        else {
            $("#league-tab .activity-detail-wrapper").html("");
        }

        oDataTable.fnClearTable(false);

        //apply ARIA rules
        $(id + " .activity-detail-wrapper").attr("aria-hidden", "true");
        $(id + " .show-course").removeAttr("aria-hidden");
        $(id + " .hide-course").attr("aria-hidden", "true");
    }
}

function HideAllActivityDetail() {
    $(".show-course").removeClass("hidden");
    $(".hide-course").addClass("hidden");
    $(".activity-detail-wrapper").addClass("hidden");

    //apply ARIA rules
    $(".show-course").removeAttr("aria-hidden");
    $(".hide-course").attr("aria-hidden", "true");
    $(".activity-detail-wrapper").attr("aria-hidden", "true");
}

function UpdateCategorySelectionHint() {
    if ($("#chkSearchAllCatogery:checked").length > 0) {
        $("#category-selection-hint").html($("#AllCatogerySubcatogerySelectedHintText").val());
    }
    else {
        $("#category-selection-hint").html($('#category-selected').val());
    }
}

function UpdateAvailableForRegistrationHint() {
    $("#registration-available").submit();
    if ($("#chkRegistrationAvailable:checked").length > 0) {
        $("#available-for-registration-hint").html($("#AvailableForRegistrationOnlyText").html());
    }
    else {
        $("#available-for-registration-hint").html("");
    }
}

function BarcodeSearch(form, sInvalidNumberMessage) {
    jQuery.Validated = false;
    if (CheckCID(form, sInvalidNumberMessage)) {
        $('#BarcodeSearchForm').submit();
    };
    jQuery.Validated = true;
}
