/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

var isDropDownPopulated=false;
function ValidateAll(){
    //setting to false caters for elementsForms.length returning 0
    var showMsgBox=true;
    var isValid = false;
    var elementsForms = document.getElementsByTagName("form");
    for (var intCounter = 0; intCounter < elementsForms.length; intCounter++) {
        isValid=ValidateForm(elementsForms[intCounter],showMsgBox);
        if (!isValid) return isValid;
    }

    return isValid;
}

function checkForValidSearch(AdvancedSearchForm){
    var isValid = false;
    var i = 0;

    var gymNameTxt = document.advanceSearchForm.txtGymName.value;
    var nrOfCharsInGymName = gymNameTxt.length;
    if (( gymNameTxt != "Enter Gym Name" ) && (gymNameTxt !="") &&  (nrOfCharsInGymName > 0) && (nrOfCharsInGymName < 200))
    {
        isValid = true;
    }

    var selectAreas = document.getElementById('gymAreasSelect');
    for( i = 0; i < selectAreas.options.length; i++) {
        if(selectAreas.options[i].selected && (selectAreas.selectedIndex > -1 ) && ( selectAreas.options[i].value != "unknown")) {
            isValid = true;
            break;
        }
    }

    var gymClasses = document.getElementsByName("chkGymClasses");
    for (i = 0; i < gymClasses.length; i++) {
        if (gymClasses[i].checked) {
            isValid = true;
            break;
        }
    }

    var gymFacilities = document.getElementsByName("chkGymFacilities");
    for ( i = 0; i < gymFacilities.length; i++) {
        if (gymFacilities[i].checked) {
            isValid = true;
            break;
        }
    }

    if ((AdvancedSearchForm.elements["chkHasPictures"].checked)
        ||( AdvancedSearchForm.chkGymFacilities[0].checked)
        || (AdvancedSearchForm.chkGymClasses[0].checked)
        ||(AdvancedSearchForm.elements["chkHasWebsite"].checked)
        || (AdvancedSearchForm.elements["chkHasEmail"].checked)) {
        isValid = true;
    }

    if(!isValid){
        alert("No search criteria has been choosen. The selection of at least one or more criteria such as a gym name, area(including multiple areas),classes or faciltities is mandatory.");
    }
    return isValid;
}

function ValidateDropDownBox(){
    var elementForm = document.getElementById("search");
    var isOK;
    ChangeAction(elementForm);
   
    isOK = ValidateForm(elementForm,true);
    
    if(isOK == true){
         ResetAdvanceSearchForm();
    }
    return isOK;
}

function ValidateForm(form,showMsgBox){
    //setting to false caters for elementsInputs.length returning 0
    var isValid = false;
    var elementsInputs = form.getElementsByTagName("input");
    var elementsDropDown = form.getElementsByTagName("select");
    var intCounter;

    //loop through inputs e.g. text fields
    for ( intCounter = 0; intCounter < elementsInputs.length; intCounter++) {
        isValid=ValidateControl(elementsInputs[intCounter].id,showMsgBox);
        if (!isValid) return isValid;
    }

    //loop through drop down lists
    for ( intCounter = 0; intCounter < elementsDropDown.length; intCounter++) {
        isValid=ValidateControl(elementsDropDown[intCounter].id,showMsgBox);
        if (!isValid) return isValid;
    }

    return isValid;



}

function PopulateDropDownBox(controlID){
    if (isDropDownPopulated==true)return;//already populated
    if (controlID==null || controlID.length==0) return;

    var control=document.getElementById(controlID);
    if (control==null || control.type!="select") return;

    for (x=0; x<array.length; x++){


    }


    isDropDownPopulated=true;

}

function ChangeAction (form) {

    var area=document.getElementById("area");
    if (area==null) return false;

    var index=area.value.toString().indexOf("_");
    if (index<area.value.length){
        var search=area.value.toString().substr(index+1, area.value.length);
        // var searchType=area.value.toString().substr(0, index);
        var formAction="gyms/" +search ;//+ "/" + searchType;
        form.action = formAction;
        //form.submit();
        return true;
    }
    return false;
}


function ValidateControl(controlID,showMsgBox){
    var control=document.getElementById(controlID);
    var isValid=true;

    if (control.type=="button" || control.type=="password" || control.type=="hidden")
        isValid=true;
    else if (controlID=="submit" && control.type=="submit")
        isValid=true;
    else if (controlID=="area")
        isValid=ValidateDropDownList(control,showMsgBox);
    else{
        DisplayNotification(null,showMsgBox,"No such control to validate: "+ controlID);
        return false;
    }

    //clear the status toolbar in case there is anything there
    if (isValid) DisplayNotification(null,false,"");
    return isValid;
}

