﻿function SetFormEvents() {
    YAHOO.util.Event.addListener("BCHCity", "change", fnCallback);
}

function CheckData() {

     var cntrls = [
                    { id: "First_Name", ErrorMessage: "First Name is required.", CheckedWith: "NotEmpty" },
                    { id: "Last_Name", ErrorMessage: "Last Name is required.", CheckedWith: "NotEmpty" },
                    { id: "Email", ErrorMessage: "A valid Email Address is required.", CheckedWith: "checkEmail" }
                ]

    var blnReturn = false;
    var HTMLErrorMessage = ''

    for (i = 0; i < cntrls.length; i++) {
        
        var blnPass = eval(cntrls[i].CheckedWith + '({id:"' + cntrls[i].id  + '"})')

        if (blnPass) {
            ClearFlagError(cntrls[i].id)

        } else {
            if (HTMLErrorMessage == '') {
                HTMLErrorMessage += "<dt>There are errors on the submission:</dt>"
            }
        
            HTMLErrorMessage += "<dd>" + cntrls[i].ErrorMessage + "</dd>"
            FlagError(cntrls[i].id)
        }
        
    }

    var elemErrorMessage = document.getElementById("ErrorMessage");

    if (HTMLErrorMessage == '') {
        if (elemErrorMessage) {
            YAHOO.util.Dom.setStyle(elemErrorMessage, "display", "none");
            elemErrorMessage.innerHTML = ''
            blnReturn = true
        }
    } else {
        if (elemErrorMessage) {
            YAHOO.util.Dom.setStyle(elemErrorMessage, "display", "block");
            elemErrorMessage.innerHTML = HTMLErrorMessage
            ReSetColumnHeightsToBeEven(elemErrorMessage);
        }
    }

    return blnReturn;
    
}

function FlagError(elemID) {
    var elem = document.getElementById(elemID);
    elemToFlag = YAHOO.util.Dom.getNextSibling(elem);
    YAHOO.util.Dom.addClass(elemToFlag, "FlagError");
}

function ClearFlagError(elemID) {
    var elem = document.getElementById(elemID);
    elemToUndoFlag = YAHOO.util.Dom.getNextSibling(elem);
    YAHOO.util.Dom.removeClass(elemToUndoFlag, "FlagError");
}

function NotEmpty(params) {

    var elem = document.getElementById(params.id);

    str = elem.value.replace(/^\s+|\s+$/g, "");

    if (str == '') {
        return false;
    } else {
        return true;
    }
}

function checkEmail(params) {

    var elem = document.getElementById(params.id);

    strng = elem.value;

    if (strng == "") {
        return false;
    }

    var emailFilter = /^.+@.+\..{2,3}$/;

    if (!(emailFilter.test(strng))) {
        return false;
    }
    else {
        //test email for illegal characters
        var illegalChars = /[\(\)\<\>\,\;\:\\\"\[\]]/

        if (strng.match(illegalChars)) {
            return false;
        }
    }

    return true;
}


function fnCallback(e) {
    var CityID = this.options[this.selectedIndex].value
    sUrl = '/Scripts/JSON/CityDataForListView.aspx?Type=OnlyData&City=' + CityID;   
    var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
}


var handleSuccess = function(o) {
    if (o.responseText !== undefined) {
        var jsonObj = YAHOO.lang.JSON.parse(o.responseText);
        var options = "";

        var Community = document.getElementById('Community');

        for (i = Community.options.length-1; i >=0; i--) {
            Community.remove(i);
        }

        AddOption(Community, "", "") 

        for (i = 0; i < jsonObj.length; i++) {
            AddOption(Community, jsonObj[i].CommunityName, jsonObj[i].CommunityID)
        }

    }
}

function AddOption(selbox, text, value) {
    var optn = document.createElement("OPTION");
    optn.text = text;
    optn.value = value;
    selbox.options.add(optn);
}

var handleFailure = function(o) {
    if (o.responseText !== undefined) {

    }
}

var callback =
{
    success: handleSuccess,
    failure: handleFailure,
    cache: false 
};

function ReSetColumnHeightsToBeEven(elemErrorMessage) {

    var ParentOfColumnsToSet = "ColumnHeight"

    elemColumnHeight = getHeightofElementbyId(ParentOfColumnsToSet) + getHeightofElementbyId(elemErrorMessage);

    YAHOO.util.Dom.setStyle(ParentOfColumnsToSet, "height", elemColumnHeight + "px");

    SetColumnHeightsToBeEven(ParentOfColumnsToSet);
}