/**
* jCarouselLite - jQuery plugin to navigate images/any content in a carousel style widget.
* @requires jQuery v1.2 or above
*
* http://gmarwaha.com/jquery/jcarousellite/
*
* Copyright (c) 2007 Ganeshji Marwaha (gmarwaha.com)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* Version: 1.0.1
* Note: Requires jquery 1.2 or above from version 1.0.1
*/

/**
* Creates a carousel-style navigation widget for images/any-content from a simple HTML markup.
*
* The HTML markup that is used to build the carousel can be as simple as...
*
*  <div class="carousel">
*      <ul>
*          <li><img src="image/1.jpg" alt="1"></li>
*          <li><img src="image/2.jpg" alt="2"></li>
*          <li><img src="image/3.jpg" alt="3"></li>
*      </ul>
*  </div>
*
* As you can see, this snippet is nothing but a simple div containing an unordered list of images.
* You don't need any special "class" attribute, or a special "css" file for this plugin.
* I am using a class attribute just for the sake of explanation here.
*
* To navigate the elements of the carousel, you need some kind of navigation buttons.
* For example, you will need a "previous" button to go backward, and a "next" button to go forward.
* This need not be part of the carousel "div" itself. It can be any element in your page.
* Lets assume that the following elements in your document can be used as next, and prev buttons...
*
* <button class="prev">&lt;&lt;</button>
* <button class="next">&gt;&gt;</button>
*
* Now, all you need to do is call the carousel component on the div element that represents it, and pass in the
* navigation buttons as options.
*
* $(".carousel").jCarouselLite({
*      btnNext: ".next",
*      btnPrev: ".prev"
* });
*
* That's it, you would have now converted your raw div, into a magnificient carousel.
*
* There are quite a few other options that you can use to customize it though.
* Each will be explained with an example below.
*
* @param an options object - You can specify all the options shown below as an options object param.
*
* @option btnPrev, btnNext : string - no defaults
* @example
* $(".carousel").jCarouselLite({
*      btnNext: ".next",
*      btnPrev: ".prev"
* });
* @desc Creates a basic carousel. Clicking "btnPrev" navigates backwards and "btnNext" navigates forward.
*
* @option btnGo - array - no defaults
* @example
* $(".carousel").jCarouselLite({
*      btnNext: ".next",
*      btnPrev: ".prev",
*      btnGo: [".0", ".1", ".2"]
* });
* @desc If you don't want next and previous buttons for navigation, instead you prefer custom navigation based on
* the item number within the carousel, you can use this option. Just supply an array of selectors for each element
* in the carousel. The index of the array represents the index of the element. What i mean is, if the
* first element in the array is ".0", it means that when the element represented by ".0" is clicked, the carousel
* will slide to the first element and so on and so forth. This feature is very powerful. For example, i made a tabbed
* interface out of it by making my navigation elements styled like tabs in css. As the carousel is capable of holding
* any content, not just images, you can have a very simple tabbed navigation in minutes without using any other plugin.
* The best part is that, the tab will "slide" based on the provided effect. :-)
*
* @option mouseWheel : boolean - default is false
* @example
* $(".carousel").jCarouselLite({
*      mouseWheel: true
* });
* @desc The carousel can also be navigated using the mouse wheel interface of a scroll mouse instead of using buttons.
* To get this feature working, you have to do 2 things. First, you have to include the mouse-wheel plugin from brandon.
* Second, you will have to set the option "mouseWheel" to true. That's it, now you will be able to navigate your carousel
* using the mouse wheel. Using buttons and mouseWheel or not mutually exclusive. You can still have buttons for navigation
* as well. They complement each other. To use both together, just supply the options required for both as shown below.
* @example
* $(".carousel").jCarouselLite({
*      btnNext: ".next",
*      btnPrev: ".prev",
*      mouseWheel: true
* });
*
* @option auto : number - default is null, meaning autoscroll is disabled by default
* @example
* $(".carousel").jCarouselLite({
*      auto: 800,
*      speed: 500
* });
* @desc You can make your carousel auto-navigate itself by specfying a millisecond value in this option.
* The value you specify is the amount of time between 2 slides. The default is null, and that disables auto scrolling.
* Specify this value and magically your carousel will start auto scrolling.
*
* @option speed : number - 200 is default
* @example
* $(".carousel").jCarouselLite({
*      btnNext: ".next",
*      btnPrev: ".prev",
*      speed: 800
* });
* @desc Specifying a speed will slow-down or speed-up the sliding speed of your carousel. Try it out with
* different speeds like 800, 600, 1500 etc. Providing 0, will remove the slide effect.
*
* @option easing : string - no easing effects by default.
* @example
* $(".carousel").jCarouselLite({
*      btnNext: ".next",
*      btnPrev: ".prev",
*      easing: "bounceout"
* });
* @desc You can specify any easing effect. Note: You need easing plugin for that. Once specified,
* the carousel will slide based on the provided easing effect.
*
* @option vertical : boolean - default is false
* @example
* $(".carousel").jCarouselLite({
*      btnNext: ".next",
*      btnPrev: ".prev",
*      vertical: true
* });
* @desc Determines the direction of the carousel. true, means the carousel will display vertically. The next and
* prev buttons will slide the items vertically as well. The default is false, which means that the carousel will
* display horizontally. The next and prev items will slide the items from left-right in this case.
*
* @option circular : boolean - default is true
* @example
* $(".carousel").jCarouselLite({
*      btnNext: ".next",
*      btnPrev: ".prev",
*      circular: false
* });
* @desc Setting it to true enables circular navigation. This means, if you click "next" after you reach the last
* element, you will automatically slide to the first element and vice versa. If you set circular to false, then
* if you click on the "next" button after you reach the last element, you will stay in the last element itself
* and similarly for "previous" button and first element.
*
* @option visible : number - default is 3
* @example
* $(".carousel").jCarouselLite({
*      btnNext: ".next",
*      btnPrev: ".prev",
*      visible: 4
* });
* @desc This specifies the number of items visible at all times within the carousel. The default is 3.
* You are even free to experiment with real numbers. Eg: "3.5" will have 3 items fully visible and the
* last item half visible. This gives you the effect of showing the user that there are more images to the right.
*
* @option start : number - default is 0
* @example
* $(".carousel").jCarouselLite({
*      btnNext: ".next",
*      btnPrev: ".prev",
*      start: 2
* });
* @desc You can specify from which item the carousel should start. Remember, the first item in the carousel
* has a start of 0, and so on.
*
* @option scrool : number - default is 1
* @example
* $(".carousel").jCarouselLite({
*      btnNext: ".next",
*      btnPrev: ".prev",
*      scroll: 2
* });
* @desc The number of items that should scroll/slide when you click the next/prev navigation buttons. By
* default, only one item is scrolled, but you may set it to any number. Eg: setting it to "2" will scroll
* 2 items when you click the next or previous buttons.
*
* @option beforeStart, afterEnd : function - callbacks
* @example
* $(".carousel").jCarouselLite({
*      btnNext: ".next",
*      btnPrev: ".prev",
*      beforeStart: function(a) {
*          alert("Before animation starts:" + a);
*      },
*      afterEnd: function(a) {
*          alert("After animation ends:" + a);
*      }
* });
* @desc If you wanted to do some logic in your page before the slide starts and after the slide ends, you can
* register these 2 callbacks. The functions will be passed an argument that represents an array of elements that
* are visible at the time of callback.
*
*
* @cat Plugins/Image Gallery
* @author Ganeshji Marwaha/ganeshread@gmail.com
*/

