﻿//EVENT HANDLERS
$(function() {
    $("#btnClose").click(function() { $("#CountyInfoPopup").hide("fast"); })
    $("#btnSave").click(function() { UpdateCountyInfo(); })
});

var DataType = { "UsageContent": "UsageContent", "Contacts": "Contacts" };

//UPDATE SINGLE based on type links or analyses
function UpdateCountyInfoByType(type, clickedButton) {
    $(clickedButton).html("Saving...");
    var url;

    if (type == DataType.Contacts) {
        var element = $(clickedButton).next().next();
        var Name = $(element).children()[0].value;
        var Phone = $(element).children()[1].value;
        var Email = $(element).children()[2].value;
        var ID = $(element).children()[3].value;

        var jsonData = "{";
        jsonData += "\"ID\":" + ID;
        jsonData += ",\"Name\":\"" + Name + "\"";
        jsonData += ",\"Phone\":\"" + Phone + "\""
        jsonData += ",\"Email\":\"" + Email + "\"";
        jsonData += "}";

        url = "LandUsage.aspx/UpdateUsageContactsData";
    }
    else { //USAGE info
        var element = $(clickedButton).next().next();
        var Content = $(element).children()[0].value;
        var ID = $(element).children()[1].value;

        var jsonData = "{";
        jsonData += "\"ID\":" + ID;
        jsonData += ",\"UsageContent\":\"" + Content + "\"";
        jsonData += "}";

        url = "LandUsage.aspx/UpdateUsageData";      
    }

    DoAJAX(jsonData, url,
        function(msg) {
            $(clickedButton).html("Saved");
        },
        function(msg) {
            alert(msg);
        });
}

//UPDATE STATUS BY FIPS
function UpdateStatusByFips(clickedElement) {
    var Fips = $("#Fips").val();
    var url = "LandUsage.aspx/UpdateUsageStatus";
    var status;

    $(clickedElement).html("Saving...");

    $("#StatusRbl").children().each(
        function() {
            if (this.checked == true)
                status = this.title;
        }
    );

    var jsonData = "{";
    jsonData += "\"fips\":" + Fips;
    jsonData += ",\"status\":\"" + status + "\""
    jsonData += "}";

    DoAJAX(jsonData, url,
        function(msg) {
            $(clickedElement).html("Saved");
            window.location = "LandUsage.aspx";
        },
        function(msg) {
            alert(msg);
        });
}

//INSERTING INFO
function InsertUsageInfo(type,clickedElement) {
    var url = "LandUsage.aspx/InsertUsageData";

    $(clickedElement).html("Adding ...");

    if (type == DataType.UsageContent) {
        var jsonData = "{";
        jsonData += "\"Fips\":" + CurrentFips;
        jsonData += ",\"FipsUsageContent\":\"\"";
        jsonData += "}";
    }

    if (type == DataType.Contacts) {
        url = "LandUsage.aspx/InsertUsageContactsData";
        jsonData = "{";
        jsonData += "\"Fips\":" + CurrentFips;
        jsonData += ",\"Name\":\"\"";
        jsonData += ",\"Phone\":\"\"";
        jsonData += ",\"Email\":\"\"";
        jsonData += "}";
    }

    DoAJAX(jsonData, url,
        function(msg) {
            GetUsageInfo(CurrentFips, CurrentCountyName, CurrentRegionName);
            $(clickedElement).html("Add +");
        },
        function(msg) {
            alert(msg);
        });
}

//DELETING INFO
function DeleteItemSingle(type, clickedElement) {
    var ID, url;  

    if (type == DataType.Contacts) {
        ID = $(clickedElement).next().children()[3].value;
        url = "LandUsage.aspx/DeleteUsageContactsData";
    }
    
    if (type == DataType.UsageContent) {
        ID = $(clickedElement).next().children()[1].value;
        url = "LandUsage.aspx/DeleteUsageData"; 
    }

    var jsonData = "{";
    jsonData += "\"ID\":" + ID;
    jsonData += "}";

    $(clickedElement).html("Deleting ...");

    DoAJAX(jsonData, url,
        function(msg) { GetUsageInfo(CurrentFips, CurrentCountyName, CurrentRegionName);  },
        function(msg) { alert(msg); });
}

var CurrentFips, CurrentCountyName, CurrentRegionName;

//LOADING INFO
function GetUsageInfo(i_fips, i_county_name, i_region_name) {
    CurrentFips = i_fips;
    CurrentCountyName = i_county_name;
    CurrentRegionName = i_region_name;

    $('#CountyInfoContent').html('<br/><img src="images/ajax-loader-Large.gif" />');
    $('#CountyInfoPopup').show("fast");
    $("#Fips").val(i_fips);
    $("#ParishName").html(i_county_name + " Parish");

    var jsonData = "{\"fips\":" + i_fips + "}";
    var url =  "LandUsage.aspx/GetUsageDataByFips";

    DoAJAX(jsonData, url,
        function(msg) {
            GetUsageInfoSuccess(msg, UserIsAdmin());
        },
        function(msg) {
            GetUsageInfoFailure(msg);
        });
 }

