﻿$(document).ready(function () {
    var guid = generateGuid();
    var sex;

    $("select").uniform();

    $("#txtPhone").mask("(999) 999-9999");

    $('#uploader > div.plupload').css('z-index', '99999');

    $("#emailimages").attr("href", "mailto:info@champagnesingles.com?subject=Candidate Images " + generateQueryString());

    // add * to required field labels
    //$('label.required').append('&nbsp;<strong>*</strong>&nbsp;');

    var accordion = $("#stepForm").accordion();
    var current = 0;
    var maxindex = $("#stepForm li").length;

    function generateQueryString() {

        var params = { g: [guid], s: [sex] };
        return decodeURIComponent($.param(params, true));
    }

    $.validator.addMethod("pageRequired", function (value, element) {
        var $element = $(element)

        function match(index) {
            return current == index && $(element).parents("#sf" + (index + 1)).length;
        }

        if (match(0) || match(1) || match(2) || match(3) || match(4) || match(5) || match(6) || match(7) || match(8) || match(9) || match(10) || match(11)) {
            return !this.optional(element);
        }

        return "dependency-mismatch";
    },

	$.validator.messages.required)

    var v = $("#cmaForm").validate({
        errorClass: "warning",
        onkeyup: false,
        onblur: false,
        submitHandler: function () {
            var uploader = $('#pluploader').pluploadQueue();
            uploader.start();
        }
    });

    $.fn.serializeNoViewState = function () {
        return this.find("input,textarea,select,hidden")
               .not("[type=hidden][name^=__]")
               .serialize();
    }

    $(".submit").click(function () { if (v.form()) { $("#cmaForm").submit() } });

    displayButtonTitle(current);

    $("#formNext").click(
        function () {
            postFormData(current);
        }
    );

    $("#formBack").click(
        function () {
            current--;
            accordion.accordion("activate", current);

            displayButtonTitle(current);
        }
    );

    $("#formSubmit").bind('click', function () {
        $(".plupload_button.plupload_start").trigger('click');
        $("#formSubmit").attr('disabled', 'disabled');
        $("#formSubmitButtonImage").attr('src', '/frontend/images/join/submit_disabled.png');
    });

    function displayButtonTitle(index) {
        $("#formNext").attr("title", "Next to page " + (index + 2));
        $("#formBack").attr("title", "Back to page " + (index));

        if (index < 1) { $("#formBack").hide(); } else { $("#formBack").show(); }

        //if on last page ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        if (index >= maxindex - 1) {
            //$("#formNextButtonImage").attr('src', '/frontend/images/join/submit_disabled.png');
            //$("#formNext").attr("title", "Submit your application");
            $("#formNext").hide();
            $("#formSubmit").show();

            $("#formBack").hide();
        }
        else {
            //$("#formNextButtonImage").attr('src', '/frontend/images/join/next.png');
            $("#formNext").show();
            $("#formSubmit").hide();
        }
    }

    function postFormData(index) {
        if (v.form()) {
            $(".loading").show();

            if (current == 7) {

                var data = $("#cmaForm").serializeNoViewState();

                $.ajax({type: "POST", url: "Frontend/Utility/applications/p.aspx?" + generateQueryString(), data: data, success: advanceNextPage() });

                //if browser is unable to upload, hide upload text (there are 4 p elements by default)
                if ($("#pluploader").children().size() == 5) {
                    $("#formSubmit").hide();
                    $("#pluploaderfooter").hide();
                }

            } else {
                advanceNextPage();
            }
        }
    }

    function advanceNextPage() {
        $(".loading").hide();
        current++;
        accordion.accordion("activate", current);

        displayButtonTitle(current);
    }

    var maxFileCount = 5;
    var more;

    //added upload and submit to start upload button to jquery.plupload.queue.js, colum 1163
    //id = "startuploadbutton" and modify button text to "Start Upload and Submit"

    //Pluploader component initialization
    var uploader = $("#pluploader").pluploadQueue({
        runtimes: 'flash, silverlight, html5, html4',
        max_file_size: '10mb',
        chunk_size: '2mb',
        unique_names: true,
        multiple_queues: false,
        max_file_count: maxFileCount,

        filters: [
					{ title: "Image files", extensions: "jpg,gif,png" }
				],

        // Resize images on clientside if we can
        resize: { width: 800, height: 600, quality: 90 },

        // Flash & Silverlight settings
        flash_swf_url: '/Frontend/Utility/plupload/js/plupload.flash.swf',
        silverlight_xap_url: '/Frontend/Utility/plupload/js/plupload.silverlight.xap',

        init:
		{
		    Refresh: function (up) {
		        if (this.files.length >= maxFileCount) {
		            $("a#startuploadbutton").removeClass("plupload_disabled");
		        } else {
		            $("a#startuploadbutton").addClass("plupload_disabled");
		        }
		    },

		    QueueChanged: function (up) {
		        if (this.files != 'undefined') {

		            if (this.files.length >= maxFileCount) {
		                $("#formSubmit").removeAttr('disabled');
		                $("#formSubmitButtonImage").attr('src', '/frontend/images/join/submit.png');
		                $("#pluploader_browse").hide();

		                if (this.files.length > maxFileCount) {
		                    this.files.splice(maxFileCount, this.files.length);
		                }
		            }
		            else {
		                $("#formSubmit").attr('disabled', 'disabled');
		                $("#formSubmitButtonImage").attr('src', '/frontend/images/join/submit_disabled.png');
		                $("#pluploader_browse").show();
		            }

		            fileRemaining = 5 - this.files.length;

		            if (fileRemaining > 0) {
		                //$("#fileInfoContent").html("Please upload <span id='filecount'>5 pictures</span> of yourself.");
		                $("#filecount").html(fileRemaining + ((fileRemaining == 5) ? " " : " more") + " picture" + ((fileRemaining > 1) ? "s" : ""));
		            }

		            if (fileRemaining == 0) {
		                $("#fileInfoContent").html("Press the 'Submit' button below to upload your images and finalize your application.");
		            }
		        }
		    },

		    Error: function (up, args) {
		        //alert(args);
		        //up.refresh();
		    },

		    BeforeUpload: function (up) {
		        $("#btnSubmit").attr('disabled', 'disabled');

		        sex = $("#selectGender").val();
		        up.settings.url = '/frontend/utility/plupload/u.aspx?' + generateQueryString();
		    },

		    UploadComplete: function (up) {
		        window.location = "/congratulations.aspx?" + generateQueryString();
		    }
		}
    });
});

function generateGuid() {
    var S4 = function () {
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
    };
    return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
}

function textCounter(field, countfield, maxlimit) {
    if (field.value.length > maxlimit) {
        field.value = field.value.substring(0, maxlimit);
    } else {
        countfield.value = maxlimit - field.value.length;
    } 
}