(function($) {                                          // Compliant with jquery.noConflict()
    $.fn.jCarouselLite = function(o) {
        o = $.extend({
            btnPrev: null,
            btnNext: null,
            btnGo: null,
            mouseWheel: false,
            auto: null,

            speed: 200,
            easing: null,

            vertical: false,
            circular: true,
            visible: 3,
            start: 1,
            scroll: 1,

            beforeStart: null,
            afterEnd: null,
            enableDelete: true,
            btnDelete: '.remove',
            itemDeleteClass: 'removed',
            beforeInitFunc: null,
            afterInitFunc: null,
            afterDeleteFunc: null
        }, o || {});

        return this.each(function() {                           // Returns the element collection. Chainable.

            var startItems;
            var running = false, animCss = o.vertical ? "top" : "left", sizeCss = o.vertical ? "height" : "width";
            var div = $(this), ul = $("> ul", div), v = o.visible;
            var st = o.start;
            var itemLength;
            var curr;

            var liSize;

            init();

            if (o.btnPrev)
                $(o.btnPrev).click(function() {
                    return go(curr - o.scroll);
                });

            if (o.btnNext)
                $(o.btnNext).click(function() {
                    return go(curr + o.scroll);
                });

            if (o.btnGo)
                $.each(o.btnGo, function(i, val) {
                    $(val).click(function() {
                        return go(o.circular ? o.visible + i : i);
                    });
                });

            if (o.mouseWheel && div.mousewheel)
                div.mousewheel(function(e, d) {
                    return d > 0 ? go(curr - o.scroll) : go(curr + o.scroll);
                });

            if (o.auto)
                setInterval(function() {
                    go(curr + o.scroll);
                }, o.auto + o.speed);


            function init() {

                if (o.beforeInitFunc != null && typeof (o.beforeInitFunc) == 'function') {
                    o.beforeInitFunc();
                }

                if (startItems) {
                    $(ul).html(startItems);
                }
                else {
                    startItems = $(ul).html();
                }

                var tLi = $("> li", ul);
                var tl = tLi.size();

                if (tl < o.visible) {
                    v = tl;
                }
                else if (tl == o.visible) {
                    if (o.btnNext)
                        $(o.btnNext).hide();
                    if (o.btnPrev)
                        $(o.btnPrev).hide();
                }
                o.start = st;

                if (o.circular) {

                    ul.prepend(tLi.slice(tl - v - 1 + 1).clone())
                    .append(tLi.slice(0, v).clone());
                    o.start += v;
                }

                var li = $("> li", ul);
                itemLength = li.size(),
                curr = o.start;
                div.css("visibility", "visible");

                li.css({ overflow: "hidden", float: o.vertical ? "none" : "left" });
                ul.css({ margin: "0", padding: "0", position: "relative", "list-style-type": "none", "z-index": "1" });
                div.css({ overflow: "hidden", position: "relative", "z-index": "2", left: "0px" });

                liSize = o.vertical ? height(li) : width(li);   // Full li size(incl margin)-Used for animation
                var ulSize = liSize * itemLength;                   // size of full ul(total length, not just for the visible items)
                var divSize = liSize * v;                           // size of entire div(total length for just the visible items)

                li.css({ width: li.width(), height: li.height() });
                ul.css(sizeCss, ulSize + "px").css(animCss, -(curr * liSize));

                div.css(sizeCss, divSize + "px");                     // Width of the DIV. length of visible images

                $("> li:eq(" + curr + ")", ul).addClass("current");

                $("> li:eq(" + (curr - st) + ")", ul).addClass("start");

                if (o.afterInitFunc != null && typeof (o.afterInitFunc) == 'function') {
                    o.afterInitFunc();
                }

                if (o.enableDelete) {

                    $(o.btnDelete, ul).click(function() {

                        $(this).parents("li:eq(0)").addClass(o.itemDeleteClass + "_now");

                        var start = -1, current = -1, remove = -1;

                        $("ul:eq(0) > li", div).each(function(index, value) {
                            if ($(this).hasClass("start"))
                                start = index;
                            if ($(this).hasClass("current"))
                                current = index;
                            if ($(this).hasClass(o.itemDeleteClass + "_now"))
                                remove = index;
                            if (start != -1 && current != -1 && remove != -1)
                                return false;
                        });

                        current = current - start;
                        current = (current < 0) ? (tl - ((current * -1) % tl)) : current % tl;

                        remove = remove - start;
                        remove = (remove < 0) ? (tl - ((remove * -1) % tl)) : remove % tl;

                        $(ul).html(startItems);

                        var item = $("ul:eq(0) > li:eq(" + remove + ")", div);

                        var reset = false;

                        if (tl <= o.visible) {
                            $(item).addClass(o.itemDeleteClass);
                            $(ul).append(item.clone());
                            reset = true;
                        }

                        $(item).remove();

                        startItems = null;

                        if (remove < current) {
                            current -= 1;
                        }


                        st = current % (tl - 1);
                                                            
                        if (reset) {
                            var length = $("ul:eq(0) > li", div).length;
                            var last_item = $("ul:eq(0) > li:eq(" + (length - 1) + ")", div);
                            //voeg een geordende lijst toe aan de huidige lijst.
                            for (var i = 0; i < length; i++) {
                                var clone = $("ul:eq(0) > li:eq(" + ((current + i) % length) + ")", div).clone();

                                if (clone.hasClass(o.itemDeleteClass)) {
                                    $(ul).append(clone);
                                }
                                else {
                                    $(clone).insertAfter(last_item);
                                    last_item = clone;
                                }
                            }
                            //verwijder de huidige items, zodat de geordende lijst overblijft.
                            for (var i = 0; i < length; i++) {
                                $("ul:eq(0) > li:eq(0)", div).remove();
                            }
                            //zet het startpunt op 0
                            st = 0;
                        }
                        else if (tl <= (current + o.visible) && o.circular == false) {
                            st = st - 1;
                        }
                        if (o.afterDeleteFunc != null && typeof (o.afterDeleteFunc) == 'function') {
                            o.afterDeleteFunc();
                        }

                        init();

                        return false;
                    });
                }
            }

            function vis() {
                return li.slice(curr).slice(0, v);
            };

            function go(to) {
                if (!running) {

                    if (o.beforeStart)
                        o.beforeStart.call(this, vis());

                    if (o.circular) {            // If circular we are in first or last, then goto the other end
                        if (to <= o.start - v - 1) {           // If first, then goto last
                            ul.css(animCss, -((itemLength - (v * 2)) * liSize) + "px");
                            // If "scroll" > 1, then the "to" might not be equal to the condition; it can be lesser depending on the number of elements.
                            curr = to == o.start - v - 1 ? itemLength - (v * 2) - 1 : itemLength - (v * 2) - o.scroll;
                        } else if (to >= itemLength - v + 1) { // If last, then goto first
                            ul.css(animCss, -((v) * liSize) + "px");
                            // If "scroll" > 1, then the "to" might not be equal to the condition; it can be greater depending on the number of elements.
                            curr = to == itemLength - v + 1 ? v + 1 : v + o.scroll;
                        } else curr = to;
                    } else {                    // If non-circular and to points to first or last, we just return.
                        if (to < 0 || to > itemLength - v) return;
                        else curr = to;
                    }                           // If neither overrides it, the curr will still be "to" and we can proceed.

                    running = true;

                    ul.animate(
                    animCss == "left" ? { left: -(curr * liSize)} : { top: -(curr * liSize) }, o.speed, o.easing,
                    function() {
                        if (o.afterEnd)
                            o.afterEnd.call(this, vis());
                        running = false;
                    }
                );
                    // Disable buttons when the carousel reaches the last/first, and enable when not
                    if (!o.circular) {
                        $(o.btnPrev + "," + o.btnNext).removeClass("disabled");
                        $((curr - o.scroll < 0 && o.btnPrev)
                        ||
                       (curr + o.scroll > itemLength - v && o.btnNext)
                        ||
                       []
                     ).addClass("disabled");
                    }

                }
                $("> li.current:eq(0)", ul).removeClass("current");
                $("> li:eq(" + curr + ")", ul).addClass("current");

                return false;
            };
        });
    };

    function css(el, prop) {
        return parseInt($.css(el[0], prop)) || 0;
    };
    function width(el) {
        return el[0].offsetWidth + css(el, 'marginLeft') + css(el, 'marginRight');
    };
    function height(el) {
        return el[0].offsetHeight + css(el, 'marginTop') + css(el, 'marginBottom');
    };

})(jQuery);
/**
* Cookie plugin
*
* Copyright (c) 2006 Klaus Hartl (stilbuero.de)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
*/

