﻿var Registration = {
    companyID: "",
    validUser: false,
    isOwner: false,
    requiredFormFields: new Array(),
    allFormFields: new Array(),
    controlsPanelToggle: function(processID) {
        (function($) {
            $(document).ready(function() {
                $("#imgColl" + processID).toggle();
                $("#imgExp" + processID).toggle();
                $("#pnlControls" + processID).toggle();
                $("#" + processID + " > .process_sub_controls").toggle();
            });
        })(jQuery);
    },
    drawProcessField: function(processObject, containerID) {
        (function($) {
            $(document).ready(function() {
                var _newProcess = " <fieldset id='" + processObject.ID + "' class='fldRegProcess'>";
                _newProcess += "<legend>";
                _newProcess += "<b>" + processObject.Title + "</b>";
                _newProcess += "</legend>";
                _newProcess += "<div class='process_right_controls right'>";
                _newProcess += "<a href='javascript:void(0);'><img alt='delete' onclick='Registration.deleteProcess(\"" + processObject.ID + "\");' title='delete' src='" + deletePath + "' /></a>";
                _newProcess += "<a href='javascript:void(0);'><img class='no_border' id='imgColl" + processObject.ID + "' onclick='Registration.controlsPanelToggle(\"" + processObject.ID + "\");' src='Themes/private/img/icons/minus.png' alt='Collapse' /></a>";
                _newProcess += "<a href='javascript:void(0);'><img class='no_border' style='display:none;' id='imgExp" + processObject.ID + "' onclick='Registration.controlsPanelToggle(\"" + processObject.ID + "\");' src='Themes/private/img/icons/add.png' alt='Expand' /></a>";
                _newProcess += "<a class='imagecontainerProcess' href='javascript:void(0);'>";
                _newProcess += "<img class='no_border' src='Themes/Private/img/icons/arrow_out.png' alt='Drag' />";
                _newProcess += "</a>";
                _newProcess += "</div>";
                _newProcess += "<div class='clear'></div>";
                _newProcess += "<div id='pnlControls" + processObject.ID + "'>";
                _newProcess += "</div>";
                _newProcess += "<div class='process_sub_controls'></div>";
                _newProcess += "</fieldset>";
                $("#" + containerID).append(_newProcess);
                var processID = processObject.ID;
                var _addControlHTML = "<div id='add_new_control_panel'>";
                _addControlHTML += "<div class='t3'></div>";
                _addControlHTML += "<div class='t2'></div>";
                _addControlHTML += "<div class='t1'></div>";
                _addControlHTML += "<div class='add_new_control_panel_header'>";
                _addControlHTML += "Please choose a registration control";
                _addControlHTML += "</div>";
                _addControlHTML += "<div class='controls'>";
                _addControlHTML += "<select id='ddlControl" + processID + "'>";
                _addControlHTML += "<option value='0'>Select an option</option>";
                _addControlHTML += "<option value='1'>RadioButton</option>";
                _addControlHTML += "<option value='2'>CheckBox</option>";
                _addControlHTML += "<option value='3'>TextBox</option>";
                _addControlHTML += "<option value='4'>DropDownList</option>";
                _addControlHTML += "</select>&nbsp;&nbsp;";
                _addControlHTML += "<input class='control_title_input' onfocus='Registration.clearInput(this,\"Add a process description\");' id='txtControlText" + processID + "' type='text' value='Add a process description' />";
                _addControlHTML += "<input type='checkbox' id='chkRequired" + processID + "' checked='checked' />";
                _addControlHTML += "Required field";
                _addControlHTML += "&nbsp;&nbsp;<input onclick='Registration.addControl(\"" + processID + "\");' id='btnAddControl' type='button' value='Add' />";
                _addControlHTML += "</div>";
                _addControlHTML += "<div class='t1'></div>";
                _addControlHTML += "<div class='t2'></div>";
                _addControlHTML += "<div class='t4'></div>";
                _addControlHTML += "</div>";
                $("#pnlControls" + processID).html("");
                $("#pnlControls" + processID).html(_addControlHTML);
            });
        })(jQuery);
    },
    drawProcessControls: function(controlObject) {
        (function($) {
            $(document).ready(function() {
                switch (parseInt(controlObject.ControlType)) {
                    case 3:
                        {
                            //TextBox
                            var _newControl = "";
                            _newControl = "<div id='" + controlObject.ID + "' class='option_item'>";
                            _newControl += "<div class='registration_control_header'><div class='left control_header_text'>";
                            _newControl += "<b>" + controlObject.Title + "</b></div>";
                            _newControl += "<div class='right controls_option_panel'>";
                            _newControl += "<img alt='delete' onclick='Registration.deleteControl(\"" + controlObject.ID + "\");' title='delete' src='" + deletePath + "' />";
                            _newControl += "<a class='imagecontainerControl' href='javascript:void(0);'>";
                            _newControl += "<img class='no_border' src='Themes/Private/img/icons/arrow_out.png' alt='Drag' />";
                            _newControl += "</a>";
                            _newControl += "</div>";
                            _newControl += "<div class='clear'></div>";
                            _newControl += "</div>";
                            _newControl += "</div>";
                            break;
                        }
                    default:
                        {
                            var _newControl = "";
                            _newControl = "<div id='" + controlObject.ID + "' class='option_item'>";
                            _newControl += "<div class='registration_control_header'><div class='left control_header_text'>";
                            _newControl += "<b>" + controlObject.Title + "</b></div>";
                            _newControl += "<div class='right controls_option_panel'>";
                            _newControl += "<img alt='delete' onclick='Registration.deleteControl(\"" + controlObject.ID + "\");' title='delete' src='" + deletePath + "' />";
                            _newControl += "<a class='imagecontainerControl' href='javascript:void(0);'>";
                            _newControl += "<img class='no_border' src='Themes/Private/img/icons/arrow_out.png' alt='Drag' />";
                            _newControl += "</a>";
                            _newControl += "</div>";
                            _newControl += "<div class='clear'></div>";
                            _newControl += "</div>";
                            _newControl += "<div class='left'>";
                            _newControl += "<b>Add Option:</b><input type='text' id='txtOptionText" + controlObject.ID + "' />";
                            _newControl += "<input onclick='Registration.addOption(\"" + controlObject.ID + "\");' type='button' id='btnAddOption' value='Add Option' />";
                            _newControl += "</div>";
                            _newControl += "<div id='options_panel_" + controlObject.ID + "' class='left'>";
                            _newControl += "<ul id='control_option_items'>";
                            _newControl += "</ul>";
                            _newControl += "</div>";
                            _newControl += "<div class='clear'>";
                            _newControl += "</div>";
                            _newControl += "</div>";
                            break;
                        }
                } //switch
                $("#" + controlObject.RootID + " > .process_sub_controls").append(_newControl);
                Registration.controlsSortable(controlObject.RootID, controlObject.ID);
            });
        })(jQuery);
    },
    drawControlOption: function(optionObject) {
        (function($) {
            $(document).ready(function() {
                var optionContainer = $("#options_panel_" + optionObject.RootID + " > ul");
                var _item = "<li id='" + optionObject.ID + "' >";
                _item += "<div class='reg_option_option_item'>";
                _item += "<div class='t3'></div>";
                _item += "<div class='t2'></div>";
                _item += "<div class='t1'></div>";
                _item += "<div class='reg_option_option_content'>";
                _item += "<div class='left'>";
                _item += optionObject.Title;
                _item += "</div>";
                _item += "<div class='right' id='optionsImg" + optionObject.ID + "'>";
                _item += "<a href='javascript:void(0);' onclick='' >";
                _item += "<img alt='delete' onclick='Registration.deleteOption(\"" + optionObject.ID + "\");' title='delete' src='" + deletePath + "' />";
                _item += "</a>";
                _item += "<a class='imagecontainerOption' href='javascript:void(0);'>";
                _item += "<img class='no_border' src='Themes/Private/img/icons/arrow_out.png' alt='Drag' />";
                _item += "</a>";
                _item += "</div>";
                _item += "<div class='clear'></div>";
                _item += "</div>";
                _item += "<div class='t1'></div>";
                _item += "<div class='t2'></div>";
                _item += "<div class='t4'></div>";
                _item += "</div></li>";
                optionContainer.append(_item);
                Registration.optionsSortables(optionObject.RootID, optionObject.ID);
            });
        })(jQuery);
    },
    AddRegistrationRequest: function(FirstName, LastName, Email, RegMsg, callBack) {
        (function($) {
            $(document).ready(function() {
                SpiritedFans.BLL.SpiritedFansWebService.AddRegistrationRequest(Registration.companyID, FirstName, LastName, Email, RegMsg, callBack, Registration.webservicefail);
            });
        })(jQuery);
    },
    approveRegistrationRequest: function(requestID) {
        (function($) {
            $(document).ready(function() {
                SpiritedFans.BLL.SpiritedFansWebService.approveRegistrationRequest(Registration.companyID, requestID, function(result) {
                    var _status = eval(result);
                    if (_status.status) {
                        $("#" + _status.ID).slideUp();
                    }
                }, Registration.webservicefail);
            });
        })(jQuery);
    },
    deleteRegistrationRequest: function(requestID) {
        (function($) {
            $(document).ready(function() {
                if (confirm("Are you sure you want to delete this request?")) {
                    SpiritedFans.BLL.SpiritedFansWebService.deleteRegistrationRequest(Registration.companyID, requestID, function(result) {
                        var _status = eval(result);
                        if (_status.status) {
                            $("#" + _status.ID).slideUp();
                        }
                    }, Registration.webservicefail);
                }
            });
        })(jQuery);
    },
    getApprovedRequests: function() {
        (function($) {
            $(document).ready(function() {
                $("#divRegistraionRequests").html("");
                SpiritedFans.BLL.SpiritedFansWebService.getApprovedRegistrationRequests(Registration.companyID, function(result) {
                    var requestColl = eval(result);
                    for (var i = 0; i < requestColl.length; i++) {
                        Registration.DrawReistrationRequest(false, requestColl[i]);
                    }
                    if (requestColl.length == 0) {
                        $("#divRegistraionRequests").html("<div class='center' align='center'><h2>No Requests</h2></div>");
                    }
                }, Registration.webservicefail);
            });
        })(jQuery);
    },
    getNewRequests: function() {
        (function($) {
            $(document).ready(function() {
                $("#divRegistraionRequests").html("");
                SpiritedFans.BLL.SpiritedFansWebService.getNewRegistrationRequests(Registration.companyID, function(result) {
                    var requestColl = eval(result);
                    for (var i = 0; i < requestColl.length; i++) {
                        Registration.DrawReistrationRequest(true, requestColl[i]);
                    }
                    if (requestColl.length == 0) {
                        $("#divRegistraionRequests").html("<div class='center' align='center'><h2>No Requests</h2></div>");
                    }
                }, Registration.webservicefail);
            });
        })(jQuery);
    },
    DrawReistrationRequest: function(NewRequest, Request) {
        (function($) {
            $(document).ready(function() {
                var _request = "<div class='member_request_item' id='" + Request.ID + "'>";
                _request += "<div class='divT3'>";
                _request += "</div>";
                _request += "<div class='divT2'>";
                _request += "</div>";
                _request += "<div class='divT1'>";
                _request += "</div>";
                _request += "<div class='padding10'>";
                _request += "<div class='left'>";
                _request += "<div>";
                _request += "<div class='left reg_header'>";
                _request += "Request Date:</div>";
                _request += "<div class='left'>";
                _request += Request.CreateDate;
                _request += "</div>";
                _request += "<div class='clear'>";
                _request += "</div>";
                _request += "</div>";
                _request += "<div>";
                _request += "<div class='left reg_header'>";
                _request += "First Name:</div>";
                _request += "<div class='left'>";
                _request += Request.FirstName;
                _request += "</div>";
                _request += "<div class='clear'>";
                _request += "</div>";
                _request += "</div>";
                _request += "<div>";
                _request += "<div class='left reg_header'>";
                _request += "Last Name</div>";
                _request += "<div class='left'>";
                _request += Request.LastName;
                _request += "</div>";
                _request += "<div class='clear'>";
                _request += "</div>";
                _request += "</div>";
                _request += "<div>";
                _request += "<div class='left reg_header'>";
                _request += "Email Address</div>";
                _request += "<div class='left'>";
                _request += Request.Email;
                _request += "</div>";
                _request += "<div class='clear'>";
                _request += "</div>";
                _request += "</div>";
                _request += "<div>";
                _request += "<div class='left reg_header'>";
                _request += "Request Message</div>";
                _request += "<div class='left'>";
                _request += Request.RequestMessage;
                _request += "</div>";
                _request += "<div class='clear'>";
                _request += "</div>";
                _request += "</div>";
                _request += "</div>";
                _request += "<div class='right'>";
                _request += "<table cellpadding='0' cellspacing='0'>";
                _request += "<tr>";
                if (NewRequest) {
                    _request += "<td>";
                    _request += "<a href='javascript:void(0);' onclick='Registration.approveRegistrationRequest(\"" + Request.ID + "\");'";
                    _request += "id='lnkApproveRequest'>";
                    _request += "<img title='Approve request' alt='Approve Request' src='Themes/Private/img/Green_Plus_48.png' />";
                    _request += "</a>";
                    _request += "</td>";
                }
                _request += "<td>";
                _request += "<a href='javascript:void(0);' onclick='Registration.deleteRegistrationRequest(\"" + Request.ID + "\");'";
                _request += "id='lnkDeleteRequest'>";
                _request += "<img title='Delete request' alt='Delete Request' src='Themes/Private/img/32px-Crystal_Clear_action_button_cancel.png' />";
                _request += "</a>";
                _request += "</td>";
                _request += "</tr>";
                _request += "</table>";
                _request += "</div>";
                _request += "<div class='clear'>";
                _request += "</div>";
                _request += "</div>";
                _request += "<div class='divT1'>";
                _request += "</div>";
                _request += "<div class='divT2'>";
                _request += "</div>";
                _request += "<div class='divT3'>";
                _request += "</div>";
                _request += "</div>";
                $("#divRegistraionRequests").append(_request);
            });
        })(jQuery);
    },
    registrationRequest: true,
    swapRegistrationRequest: function() {
        (function($) {
            $(document).ready(function() {
                if (Registration.registrationRequest) {
                    $("#lnkApproved").html("Get New Requests");
                    Registration.getApprovedRequests();
                    Registration.registrationRequest = false;
                }
                else {
                    $("#lnkApproved").html("Get Approved Requests");
                    Registration.getNewRequests();
                    Registration.registrationRequest = true;
                }
            });
        })(jQuery);
    },
    processSortable: function() {
        (function($) {
            $(document).ready(function() {
                $("#registration_process_panels").sortable('destroy');
                try {
                    $("#registration_process_panels").sortable({
                        opacity: 0.7,
                        revert: true,
                        scroll: true,
                        handle: $(".fldRegProcess  > .process_right_controls > .imagecontainerProcess").add(".imagecontainerProcess img"),
                        appendTo: 'body',
                        axis: 'y',
                        change: function(event, ui) { },
                        stop: function(event, ui) { }
                    });
                }
                catch (e) {
                }
            });
        })(jQuery);
    },
    controlsSortable: function(processID, controlID) {
        (function($) {
            $(document).ready(function() {
                $("#" + processID + " > .process_sub_controls").sortable('destroy');
                try {
                    $("#" + processID + " > .process_sub_controls").sortable({
                        opacity: 0.7,
                        revert: true,
                        scroll: true,
                        handle: $("#" + controlID + "  > div > .imagecontainerControl").add(".imagecontainerControl img"),
                        appendTo: 'body',
                        axis: 'y',
                        change: function(event, ui) { },
                        stop: function(event, ui) { }
                    }); //sortable
                } //try
                catch (e) {
                }
            });
        })(jQuery);
    },
    processOrderNumber: new Array(),
    processOrderID: new Array(),
    controlsOrderNumber: new Array(),
    controlsOrderID: new Array(),
    optionsOrdersNumber: new Array(),
    optionsOrderID: new Array(),
    saveProcessOrders: function() {
        (function($) {
            $(document).ready(function() {
                Registration.processOrderID = new Array();
                Registration.processOrderNumber = new Array();
                Registration.optionsOrderID = new Array();
                Registration.optionsOrdersNumber = new Array();
                Registration.controlsOrderNumber = new Array();
                Registration.controlsOrderID = new Array();
                var counter = 0;
                $(".fldRegProcess").each(function() {
                    Registration.processOrderID.push($(this).attr("id"));
                    Registration.processOrderNumber.push(counter);
                    Registration.saveControlsOrders($(this).attr("id"));
                    counter++;
                });
                var companyType = $("#ddlRegTypeOption").val();
                var allowRegstration = $("#chkAllowReg").is(':checked');
                SpiritedFans.BLL.SpiritedFansWebService.SaveRegistrationSettings(Registration.companyID, allowRegstration, companyType, Registration.processOrderID, Registration.processOrderNumber, Registration.controlsOrderID, Registration.controlsOrderNumber, Registration.optionsOrderID, Registration.optionsOrdersNumber, function() {
                    $.ui.dialog.defaults.bgiframe = true;
                    var div = "<div >Successfully saved.</div>";
                    $('#dialog').html(div);
                    $(function() {
                        $("#dialog").dialog({
                            width: 500,
                            height: 200,
                            title: 'Success',
                            resizable: false,
                            modal: true,
                            buttons: {
                                'Ok': function() {
                                    $("#dialog").dialog('destroy');
                                }
                            }

                        });
                    });
                    Registration.processOrderID = new Array();
                    Registration.processOrderNumber = new Array();
                    Registration.optionsOrderID = new Array();
                    Registration.optionsOrdersNumber = new Array();
                    Registration.controlsOrderNumber = new Array();
                    Registration.controlsOrderID = new Array();
                }, Registration.webservicefail);
            });
        })(jQuery);
    },
    saveControlsOrders: function(processID) {
        (function($) {
            $(document).ready(function() {
                var counter = 0;
                $("#" + processID + " > .process_sub_controls > div").each(function() {
                    Registration.controlsOrderID.push($(this).attr("id"));
                    Registration.controlsOrderNumber.push(counter);
                    Registration.saveOptionsOrders($(this).attr("id"));
                    counter++;
                });
            });
        })(jQuery);
    },
    saveOptionsOrders: function(controlID) {
        (function($) {
            $(document).ready(function() {
                var counter = 0;
                $("#options_panel_" + controlID + " > ul > li").each(function() {
                    Registration.optionsOrderID.push($(this).attr("id"));
                    Registration.optionsOrdersNumber.push(counter);
                    counter++;
                });
            });
        })(jQuery);
    },
    optionsSortables: function(controlID, optionID) {
        (function($) {
            $(document).ready(function() {
                $("#options_panel_" + controlID + " > ul").sortable('destroy');
                try {
                    $("#options_panel_" + controlID + " > ul").sortable({
                        opacity: 0.7,
                        revert: true,
                        scroll: true,
                        handle: $("#" + optionID + "  > .imagecontainerOption").add(".imagecontainerOption img"),
                        appendTo: 'body',
                        axis: 'y',
                        change: function(event, ui) { },
                        stop: function(event, ui) { }
                    }); //sortable
                } //try
                catch (e) {
                }
            });
        })(jQuery);
    },
    clearInput: function(sender, old) {
        (function($) {
            if (($(sender).val()).trim() == old)
                $(sender).val("");
        })(jQuery);
    },
    webservicefail: function(args) {
        $.ui.dialog.defaults.bgiframe = true;
        var div = "<div >Problem.</div>";
        $('#dialog').html(div);
        $(function() {
            $("#dialog").dialog({
                width: 500,
                height: 200,
                title: 'Problem',
                resizable: false,
                modal: true,
                buttons: {
                    'Ok': function() {
                        $("#dialog").dialog('destroy');
                    }
                }

            });
        });
    },
    addProcess: function() {
        (function($) {
            $(document).ready(function() {
                var processTitle = $("#txtProcessTitle").val();
                SpiritedFans.BLL.SpiritedFansWebService.AddRegistrationProcess(Registration.companyID, processTitle, function(result) {
                    var _newField = eval(result);
                    Registration.drawProcessField(_newField, "registration_process_panels");
                    $("#txtProcessTitle").val("");
                    Registration.processSortable();
                }, Registration.webservicefail); //web service
                return false;
            }); //document.ready
        })(jQuery);
    },
    deleteProcess: function(processID) {
        (function($) {
            $(document).ready(function() {
                if (confirm("Are you sure?")) {
                    SpiritedFans.BLL.SpiritedFansWebService.deleteProcessField(processID, function(result) {
                        $("#" + result).remove();
                    }, Registration.webservicefail); //web service
                } //if
            }); //document.ready 
        })(jQuery);
    },
    editProcess: function(processID, processTitle) {
        (function($) {
            $(document).ready(function() {
            }); //document.ready
        })(jQuery);
    },
    addControl: function(processID) {
        (function($) {
            $(document).ready(function() {
                var controlTitle = $("#txtControlText" + processID).val();
                if (controlTitle.trim() == "" && controlTitle != "Add a process description") {
                    $("#txtControlText" + processID).fadeOut();
                    $("#txtControlText" + processID).fadeIn();
                    $("#txtControlText" + processID).fadeOut();
                    $("#txtControlText" + processID).fadeIn();
                    return;
                }
                var controlType = $("#ddlControl" + processID).val();
                if (parseInt(controlType) == 0) {
                    $("#ddlControl" + processID).fadeOut();
                    $("#ddlControl" + processID).fadeIn();
                    $("#ddlControl" + processID).fadeOut();
                    $("#ddlControl" + processID).fadeIn();
                    return;
                }
                var required = $("#chkRequired" + processID).attr("checked");
                SpiritedFans.BLL.SpiritedFansWebService.AddRegistrationControl(processID, controlTitle, required, parseInt(controlType), function(result) {
                    var controlObject = eval(result);
                    Registration.drawProcessControls(controlObject);
                    $("#txtControlText" + controlObject.RootID).val("");
                    $("#txtControlText" + controlObject.RootID).focus();
                    Registration.controlsSortable(controlObject.RootID, controlObject.ID);
                }, Registration.webservicefail); //web service
            }); //document.ready
        })(jQuery);
    },
    editControl: function(controlID, ControlType, controlText, Required) {
        (function($) {
            $(document).ready(function() {
            }); //document.ready
        })(jQuery);
    },
    deleteControl: function(controlID) {
        (function($) {
            $(document).ready(function() {
                if (confirm("Are you sure?")) {
                    SpiritedFans.BLL.SpiritedFansWebService.deleteControlField(controlID, function(result) {
                        $("#" + result).remove();
                    }, Registration.webservicefail); //web service
                } //if
            }); //document.ready
        })(jQuery);
    },
    addOption: function(controlID) {
        (function($) {
            $(document).ready(function() {
                var _optionText = $("#txtOptionText" + controlID).val();
                if (_optionText.trim() == "") {
                    return;
                } //if
                SpiritedFans.BLL.SpiritedFansWebService.AddRegistrationOption(controlID, _optionText, function(result) {
                    var _optionItem = eval(result);
                    Registration.drawControlOption(_optionItem);
                    $("#txtOptionText" + _optionItem.RootID).val("");
                    Registration.optionsSortables(_optionItem.RootID, _optionItem.ID);
                }, Registration.webservicefail); //web service
            }); //document.ready
        })(jQuery);
    },
    deleteOption: function(OptionID) {
        (function($) {
            $(document).ready(function() {
                if (confirm("Are you sure?")) {
                    SpiritedFans.BLL.SpiritedFansWebService.deleteControlOption(OptionID, function(result) {
                        $("#" + result).remove();
                    }, Registration.webservicefail); //web service
                } //if
            }); //document.ready
        })(jQuery);
    },
    submitChanges: function() {
        (function($) {
            $(document).ready(function() {
            }); //end document.ready
        })(jQuery);
    },
    getcompanyProcessFields: function() {
        SpiritedFans.BLL.SpiritedFansWebService.getComapnyProcessFields(Registration.companyID, function(result) {
            (function($) {
                $(document).ready(function() {
                    var _regColl = eval(result);
                    for (var p = 0; p < _regColl.length; p++) {
                        var _process = _regColl[p];
                        $("#ddlRegTypeOption").val(_process.CompanyType);
                        if (_process.AllowRegistration) {
                            $("#chkAllowReg").attr("checked", "checked");
                        }
                        //Draw the Process Fields
                        Registration.drawProcessField(_process, "registration_process_panels");
                        for (var c = 0; c < _process.Controls.length; c++) {
                            var _control = _process.Controls[c];
                            //Draw the Controls
                            Registration.drawProcessControls(_control);
                            if (_control.ControlType == 3)
                                continue;
                            for (var o = 0; o < _control.Options.length; o++) {
                                var _option = _control.Options[o];
                                //Draw the Options
                                Registration.drawControlOption(_option);
                            } //option for
                        } //control for
                    } //process for
                    Registration.processSortable();
                });
            })(jQuery);
        }, Registration.webservicefail);
    },
    drawFormProcessField: function(processObject, containerID) {
        (function($) {
            $(document).ready(function() {
                var _newProcess = " <fieldset id='reg" + processObject.ID + "' class=''>";
                _newProcess += "<legend><b>" + processObject.Title + "</b></legend>";
                _newProcess += "<div class='right'>";
                _newProcess += "</div>";
                _newProcess += "<div class='clear'></div>";
                _newProcess += "<div class='pnlProcessControls'>";
                _newProcess += "</div>";
                _newProcess += "</fieldset>";
                $("#" + containerID).append(_newProcess);
                var _addControlHTML = "<div id='add_new_control_panel'>";
                _addControlHTML += "<div class='t3'></div>";
                _addControlHTML += "<div class='t2'></div>";
                _addControlHTML += "<div class='t1'></div>";
                _addControlHTML += "<div class='t1'></div>";
                _addControlHTML += "<div class='t2'></div>";
                _addControlHTML += "<div class='t3'></div>";
                _addControlHTML += "</div>";
                $("#" + processObject.ID + " > .pnlProcessControls").html(_addControlHTML);
            });
        })(jQuery);
    },
    drawFormProcessControls: function(controlObject) {
        (function($) {
            $(document).ready(function() {
                var _newControl = "";
                switch (parseInt(controlObject.ControlType)) {
                    case 3:
                        {
                            //TextBox
                            _newControl += "<div class='reg_entry_panel'>";
                            _newControl += "<div class='reg_header left'>";
                            _newControl += controlObject.Title;
                            _newControl += "</div>";
                            _newControl += "<div class='left' id='pnlOptions" + controlObject.ID + "'>";
                            _newControl += "</div>";
                            _newControl += "<div class='clear'></div>";
                            _newControl += "</div>";
                            break;
                        }
                    case 4:
                        {
                            Registration.allFormFields.push("ddl" + controlObject.ID);
                            if (controlObject.Required) {
                                Registration.requiredFormFields.push("ddl" + controlObject.ID);
                            }
                            _newControl += "<div class='reg_entry_panel'>";
                            _newControl += "<div class='reg_header left'>";
                            _newControl += controlObject.Title;
                            _newControl += "</div>";
                            _newControl += "<div class='left' id='pnlOptions" + controlObject.ID + "'>";
                            _newControl += "<select id='ddl" + controlObject.ID + "'";
                            _newControl += "</select>";
                            _newControl += "</div>";
                            _newControl += "<div class='clear'></div>";
                            _newControl += "</div>";
                            break;
                        }
                    case 1:
                        {
                            Registration.allFormFields.push("rd" + controlObject.ID);
                            if (controlObject.Required) {
                                Registration.requiredFormFields.push("rd" + controlObject.ID);
                            }
                        }
                    default:
                        {
                            _newControl += "<div class='reg_entry_panel'>";
                            _newControl += "<div class='reg_header left'>";
                            _newControl += controlObject.Title;
                            _newControl += "</div>";
                            _newControl += "<div class='left' id='pnlOptions" + controlObject.ID + "'>";
                            _newControl += "</div>";
                            _newControl += "<div class='clear'></div>";
                            _newControl += "</div>";
                            break;
                        }
                } //switch
                $("#reg" + controlObject.RootID).append(_newControl);
            });
        })(jQuery);
    },
    drawFormControlOption: function(optionObject, controlType, checked) {
        (function($) {
            $(document).ready(function() {
                var _newOption = "";
                switch (parseInt(controlType)) {
                    case 1:
                        {
                            //RadioButton
                            _newOption += "<div>";
                            _newOption += "<input " + checked + " value='" + optionObject.ID + "' id='rd" + optionObject.ID + "' class='" + optionObject.RootID + "' type='radio' name='rd" + optionObject.RootID + "' />";
                            _newOption += "<span>";
                            _newOption += optionObject.Title;
                            _newOption += "</span>";
                            _newOption += "</div>";
                            $("#pnlOptions" + optionObject.RootID).append(_newOption);
                            break;
                        }
                    case 2:
                        {
                            //CheckBox
                            Registration.allFormFields.push("chk" + optionObject.ID);
                            if (optionObject.Required) {
                                Registration.requiredFormFields.push("chk" + optionObject.ID);
                            }
                            _newOption += "<div>";
                            _newOption += "<input " + checked + " id='chk" + optionObject.ID + "' type='checkbox' name='chk" + optionObject.RootID + "' />";
                            _newOption += "<span>";
                            _newOption += optionObject.Title;
                            _newOption += "</span>";
                            _newOption += "</div>";
                            $("#pnlOptions" + optionObject.RootID).append(_newOption);
                            break;
                        }
                    case 3:
                        {
                            Registration.allFormFields.push("txt" + optionObject.ID);
                            if (optionObject.Required) {
                                Registration.requiredFormFields.push("txt" + optionObject.ID);
                            }
                            $("#pnlOptions" + optionObject.RootID).html("<input type='text' class='reg_text_input' id='txt" + optionObject.ID + "' />");
                            break;
                        }
                    case 4:
                        {
                            //DropDownList
                            _newOption += "<option value='" + optionObject.ID + "'>";
                            _newOption += "<span>";
                            _newOption += optionObject.Title;
                            _newOption += "</span>";
                            _newOption += "</option>";
                            $("#ddl" + optionObject.RootID).append(_newOption);
                            break;
                        }
                    default:
                        {
                            break;
                        }
                }
            });
        })(jQuery);
    },
    getMemberRegistrationForm: function() {
        (function($) {
            $(document).ready(function() {
                SpiritedFans.BLL.SpiritedFansWebService.getComapnyProcessFields(Registration.companyID, function(result) {
                    var registrationContainer = $("#pnlCustom_company_registration");
                    var _regColl = eval(result);
                    for (var p = 0; p < _regColl.length; p++) {
                        var _process = _regColl[p];
                        //Draw the Process Fields
                        Registration.drawFormProcessField(_process, "pnlCustom_company_registration");
                        for (var c = 0; c < _process.Controls.length; c++) {
                            var _control = _process.Controls[c];
                            //Draw the Controls
                            Registration.drawFormProcessControls(_control);
                            for (var o = 0; o < _control.Options.length; o++) {
                                var _option = _control.Options[o];
                                //Draw the Options
                                Registration.drawFormControlOption(_option, _control.ControlType, (o == 0) ? "checked='checked'" : "");
                            }
                        }
                    }
                }, Registration.webservicefail);
            });
        })(jQuery);
    },
    FormErrors: new Array(),
    showRegistrationErrors: function() {
        (function($) {
            $(document).ready(function() {
                var errMsg = "<table cellspacing='0' cellpadding='0' width='100%'><tr>";
                errMsg += "<td><img alt='error' width='100px' height='100px' src='Themes/Private/img/Error.png' /></td>";
                errMsg += "<td><ul class='ulRegistrationError'>";
                for (var i = 0; i < Registration.FormErrors.length; i++) {
                    errMsg += "<li>" + Registration.FormErrors[i] + "</li>";
                }
                errMsg += "</ul></td></tr></table>";
                $.ui.dialog.defaults.bgiframe = true;
                var div = "<div >" + errMsg + ".</div>";
                $('#dialog').html(div);
                $(function() {
                    $("#dialog").dialog({
                        width: 500,
                        height: 300,
                        title: "<img src='Themes/Private/img/comment-del-hover.png' />" + '&nbsp;&nbsp;Error',
                        resizable: false,
                        modal: true,
                        buttons:
                    { 'Ok': function() {
                        $("#dialog").dialog('destroy');
                    }
                    }
                    });
                });
            });
        })(jQuery);
    },
    CheckingMaximumUsersCountSuccess: function(result) {
        (function($) {
            $(document).ready(function() {
                var varificationCheckMaximumResult = eval(result);
                Registration.FormErrors = new Array();
                if (varificationCheckMaximumResult) {
                    if (Registration.isOwner)
                        Notification.drawOwnerUpgradeNotification('Sorry, your company has reached maximum number of members');
                    else {
                        Registration.FormErrors.push("Sorry, can't handle your request now,<br/> please try again later!");
                        Registration.showRegistrationErrors();
                    }
                    return;
                }
                //Form Validation
                var containErrors = false;
                $(".ulRegistrationError > li").each(function() {
                    $(this).remove();
                });
                var firstName = $('#txtFirstName').val();
                var lastName = $('#txtLastName').val();
                var userName = $("#txtUserName").val();
                var password = $("#txtPassword").val();
                var confirmPassword = $("#txtConfirmPassword").val();
                var email = $("#txtEmail").val();
                firstName = firstName.trim();
                lastName = lastName.trim();
                userName = userName.trim();
                password = password.trim();
                confirmPassword = confirmPassword.trim();
                email = email.trim();
                if (firstName == "") {
                    Registration.FormErrors.push("First Name is required...");
                    $("#txtFirstName").css("backgroundColor", "#FF2424");
                    containErrors = true;
                }
                else {
                    $("#txtFirstName").css("backgroundColor", "white");
                }
                if (lastName == "") {
                    Registration.FormErrors.push("Last Name is required...");
                    $("#txtLastName").css("backgroundColor", "#FF2424");
                    containErrors = true;
                }
                else {
                    $("#txtLastName").css("backgroundColor", "white");
                }
                if (userName == "") {
                    Registration.FormErrors.push("Username is required...");
                    $("#txtUserName").css("backgroundColor", "#FF2424");
                    containErrors = true;
                }
                else {
                    $("#txtUserName").css("backgroundColor", "white");
                }
                if (password == "" || confirmPassword == "") {
                    Registration.FormErrors.push("Password is required...");
                    $("#txtPassword").css("backgroundColor", "#FF2424");
                    $("#txtConfirmPassword").css("backgroundColor", "#FF2424");
                    containErrors = true;
                }
                else {
                    $("#txtPassword").css("backgroundColor", "white");
                    $("#txtConfirmPassword").css("backgroundColor", "white");
                }
                if (password != confirmPassword) {
                    Registration.FormErrors.push("Password dis-matched...");
                    $("#txtPassword").css("backgroundColor", "#FF2424");
                    $("#txtConfirmPassword").css("backgroundColor", "#FF2424");
                    containErrors = true;
                }
                else if (!containErrors) {
                    $("#txtPassword").css("backgroundColor", "white");
                    $("#txtConfirmPassword").css("backgroundColor", "white");
                }
                if (email == "") {
                    Registration.FormErrors.push("Email is required");
                    $("#txtEmail").css("backgroundColor", "#FF2424");
                    containErrors = true;
                }
                else {
                    $("#txtEmail").css("backgroundColor", "white");
                }
                if (containErrors) {
                    Registration.showRegistrationErrors();
                    return;
                }
                var answersID = new Array();
                var answer = new Array();
                answer.push($("#txtFirstName").val());
                answersID.push("firstname");
                answer.push($("#txtLastName").val());
                answersID.push("lastname");
                answer.push($("#txtUserName").val());
                answersID.push("username");
                answer.push($("#txtPassword").val());
                answersID.push("password");
                answer.push($("#txtEmail").val());
                answersID.push("email");
                answer.push(Registration.companyID);
                answersID.push("companyID");
                SpiritedFans.BLL.SpiritedFansWebService.submitNewMember(true, answer, answersID, function(result) {
                    var registrationStatus = eval(result);
                    if (result.Status) {
                        if (Registration.validUser) {
                            $.ui.dialog.defaults.bgiframe = true;
                            var div = " Successfully registered, please wait. ";
                            alert(div);

                            SpiritedFans.BLL.SpiritedFansWebService.validateUser(userName, password, function(loginRes) {
                                window.location.href = "/home";
                            });
                        } //Registration.validUser
                        else
                            $.ui.dialog.defaults.bgiframe = true;
                        var div = " Successfully saved. ";
                        alert(div);

                    } //result.Status
                    else {
                        //$(".ulRegistrationError").append("<li>" + registrationStatus.Error + "</li>");
                        var div = "<div >" + registrationStatus.Error + "</div>";
                        $('#dialog').html(div);
                        $(function() {
                            $("#dialog").dialog({
                                width: 500,
                                height: 200,
                                title: 'Success',
                                resizable: false,
                                modal: true,
                                buttons: {
                                    'Ok': function() {
                                        $("#dialog").dialog('destroy');
                                    }
                                }
                            });
                        });
                    }
                }, Registration.webservicefail);
            }); //document.ready
        })(jQuery);
    },
    completeRegistration: function(validateUser) {

        (function($) {
            $(document).ready(function() {
                Registration.validUser = validateUser;
                SpiritedFans.BLL.SpiritedFansWebService.CheckMaximumRegularUsersCount(Registration.companyID, 2, Registration.CheckingMaximumUsersCountSuccess);
            }); //document.ready
        })(jQuery);
    }
};