//LOAD ADMIN CONTROLS
function loadAdminControls(id, values, type) {
    var saveButton = "<span class='SaveButton' onclick=\"UpdateCountyInfoByType('" + type + "',this)\">Save</span>";
    var deleteButton = "<span class='SaveButton' onclick=\"DeleteItemSingle('" + type + "',this)\">Delete</span>";
    var content = "<span class='ContentChildren'>";
    for (var i = 0; i < values.length; i++) {
        var r = values[i];
        if (type == DataType.Contacts)
            content += r.Key + ":<input type='text' value='" + r.Value + "' style='width:135px;'/>";
        else
            content += r.Key + ":<input type='text' value='" + r.Value + "'/>";
    }
    content += "<input type='hidden' value='" + id + "'/></span><br/>"
    return saveButton + deleteButton + content;
}

// USAGE INFO SUCCESS
function GetUsageInfoSuccess(msg, isAdmin) {
    if (msg != "") {
        var data;
        try {
            data = JSON.parse(msg);
        }
        catch (e) {
            alert(e);
            return false;
        }

        var CountyInfo = $('#CountyInfoContent');
        var CountyContent = "";

        // BUILD STATUS CONTROLS
        CountyContent += "<div id='Status' class='ContentSubTitle'>Status</div>";
        if (isAdmin == true) {
            CountyContent += "<div><span class='SaveButton' onclick=\"UpdateStatusByFips(this)\">Save</span><span id='StatusRbl'>";
            var Statuses = ["Pending", "Available"];
            for (var i = 0; i < Statuses.length; i++) {
                var checked = data.Status == Statuses[i] ? "Checked='checked'" : "";
                CountyContent += "<input type='radio'  Title='" + Statuses[i] + "' " + checked + " name='StatusRbl'/><span>" + Statuses[i] + "</span>";
            }
            CountyContent += "</span></div>";
        }
        else
            CountyContent += "<div class='ContentChildren'>" + data.Status + "</div>";

        //BUILD Usage CONTROLS
        CountyContent += loadData(data.Usages, DataType.UsageContent, isAdmin);
        CountyContent += loadData(data.UsageContacts, DataType.Contacts, isAdmin);            
           
        CountyInfo.html(CountyContent);
    }
    else {
        CountyInfo.html('<p>No community information for selected county</p>')
    }

    //Add IE6 compatible rollover for the buttons, *THROWS UP IN MOUTH*
    $("#CountyInfoFooter div").hover(function() { $(this).addClass("PointerCursor") }, function() { $(this).removeClass("PointerCursor") });
    $("#ContentChildren").hover(function() { $(this).addClass("ContentChildrenHover") }, function() { $(this).removeClass("ContentChildrenHover") });
    $(".SaveButton").hover(
        function() {
            $(this).removeClass("SaveButton");
            $(this).addClass("SaveButtonHover")
        },
        function() {
            $(this).removeClass("SaveButtonHover");
            $(this).addClass("SaveButton");
        });
    $(".AddButton").hover(
        function() {
            $(this).removeClass("AddButton");
            $(this).addClass("AddButtonHover")
        },
        function() {
            $(this).addClass("AddButton");
            $(this).removeClass("AddButtonHover")
        });        
}

//LOAD DATA
function loadData(collection, type,isAdmin) {
    var result = "<div class='ContentSubTitle'>";
    if (isAdmin == true)
        result += "<div onclick=\"InsertUsageInfo('" + type + "',this)\" class='AddButton'>Add+</div>";
    result +="<div>" +  type + "</div></div>";
    result += "<div id='" + type + "'>";    
   
    if (collection.length != 0) {
        if (collection[0]  != undefined) {
            for (var i = 0; i < collection.length; i++) {
                var r = collection[i];
                var values;

                if (isAdmin == true) {
                    if (r.ID != undefined && r.ID != "") {

                        if (type == DataType.Contacts)
                            values = [{ "Key": "Name", "Value": (r.Name == undefined ? '' : r.Name) }, { "Key": "Phone", "Value": (r.Phone == undefined ? '' : r.Phone) }, { "Key": "Email", "Value": (r.Email == undefined ? '' : r.Email)}];
                        else
                            values = [{ "Key": "FipsUsageContent", "Value": (r.FipsUsageContent == undefined ? '' : r.FipsUsageContent) }];

                        result += loadAdminControls(r.ID, values, type);
                    }
                }
                else {
                    if (r.ID != undefined && r.ID != "") {
                        if (type == DataType.Contacts)
                            result += "<div class='ContentChildren'>" + (r.Name == undefined ? "" : r.Name) + ", " + (r.Phone == undefined ? "" : r.Phone) + ", " + (r.Email == undefined ? "" : r.Email) + "</div>";
                        else
                            result += "<div class='ContentChildren'>" + (r.FipsUsageContent == undefined ? '' : r.Link) + "</div>";
                    }
                }
            }
        }
    }

    result += "</div>";        
    
    return result;
}

//USAGE INFO FAILURE
function GetUsageInfoFailure(msg) {
    $('#CountyInfoContent').html(msg);
}
//AJAX wrapper
function DoAJAX(jsonData, url, successFunction, errorFunction) {
    $.ajax({
        type: "POST",
        cache: false,
        url: url,
        data: jsonData,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: successFunction,
        error: errorFunction
    });
}


// DONE - update status

// DONE - Add usage
// DONE - Edit usage
// DONE - Delete usage

// DONE - Add contact
// DONE - Edit contact
// DONE - Delete contact