/**
* Create a cookie with the given name and value and other optional parameters.
*
* @example $.cookie('the_cookie', 'the_value');
* @desc Set the value of a cookie.
* @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
* @desc Create a cookie with all available options.
* @example $.cookie('the_cookie', 'the_value');
* @desc Create a session cookie.
* @example $.cookie('the_cookie', null);
* @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
*       used when the cookie was set.
*
* @param String name The name of the cookie.
* @param String value The value of the cookie.
* @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
* @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
*                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
*                             If set to null or omitted, the cookie will be a session cookie and will not be retained
*                             when the the browser exits.
* @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
* @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
* @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
*                        require a secure protocol (like HTTPS).
* @type undefined
*
* @name $.cookie
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/

/**
* Get the value of a cookie with the given name.
*
* @example $.cookie('the_cookie');
* @desc Get the value of a cookie.
*
* @param String name The name of the cookie.
* @return The value of the cookie.
* @type String
*
* @name $.cookie
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/
jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};
/*
* Style File - jQuery plugin for styling file input elements
*  
* Copyright (c) 2007-2008 Mika Tuupola
*
* Licensed under the MIT license:
*   http://www.opensource.org/licenses/mit-license.php
*
* Based on work by Shaun Inman
*   http://www.shauninman.com/archive/2007/09/10/styling_file_inputs_with_css_and_the_dom
*
* Revision: $Id: jquery.filestyle.js 303 2008-01-30 13:53:24Z tuupola $
*
*/

