var objContribute = new WikiContribute();



function WikiContribute() {
    this.Render = CreatePopup;
    this.Show = ShowParallelUpload;
    this.Close = CloseParallelUpload;
    this.SiteID = -1;

    var IsLoggedIn = false;
    var mainUploadDiv = "";
    var buttonFooter = "";
    var popupContent = "";
    var statusDiv = "";
    var submitButton = "";
    var closeLink = "";
    var baseURL = "http://www.copperstrings.com";


    function AddScripts() {
        loadScripts
    (
        [
            baseURL + "/UploadHelper/jquery.jsonp.js",
            baseURL + "/UploadHelper/EmailValidator.js",
            baseURL + "/UploadHelper/jquery.bpopup.js",
            baseURL + "/UploadHelper/json2.js"
        ], function () {
        }
    );
    }

    function CreatePopup(LoggedIn) {
        AddScripts();
        IsLoggedIn = LoggedIn;
        mainUploadDiv = $(document.createElement('div')).addClass("upload");
        mainUploadDiv.append($(document.createElement('div')).addClass("top"));

        var popupcenter = $(document.createElement('div')).addClass("center");
        var popupcontentarea = $(document.createElement('div')).addClass("popupcontentarea");

        popupcenter.append(popupcontentarea);

        var tmpHeading = $(document.createElement('div')).addClass("pageheading");
        
        popupcontentarea.append(tmpHeading);
        tmpHeading.append($(document.createElement('span')).text("Send us your Contribution"));
        Thanksbutton = $(document.createElement('input')).addClass("formsecondarybutton")
        closeLink = $(document.createElement('a')).html('<img src="' + baseURL + '/UploadHelper/images/cross.gif" border="0" alt="Close"/>').attr({ id: 'uploadClose' }).bind("click", CloseParallelUpload);
        tmpHeading.append(closeLink);

        popupContent = $(document.createElement('div')).addClass("popupContent");

        statusDiv = $(document.createElement('div')).addClass("popupContent").hide();

        popupcontentarea.append(popupContent);
        popupcontentarea.append(statusDiv);

        popupContent.append($(document.createElement('div')).addClass("errorbox").attr({ id: 'divError' }).hide());

        var divRow1 = $(document.createElement('div')).addClass("row");
        divRow1.append($(document.createElement('span')).addClass("contentlabel").html("Title<span class='required'>*</span>:"));
        divRow1.append($(document.createElement('span')).append($(document.createElement('input')).addClass("textspace").attr({ id: 'txtTitle', type: 'text' })));
        popupContent.append(divRow1);

        var divRow2 = $(document.createElement('div')).addClass("row");
        divRow2.append($(document.createElement('span')).addClass("contentlabel").html("Content<span class='required'>*</span>:"));
        divRow2.append($(document.createElement('span')).append($(document.createElement('textarea')).addClass("textspace").attr({ id: 'txtContent', rows: '7' })));
        popupContent.append(divRow2);

        if (!IsLoggedIn) {
            var divRowName = $(document.createElement('div')).addClass("row");
            divRowName.append($(document.createElement('span')).addClass("label").html("Name:<span class='required'>*</span>"));
            divRowName.append($(document.createElement('span')).append($(document.createElement('input')).addClass("textbox").attr({ id: 'txtName', type: 'text' })));

            popupContent.append(divRowName);
            var divRowEmail = $(document.createElement('div')).addClass("row");
            divRowEmail.append($(document.createElement('span')).addClass("label").html("Email:<span class='required'>*</span>"));
            divRowEmail.append($(document.createElement('span')).append($(document.createElement('input')).addClass("textbox").attr({ id: 'txtEmail', type: 'text' })));
            popupContent.append(divRowEmail);
        }

        buttonFooter = $(document.createElement('div')).addClass("formbuttonarea");

        Thanksbutton = $(document.createElement('input')).addClass("formsecondarybutton").attr({ id: 'btnClose', type: 'button', value: 'Close' }).bind("click", CloseParallelUpload);
        submitButton = $(document.createElement('input')).addClass("formbutton").attr({ id: 'btnSubmit', type: 'button', value: 'Submit' }).bind("click", SubmitForm);
        buttonFooter.append(Thanksbutton);
        buttonFooter.append(submitButton);
        popupcontentarea.append(buttonFooter);
        mainUploadDiv.append(popupcenter);
        mainUploadDiv.append($(document.createElement('div')).addClass("bottom"));
        $(mainUploadDiv).hide();
    }


    function ValidateForm() {
        $("#divError").empty();
        var errorMessages = new Array();

        var txtTitle = $("#txtTitle").val();
        if (txtTitle.length == 0) {
            var msg = "Please enter the title";
            errorMessages[errorMessages.length] = msg;
        }
        var txtContent = $("#txtContent").val();
        if (txtContent.length == 0) {
            var msg = "Please enter the content";
            errorMessages[errorMessages.length] = msg;
        }

        if (!IsLoggedIn) {
            var txtName = $("#txtName").val();
            var txtEmail = $("#txtEmail").val();

            if (txtName.length == 0) {
                var msg = "Please enter your name";
                errorMessages[errorMessages.length] = msg;
            }
            else if (txtName.length > 50) {
                var msg = "Name cannot exceed 50 characters";
                errorMessages[errorMessages.length] = msg;
            }
            if (txtEmail.length == 0) {
                var msg = "Please enter your email address";
                errorMessages[errorMessages.length] = msg;
            }
            else if (txtEmail.length > 50) {
                var msg = "Email address cannot exceed 50 characters";
                errorMessages[errorMessages.length] = msg;
            }
            else {
                var emailVerify = checkEmailAddress(txtEmail);
                if (!emailVerify.isValid) {
                    errorMessages[errorMessages.length] = emailVerify.ErrorMessage;
                }
            }
        }
        var errorCtr = 0;
        if (errorMessages.length > 0) {
            $("#divError").append($(document.createElement('span')).addClass("errortitle").text("Some information seems to be missing or incorrect."));
            $("#divError").show();
            for (errorCtr = 0; errorCtr < errorMessages.length; errorCtr++)
                $("#divError").append($(document.createElement('span')).addClass("error").text(errorMessages[errorCtr]));

            return false;
        }
        else {
            $("#divError").hide();

            return true;
        }
    }

    function ToggleForm(Mode) {
        // 1- Before Post
        // 2 - After
        // 3 - Error From call
        if (Mode == 1) {
            $(popupContent).hide();
            $(buttonFooter).hide();
            $(closeLink).hide();
            $(statusDiv).append($(document.createElement('span')).addClass("staticmessage").html('Processing'));
            $(statusDiv).show();
        }
        if (Mode == 2) {
            $(statusDiv).show();
            $(statusDiv).empty();
            $(statusDiv).append($(document.createElement('span')).addClass("staticmessage").text("Thanks"));
            $(buttonFooter).show();
            $(submitButton).hide();
            $(closeLink).show();
        }
        if (Mode == 3) {
            $(closeLink).show();
            $(statusDiv).show();
            $(buttonFooter).show();
            $(submitButton).hide();
        }
    }

    function PostForm() {
        ToggleForm(1);
        var objUserContri = new UserContributionData();
        if (!IsLoggedIn) {
            objUserContri.Name = $('#txtName').val();
            objUserContri.Email = $('#txtEmail').val();
        }
        else {
            objUserContri.Name = "";
            objUserContri.Email = "";
        }
        objUserContri.Title = $('#txtTitle').val();
        objUserContri.Content = $('#txtContent').val();
        objUserContri.SiteID = 1;
        var requestbody = JSON.stringify(objUserContri);
        var url = "http://localhost:6560/InternalServices/UserContribution.aspx?data=" + requestbody;
        $.jsonp({
            "url": url + "&callback=?",
            "success": function (response, textStatus) 
            {
               ToggleForm(2);
            },
            "error": function (xOptions, textStatus) {
               $(statusDiv).empty();
                $(statusDiv).append($(document.createElement('span')).addClass("staticmessage").text(textStatus));
                ToggleForm(3);
            }
        });
    }

    function SubmitForm(e) {
        if (!ValidateForm())
            return false;
        PostForm();
    }

    function ShowParallelUpload(Title, SiteID) {
        $("#divError").empty();
        $("#divError").hide();
        $("#txtContent").val("");
        $("#txtTitle").val(Title);
        $(popupContent).show();
        $(submitButton).show();
        $(statusDiv).hide();
        objContribute.SiteID = SiteID;
        $(mainUploadDiv).bPopup({ opacity: 0.2, modalClose: false, fadeSpeed: 'slow' });
        centerPopup();
    }

    function CloseParallelUpload() {
        $(mainUploadDiv).bPopup().close();
    }

    function centerPopup() {
        var windowWidth = document.documentElement.clientWidth;
        var windowHeight = document.documentElement.clientHeight;
        var popupHeight = $(mainUploadDiv).height();
        var popupWidth = $(mainUploadDiv).width();

        var LeftPosition = (windowWidth) ? (windowWidth - popupWidth) / 2 : 0;
        var TopPosition = (windowHeight) ? (windowHeight - popupHeight) / 2 : 0;

        $(mainUploadDiv).css({
            "position": "absolute",
            "top": TopPosition,
            "left": LeftPosition
        });
    }
}

function UserContributionData() {
    this.Name = "";
    this.Email = "";
    this.Title = "";
    this.Content = "";
    this.SiteID = -1;
}

function OpenContribute(Title, SiteID) {
    objContribute.Show(Title, SiteID);
}

function CloseContribute() {
    objContribute.Close();
}

$(document).ready(function () {
    loadImages(['http://www.copperstrings.com/UploadHelper/images/popup_top.png', 'http://www.copperstrings.com/UploadHelper/images/popup_middle.png', 'http://www.copperstrings.com/UploadHelper/images/popup_bottom.png']);
    loadScripts(["http://www.copperstrings.com/UploadHelper/WikiContributeInit.aspx"], null);
});


