﻿function xcaptchaSetCaptchaImage(solutionUrl, imageUrl) {
    $.ajaxSetup({ cache: false });
    $.get(solutionUrl, null, function (data) {
        var src = imageUrl + data;
        $('#-xcaptcha-hidden').val(data);
        $('#xcaptcha-image').attr("src", src);
    });
}


function InitLogin() {
    $(document).ready(function () {
        $("#signin_link").linkButtonMenu({
            containerId: "#signin_menu",
            onshow: function (){ $('#signin_menu #username').focus();}
        });
        $("#register_link").linkButtonMenu({
            containerId: "#overlay_menu"
        });
    });
}

function InitPartnerRegister() {
    $(document).ready(function () {
        $("select[name='CountryId']").ufd({ infix: false, height: "25px" });
    });
}

function InitCalendar(id, type) {
    //load calendar

    $("div#c_course_calendar").partnersCalendar({
        parameters: {
            coursetype: type,
            userid: id
        }
    });
}

function InitUserCalendar(id, type, countryid) {
    //load calendar
    $("div#c_course_calendar").partnersCalendar({
        parameters: {
            coursetype: type,
            userid: id,
            countryid: countryid,
            active: -1
        }
    });
}

COURSETYPE = {
    All: -1,
    Course: 0,
    Event: 1
};

(function ($) {
    $.fn.extend({

        partnersCalendar: function (options) {

            getUrlParams();

            var defaults = {
                ajaxUrl: "/controls/coursecalendar",
                parameters: {
                    calendarTableOnly: false,
                    coursetype: COURSETYPE.All,
                    selectedDate: urlParams["datestart"] == null ? "" : urlParams["datestart"],
                    url: window.location.href,
                    userid: 0
                }
            };

            var options = $.extend(true, defaults, options);


            function AjaxCalendar(options) {
                var calendarTable = $("div#calendar-table");
                options.parameters.url = window.location.href;
                options.parameters.calendarTableOnly = true;
                $.ajax({
                    type: "GET",
                    url: options.ajaxUrl,
                    data: options.parameters,
                    contentType: "application/json; charset=utf-8",
                    dataType: "html",
                    success: function (data) {
                        calendarTable.html(data);
                    }
                });
            }

            return this.each(function () {

                var $calendarDiv = $(this);
                InsertLoadingGIF($calendarDiv);

                $.ajax({
                    type: "GET",
                    url: options.ajaxUrl,
                    data: options.parameters,
                    contentType: "application/json; charset=utf-8",
                    dataType: "html",
                    success: function (data) {
                        document.getElementById($calendarDiv.attr("id")).innerHTML = data;

                        var prevMonth = $("#calendar div.prev a.prev");
                        var nextMonth = $("#calendar div.next a.next");
                        var calendarTable = $("div#calendar-table");

                        var ddlMonth = $("select.calendar-month");
                        var ddlYear = $("select.calendar-year");

                        //Previous button
                        prevMonth.live("click", function () {

                            var month = 1, day = 1, year = 2010;

                            day = 1;
                            month = parseInt(ddlMonth.val());
                            year = parseInt(ddlYear.val());

                            if (month == 1) {
                                month = 12;
                                year--;
                            }
                            else {
                                month--;
                            }

                            ddlMonth.val(month);
                            ddlYear.val(year);

                            var newDate = "" + month + "-" + day + "-" + year;
                            InsertLoadingGIF(calendarTable);

                            options.parameters.selectedDate = newDate;

                            AjaxCalendar(options);
                            //end of ajax() prevMonth
                        }); //end of live() prevMonth 

                        //Next button
                        nextMonth.live("click", function () {

                            var month = 1, day = 1, year = 2010;

                            day = 1;
                            month = parseInt(ddlMonth.val());
                            year = parseInt(ddlYear.val());

                            if (month == 12) {
                                month = 1;
                                year++;
                            }
                            else {
                                month++;
                            }

                            ddlMonth.val(month);
                            ddlYear.val(year);

                            var newDate = "" + month + "-" + day + "-" + year;
                            InsertLoadingGIF(calendarTable);

                            options.parameters.selectedDate = newDate;

                            AjaxCalendar(options);
                            //end of ajax() nextMonth
                            return false;
                        }); //end of live() nextMonth 

                        //ddlMonth button
                        ddlMonth.live("change", function () {

                            var month = 1, day = 1, year = 2010;

                            day = 1;
                            month = parseInt(ddlMonth.val());
                            year = parseInt(ddlYear.val());

                            var newDate = "" + month + "-" + day + "-" + year;


                            InsertLoadingGIF(calendarTable);

                            options.parameters.selectedDate = newDate;

                            AjaxCalendar(options);
                            //end of ajax() ddlMonth
                        }); //end of live() ddlMonth

                        //ddlMonth button
                        ddlYear.live("change", function () {

                            var month = 1, day = 1, year = 2010;

                            day = 1;
                            month = parseInt(ddlMonth.val());
                            year = parseInt(ddlYear.val());

                            var newDate = "" + month + "-" + day + "-" + year;
                            InsertLoadingGIF(calendarTable);

                            options.parameters.selectedDate = newDate;

                            AjaxCalendar(options);
                            //end of ajax() ddlYear
                        }); //end of live() ddlYear
                    }
                });
            });

        }
    });
})(jQuery);