(function($) {

    $.fn.filestyle = function(options) {

        /* TODO: This should not override CSS. */
        var settings = {
            width: 250
        };

        if (options) {
            $.extend(settings, options);
        };

        return this.each(function() {

            var self = this;
            var wrapper = $("<div>")
                            .css({
                                "width": settings.imagewidth + "px",
                                "height": settings.imageheight + "px",
                                "background": "url(" + settings.image + ") 0 0 no-repeat",
                                "background-position": "right",
                                "display": "inline",
                                "position": "absolute",
                                "overflow": "hidden"
                            });

            var filename = $('<input class="file">')
                             .addClass($(self).attr("class"))
                             .css({
                                 "display": "inline",
                                 "width": settings.width + "px"
                             });

            $(self).before(filename);
            $(self).wrap(wrapper);

            $(self).css({
                "position": "relative",
                "height": settings.imageheight + "px",
                "width": settings.width + "px",
                "display": "inline",
                "cursor": "pointer",
                "opacity": "0.0"
            });

            if ($.browser.mozilla) {
                if (/Win/.test(navigator.platform)) {
                    $(self).css("margin-left", "-142px");
                } else {
                    $(self).css("margin-left", "-168px");
                };
            } else {
                $(self).css("margin-left", settings.imagewidth - settings.width + "px");
            };

            $(self).bind("change", function() {
                filename.val($(self).val());
            });

        });


    };

})(jQuery);
function Get__doPostBackData(pEventTarget, pEventArgument) {
    return { 
        eventTarget: pEventTarget,
        eventArgument: pEventArgument
    };
}