function ValidateDropDownList(control,showMsgBox){
    //var control = document.getElementById("area");
    var array=GetArray();

    if (IsControlEmpty(control,showMsgBox))
        return false;

    for (x=0; x<array.length; x++)
        if (control.value==array[x])
            return true;

    DisplayNotification(control,showMsgBox,"Incorrect Value. Please choose from the drop down list");
    return false;
}

function IsControlEmpty(control,showMsgBox){
    var whitespace=" \t\n\r";//white space characters TODO is there a trim function????
    var controlText="";

    if (control==null){
        DisplayNotification(control,showMsgBox,"Field can not be identified");
        return true;
    }

    //if (control.type!="text")
    controlText=control.value;
    //else
    //   controlText=control.text;

    if (controlText==null || controlText.length==0){
        DisplayNotification(control,showMsgBox,"No Value has been given. " + control.name + " is mandatory");
        return true;
    }

    for (x=0; x<controlText.length; x++){
        var character=controlText.charAt(x);
        if (whitespace.indexOf(character)==-1)
            return false;
    }

    //if here all characters are white spaces
    DisplayNotification(control,showMsgBox,"No Value has been given. " + control.name + " is mandatory");
    return true;
}

function DisplayNotification(control,showMsgBox,strMsg){
    if (showMsgBox){
        alert(strMsg);
        if (control!=null) control.focus();
    }else
        defaultStatus=strMsg;
}

function GetArray(){
    var array=new Array();
    var x=0;

    array[x++]="ga_Dublin-City-Centre";
    array[x++]="ga_North-Dublin-City";
    array[x++]="ga_South-Dublin-City";
    array[x++]="ga_West-Dublin";
    array[x++]="ga_North-Dublin";
    array[x++]="ga_South-Dublin";
    array[x++]="ac_D1";
    array[x++]="ac_D2";
    array[x++]="ac_D3";
    array[x++]="ac_D4";
    array[x++]="ac_D5";
    array[x++]="ac_D6";
    array[x++]="ac_D7";
    array[x++]="ac_D8";
    array[x++]="ac_D9";
    array[x++]="ac_D10";
    array[x++]="ac_D11";
    array[x++]="ac_D12";
    array[x++]="ac_D13";
    array[x++]="ac_D14";
    array[x++]="ac_D15";
    array[x++]="ac_D16";
    array[x++]="ac_D17";
    array[x++]="ac_D18";
    array[x++]="ac_D20";
    array[x++]="ac_D22";
    array[x++]="ac_D24";

    array[x++]="co_Cork";
    array[x++]="ga_Cork-City";
    array[x++]="ga_South-Cork";
    array[x++]="ga_North-Cork";
    array[x++]="ga_East-Cork";
    array[x++]="ga_West-Cork";
    array[x++]="ga_Mid-Cork";


    array[x++]="co_Galway";
    array[x++]="co_Limerick";
    array[x++]="co_Waterford";
    array[x++]="co_Antrim";

    array[x++]="co_Antrim";
    array[x++]="co_Armagh";
    array[x++]="co_Carlow";
    array[x++]="co_Cavan";
    array[x++]="co_Clare";
    array[x++]="co_Cork";
    array[x++]="co_Derry";
    array[x++]="co_Donegal";
    array[x++]="co_Down";
    array[x++]="co_Dublin";

    array[x++]="co_Fermanagh";
    array[x++]="co_Galway";
    array[x++]="co_Kerry";
    array[x++]="co_Kildare";
    array[x++]="co_Kilkenny";
    array[x++]="co_Laois";
    array[x++]="co_Leitrim";
    array[x++]="co_Limerick";
    array[x++]="co_Longford"

    array[x++]="co_Louth";
    array[x++]="co_Mayo"
    array[x++]="co_Meath"
    array[x++]="co_Monaghan"
    array[x++]="co_Offaly"
    array[x++]="co_Roscommon"
    array[x++]="co_Sligo"
    array[x++]="co_Tipperary"
    array[x++]="co_Tyrone"

    array[x++]="co_Waterford"
    array[x++]="co_Westmeath"
    array[x++]="co_Wexford"
    array[x++]="co_Wicklow"

    return array;
}