(function ($) {
    $.fn.extend({
        //use field sets
        linkButtonMenu: function (options) {

            var defaults = {
                containerId: "#containerId",
                cssClass: '',
                onshow: false
            };

            var options = $.extend(true, defaults, options);

            $(options.containerId).css("display","none");
            $(options.containerId).css("position","absolute");

            $(options.containerId).addClass("menu_container");

            return this.each(function () {

                var $object = $(this);

                $object.addClass("sc_menu_button_link");
                $("div#" + options.containerId).addClass("sc_menu_button_container");
                if (options.cssClass != '') {
                    $object.addClass(options.cssClass);
                }

                //$(options.containerId).children().unwrap();
                //$(options.containerId).wrap("<fieldset></fieldset>");

                $object.click(function (e) {
                    e.preventDefault();
                    $(".menu_container").hide();
                    $(".sc_menu_button_link").removeClass("menu-open");
                    $("div#" + options.containerId).toggle();
                    $object.toggleClass("menu-open");
                    var position = $object.position();
                    var width = $(options.containerId).outerWidth();
                    width -= $object.outerWidth(); 
                    //console.log($(options.containerId).outerWidth());
                    //console.log($object.outerWidth());
                    $(options.containerId).css({ "left": (position.left-(width)) + "px", "top":(position.top+23) + "px" });

                    if (options.onshow != false)
                    {
                        options.onshow();
                    }
                });

                $("div#" + options.containerId).mouseup(function () {
                    return false
                });

                $(document).mouseup(function (e) {
                    if ($(e.target).parent("a.sc_menu_button_link").length == 0) {
                        $object.removeClass("menu-open");
                        $("div#" + options.containerId).hide();
                    }
                });

            });
        }
    });
})(jQuery);


function InitPartnerRegistration() {
    var options = {
        dataType: 'json',
        success: showPartnerRegisterResponse,  // post-submit callback 
        beforeSubmit: validateAjaxPartnerRegistrationForm,
        error: registrationFailed
        // other available options: 
        //url:       url         // override for form's 'action' attribute 
        //type:      type        // 'get' or 'post', override for form's 'method' attribute 
        //dataType:  null        // 'xml', 'script', or 'json' (expected server response type) 
        //clearForm: true        // clear all form fields after successful submit 
        //resetForm: true        // reset the form after successful submit 

        // $.ajax options can be used here too, for example: 
        //timeout:   3000 
    };

    $('#ajax_form').ajaxForm(options);
}

function validateAjaxPartnerRegistrationForm(formData, jqForm, options) {
    // formData is an array of objects representing the name and value of each field 
    // that will be sent to the server;  it takes the following form: 
    // 
    // [ 
    //     { name:  username, value: valueOfUsernameInput }, 
    //     { name:  password, value: valueOfPasswordInput } 
    // ] 
    // 
    // To validate, we can examine the contents of this array to see if the 
    // username and password fields have values.  If either value evaluates 
    // to false then we return false from this method.

    var submit = $('.form_buttons input[type="image"], .ajax_form button[type="image"]');

    submit.attr('disabled', 'disabled');
    submit.toggleClass('form_disabled');

    $("span.regform_loader").show();

}

function showPartnerRegisterResponse(data) {
    window.location.replace("/partners/signup/registrationsuccessful");
}

function print_r(theObj) {
    if (theObj.constructor == Array ||
     theObj.constructor == Object) {
        document.write("<ul>")
        for (var p in theObj) {
            if (theObj[p].constructor == Array ||
         theObj[p].constructor == Object) {
                document.write("<li>[" + p + "] => " + typeof (theObj) + "</li>");
                document.write("<ul>")
                print_r(theObj[p]);
                document.write("</ul>")
            } else {
                document.write("<li>[" + p + "] => " + theObj[p] + "</li>");
            }
        }
        document.write("</ul>")
    }
}