function GetWebForm_DoPostBackWithOptions(postbackOptions) {
    return postbackOptions;
}

function Jajax(container, trigger) {
    Jajax(container, trigger, null, null, null);
}

function Jajax(container, trigger, content) {
    Jajax(container, trigger, content, null, null);
}

function Jajax(container, trigger, content, globalCallback) {
    Jajax(container, trigger, content, null, null);
}

function Jajax(container, trigger, content, globalCallback, parent) {
    var containers = null;

    if (parent != null) {
        containers = parent.find(trigger);
    }
    else {
        containers = $(container + ' ' + trigger);
    }

    containers.each(function() {
        var href = $(this).attr('href');
        var onchange = $(this).attr('onchange');

        if (href) {
            if (href.indexOf('WebForm_DoPostBackWithOptions') > -1) {

                href = href.replace('WebForm_DoPostBackWithOptions', 'GetWebForm_DoPostBackWithOptions');
                var data = eval(href);
                data.container = container;
                data.trigger = trigger;
                data.content = content;
                data.globalCallback = globalCallback;

                $(this).click(function() {
                    jajaxPostbackWithOptions(this, data);
                    return false;
                });
            }

            if (href.indexOf('__doPostBack') > -1) {

                href = href.replace('__doPostBack', 'Get__doPostBackData');
                var data = eval(href);
                data.container = container;
                data.trigger = trigger;
                data.content = content;
                data.globalCallback = globalCallback;

                $(this).click(function() {
                    jajaxPostback(this, data);
                    return false;
                });
            }
        }
        else if (onchange) {

            var regex = /__doPostBack\([^)]*\)/;
            var matches = regex.exec(onchange.toString());
            if (matches) {
                var onchange = matches[0].replace('__doPostBack', 'Get__doPostBackData').replace(/\\/g, '');
                var data = eval(onchange);
                data.container = container;
                data.trigger = trigger;
                data.content = content;
                data.globalCallback = globalCallback;

                $(this).attr("onchange", "");

                var value = $(this).val();

                if ($.browser.msie) {
                    $(this).blur(function() {
                        if (value != $(this).val()) {
                            value = $(this).val();
                            jajaxPostback(this, data);
                        }
                    });
                }
                else {
                    $(this).change(function() {
                        jajaxPostback(this, data);
                    });
                }
            }
        }
    });
}

function jajaxPostbackWithOptions(trigger, options) {
    var validationResult = true;
    if (options.validation) {
        if (typeof(Page_ClientValidate) == 'function') {
            validationResult = Page_ClientValidate(options.validationGroup);
        }
    }
    if (validationResult) {
        if ((typeof(options.actionUrl) != "undefined") && (options.actionUrl != null) && (options.actionUrl.length > 0)) {
            theForm.action = options.actionUrl;
        }
        if (options.trackFocus) {
            var lastFocus = theForm.elements["__LASTFOCUS"];
            if ((typeof(lastFocus) != "undefined") && (lastFocus != null)) {
                if (typeof(document.activeElement) == "undefined") {
                    lastFocus.value = options.eventTarget;
                }
                else {
                    var active = document.activeElement;
                    if ((typeof(active) != "undefined") && (active != null)) {
                        if ((typeof(active.id) != "undefined") && (active.id != null) && (active.id.length > 0)) {
                            lastFocus.value = active.id;
                        }
                        else if (typeof(active.name) != "undefined") {
                            lastFocus.value = active.name;
                        }
                    }
                }
            }
        }
    }

    if (options.clientSubmit) {
        jajaxPostback(trigger, {
            eventTarget: options.eventTarget,
            eventArgument: options.eventArgument,
            container: options.container,
            trigger: options.trigger,
            content: options.content,
            globalCallback: options.globalCallback
        });
    } 
}

function jajaxPostback(trigger, data) {
    theForm.__EVENTTARGET.value = data.eventTarget;
    theForm.__EVENTARGUMENT.value = data.eventArgument;

    var containerPanel = $(trigger).parents(data.container + ':eq(0)');
    var replacerPanel = containerPanel;

    if (data.content != null && data.content != '') {
        replacerPanel = containerPanel.find(data.content);
    }

    var postData = $(theForm).serialize();
    var container = data.container;
    var trigger = data.trigger;
    var content = data.content;
    var globalCallback = data.globalCallback;

    ajax_loader(replacerPanel, false);

    $.ajax({
        dataType: 'HTML',
        processData: false,
        url: $(theForm).attr('action'),
        type: 'POST',
        data: postData,
        success: function(data) {

            var newViewStateData = $(data).find("#__VIEWSTATE").val();
            var newEventValidationData = $(data).find("#__EVENTVALIDATION").val();

            $("#__VIEWSTATE").val(newViewStateData);
            $("#__EVENTVALIDATION").val(newEventValidationData);

            var dataPart = $(data).find('#' + replacerPanel.attr('id'));

            replacerPanel.html(dataPart.html());
            ajax_loader(replacerPanel, true);
            Jajax(container, trigger, content, globalCallback, replacerPanel);

            if (globalCallback != null && typeof (globalCallback) == 'function') {
                globalCallback(replacerPanel);
            }
        }
    });
}

function ajax_loader(element, reset) {      
    if (reset) {
        element.removeClass("ajaxloader_container");
    }
    else if (!element.hasClass("ajaxloader_container")) {
        element.addClass("ajaxloader_container");
        element.append('<div class="ajaxloader" style=" background-color:#FFF; z-index:3; opacity: 0.85; filter: alpha(opacity = 85);	 position:absolute; top:0; text-align:center; left:0; width:' + element.outerWidth() + 'px; height:' + element.outerHeight() + 'px;"><img src="/_layouts/umcgportal/images/mijnumcg/ajax-loader.gif" alt="" style="margin-top:' + (parseInt(element.height() / 2) - 12) + 'px;" /></div>');
    }
}

