﻿String.prototype.trim = function() {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}
String.prototype.strip = function() {
    return this.replace(/^\s+/, '').replace(/\s+$/, '');
}
 function include(file)  
 {  
      var script  = document.createElement('script');  
   script.src  = file;  
   script.type = 'text/javascript';  
   script.defer = true;
   document.getElementsByTagName('form').item(0).appendChild(script);
 }
//include('js/Company/Reminder/Reminders.js');
//include('js/Company/MemberManagement/Registration.js');
//include('js/Company/MemberManagement/MemberManagement.js');
//include('js/Company/Comment.js');
/*!
* FullCalendar v1.2.1
* http://arshaw.com/fullcalendar/
*
* use fullcalendar.css for basic styling
* requires jQuery UI core and draggables ONLY if you plan to do drag & drop
*
* Copyright (c) 2009 Adam Shaw
* Dual licensed under the MIT and GPL licenses:
*   http://www.opensource.org/licenses/mit-license.php
*   http://www.gnu.org/licenses/gpl.html
*
* Date: 2009-05-31 13:56:02 -0700 (Sun, 31 May 2009)
* Revision: 23
*/

(function($) {

    $.fn.fullCalendar = function(options) {


        //
        // Calls methods on a pre-existing instance
        //

        if (typeof options == 'string') {
            var args = Array.prototype.slice.call(arguments, 1);
            var res;
            this.each(function() {
                var r = $.data(this, 'fullCalendar')[options].apply(this, args);
                if (typeof res == 'undefined') res = r;
            });
            if (typeof res != 'undefined') {
                return res;
            }
            return this;
        }



        //
        // Process options
        //

        options = options || {};

        var r2l = options.rightToLeft;
        var dis, dit; // day index sign / translate
        if (r2l) {
            dis = -1;
            dit = 6;
            this.addClass('r2l');
        } else {
            dis = 1;
            dit = 0;
        }

        var showTime = typeof options.showTime == 'undefined' ? 'guess' : options.showTime;
        var bo = typeof options.buttons == 'undefined' ? true : options.buttons;
        var weekStart = (options.weekStart || 0) % 7;
        var timeFormat = options.timeFormat || 'gx';
        var titleFormat = options.titleFormat || (r2l ? 'Y F' : 'F Y');



        //
        // Rendering bug detection variables
        //

        var tdTopBug, trTopBug, tbodyTopBug, sniffBugs = true;



        this.each(function() {


            //
            // Instance variables
            //

            var date = options.year ? // holds the year & month of current month
				new Date(options.year, options.month || 0, 1) :
				new Date();
            var start, end; // first & last VISIBLE dates
            var today;
            var numWeeks;
            var ignoreResizes = false;

            var events = [];
            var eventSources = options.eventSources || [];
            if (options.events) eventSources.push(options.events);



            //
            // Month navigation functions
            //

            function refreshMonth() {
                clearEventElements();
                render();
            }

            function prevMonth() {
                addMonths(date, -1);
                refreshMonth();
            }

            function nextMonth() {
                addMonths(date, 1);
                refreshMonth();
            }

            function gotoToday() {
                date = new Date();
                refreshMonth();
            }

            function gotoMonth(year, month) {
                date = new Date(year, month, 1);
                refreshMonth();
            }

            function prevYear() {
                addYears(date, -1);
                refreshMonth();
            }

            function nextYear() {
                addYears(date, 1);
                refreshMonth();
            }



            //
            // Publicly accessible methods
            //

            $.data(this, 'fullCalendar', {
                refresh: refreshMonth,
                prevMonth: prevMonth,
                nextMonth: nextMonth,
                today: gotoToday,
                gotoMonth: gotoMonth,
                prevYear: prevYear,
                nextYear: nextYear,


                //
                // Event CRUD
                //

                addEvent: function(event) {
                    events.push(normalizeEvent(event));
                    clearEventElements();
                    renderEvents();
                },

                updateEvent: function(event) {
                    event.start = $.fullCalendar.parseDate(event.start);
                    event.end = $.fullCalendar.parseDate(event.end);
                    var startDelta = event.start - event._start;
                    var msLength = event.end - event.start;
                    event._start = cloneDate(event.start);
                    for (var i = 0; i < events.length; i++) {
                        var e = events[i];
                        if (e.id === event.id && e !== event) {
                            e.start = new Date(e.start.getTime() + startDelta);
                            e._start = cloneDate(e.start);
                            e.end = new Date(e.start.getTime() + msLength);
                            for (var k in event) {
                                if (k && k != 'start' && k != 'end' && k.charAt(0) != '_') {
                                    e[k] = event[k];
                                }
                            }
                        }
                    }
                    clearEventElements();
                    renderEvents();
                },

                removeEvent: function(eventId) {
                    if (typeof eventId == 'object') {
                        eventId = eventId.id;
                    }

                    // remove from the 'events' array
                    var newEvents = [];
                    for (var i = 0; i < events.length; i++) {
                        if (events[i].id !== eventId) {
                            newEvents.push(events[i]);
                        }
                    }
                    events = newEvents;

                    // remove from static event sources
                    for (var i = 0; i < eventSources.length; i++) {
                        var src = eventSources[i];
                        if (typeof src != 'string' && !$.isFunction(src)) {
                            var newSrc = [];
                            for (var j = 0; j < src.length; j++) {
                                if (src[j].id !== eventId) {
                                    newSrc.push(src[j]);
                                }
                            }
                            eventSources[i] = newSrc;
                        }
                    }

                    clearEventElements();
                    renderEvents();
                },

                getEventsById: function(eventId) {
                    var res = [];
                    for (var i = 0; i < events.length; i++) {
                        if (events[i].id === eventId) {
                            res.push(events[i]);
                        }
                    }
                    return res;
                },



                //
                // Event Source CRUD
                //

                addEventSource: function(src) {
                    eventSources.push(src);
                    pushLoading();
                    fetchEventSource(src, function() {
                        popLoading();
                        clearEventElements();
                        renderEvents();
                    });
                },

                removeEventSource: function(src) {

                    // remove from 'eventSources' array
                    var newSources = [];
                    for (var i = 0; i < eventSources.length; i++) {
                        if (src !== eventSources[i]) {
                            newSources.push(eventSources[i]);
                        }
                    }
                    eventSources = newSources;

                    // remove events from 'events' array
                    var newEvents = [];
                    for (var i = 0; i < events.length; i++) {
                        if (events[i].source !== src) {
                            newEvents.push(events[i]);
                        }
                    }
                    events = newEvents;

                    clearEventElements();
                    renderEvents();
                }

            });





            /*******************************************************************/
            //
            //		Header & Table Rendering
            //
            /*******************************************************************/


            //
            // Build one-time DOM elements (header, month container)
            //

            var titleElement, todayButton, monthElement, monthElementWidth;
            var header = $("<div class='full-calendar-header'/>").appendTo(this);

            if (bo) { // "button options"
                var buttons = $("<div class='full-calendar-buttons'/>").appendTo(header);
                if (bo == true || bo.today !== false) {
                    todayButton = $("<button class='today' />")
						.append($("<span />").html(
							typeof bo.today == 'string' ?
								bo.today : "today"))
						.click(gotoToday).click(function() { return false; });
                    buttons.append(todayButton);
                }
                if (bo.prevYear) {
                    var b = $("<button class='prev-year' />")
						.append($("<span />")
							.html(typeof bo.prevYear == 'string' ?
								bo.prevYear : "&laquo;"))
						.click(prevYear).click(function() { return false; });
                    if (r2l) buttons.prepend(b);
                    else buttons.append(b);
                }
                if (bo == true || bo.prevMonth !== false) {
                    var b = $("<button class='prev-month' />")
						.append($("<span />")
							.html(typeof bo.prevMonth == 'string' ?
								bo.prevMonth : (r2l ? "&gt;" : "&lt;")))
						.click(prevMonth).click(function() { return false; });
                    if (r2l) buttons.prepend(b);
                    else buttons.append(b);
                }
                if (bo == true || bo.nextMonth !== false) {
                    var b = $("<button class='next-month' />")
						.append($("<span />").html(typeof bo.nextMonth == 'string' ?
							bo.nextMonth : (r2l ? "&lt;" : "&gt;")))
						.click(nextMonth).click(function() { return false; });
                    if (r2l) buttons.prepend(b);
                    else buttons.append(b);
                }
                if (bo.nextYear) {
                    var b = $("<button class='next-year' />")
						.append($("<span />").html(typeof bo.nextYear == 'string'
							? bo.nextYear : "&raquo;"))
						.click(nextYear).click(function() { return false; });
                    if (r2l) buttons.prepend(b);
                    else buttons.append(b);
                }
            }

            $("<div class='full-calendar-info' />").appendTo(header);

            if (options.title !== false) {
                titleElement = $("<div class='full-calendar-title'/>").appendTo(header);
            }

            monthElement = $("<div class='full-calendar-month' style='position:relative'/>")
				.appendTo($("<div class='full-calendar-month-wrap'/>").appendTo(this));


            //
            // Build the TABLE cells for the current month. (calls event fetching & rendering code)
            //

            var thead, tbody, glass;

            function render() {

                ignoreResizes = true;
                date.setDate(1);
                clearTime(date);
                var year = date.getFullYear();
                var month = date.getMonth();
                var monthTitle = $.fullCalendar.formatDate(date, titleFormat);
                if (titleElement) titleElement.text(monthTitle);

                clearTime(date);
                start = cloneDate(date);
                addDays(start, -((start.getDay() - weekStart + 7) % 7));
                end = cloneDate(date);
                addMonths(end, 1);
                addDays(end, (7 - end.getDay() + weekStart) % 7);
                numWeeks = Math.round((end.getTime() - start.getTime()) / 604800000);
                if (options.fixedWeeks != false) {
                    addDays(end, (6 - numWeeks) * 7);
                    numWeeks = 6;
                }

                today = clearTime(new Date());
                if (todayButton) {
                    if (today.getFullYear() == year && today.getMonth() == month) {
                        todayButton.css('visibility', 'hidden');
                    } else {
                        todayButton.css('visibility', 'visible');
                    }
                }

                var dayNames = $.fullCalendar.dayNames;
                var dayAbbrevs = $.fullCalendar.dayAbbrevs;

                if (!tbody) {

                    // first time, build all cells from scratch

                    var table = $("<table style='width:100%'/>").appendTo(monthElement);

                    thead = "<thead><tr>";
                    for (var i = 0; i < 7; i++) {
                        var j = (i * dis + dit + weekStart) % 7;
                        thead +=
							"<th class='" + dayAbbrevs[j].toLowerCase() +
							(i == 0 ? ' first' : '') + "'>" +
							(options.abbrevDayHeadings != false ? dayAbbrevs[j] : dayNames[j]) +
							"</th>";
                    }
                    thead = $(thead + "</tr></thead>").appendTo(table);

                    tbody = "<tbody>";
                    var d = cloneDate(start);
                    for (var i = 0; i < numWeeks; i++) {
                        tbody += "<tr class='week" + (i + 1) + "'>";
                        var tds = "";
                        for (var j = 0; j < 7; j++) {
                            var s =
								"<td class='day " + dayAbbrevs[(j + weekStart) % 7].toLowerCase() +
								(j == dit ? ' first' : '') +
								(d.getMonth() == month ? '' : ' other-month') +
								(d.getTime() == today.getTime() ? ' today' : '') +
								"'><div class='day-number'>" + (d.getTime() == today.getTime() ? '<b>Today</b> ' : '') + d.getDate() + "</div>" +
								"<div class='day-content'><div/></div></td>";
                            if (r2l) tds = s + tds;
                            else tds += s;
                            addDays(d, 1);
                        }
                        tbody += tds + "</tr>";
                    }
                    tbody = $(tbody + "</tbody>").appendTo(table);

                    // a protective coating over the TABLE
                    // intercepts mouse clicks and prevents text-selection
                    glass = $("<div style='position:absolute;top:0;left:0;z-index:1;width:100%' />")
						.appendTo(monthElement)
						.click(function(ev, ui) {
						    if (options.dayClick) {
						        buildDayGrid();
						        var td = dayTD(ev.pageX, ev.pageY);
						        if (td) return options.dayClick.call(td, dayDate(td));
						    }
						});

                } else {

                    // NOT first time, reuse as many cells as possible

                    var diff = numWeeks - tbody.find('tr').length;
                    if (diff < 0) {
                        // remove extra rows
                        tbody.find('tr:gt(' + (numWeeks - 1) + ')').remove();
                    }
                    else if (diff > 0) {
                        var trs = "";
                        for (var i = 0; i < diff; i++) {
                            trs += "<tr class='week" + (numWeeks + i) + "'>";
                            for (var j = 0; j < 7; j++) {
                                trs +=
									"<td class='day " +
									dayAbbrevs[(j * dis + dit + weekStart) % 7].toLowerCase() +
									(j == 0 ? ' first' : '') + "'>" +
									"<div class='day-number'></div>" +
									"<div class='day-content'><div/></div>" +
									"</td>";
                            }
                            trs += "</tr>";
                        }
                        if (trs) tbody.append(trs);
                    }

                    // re-label and re-class existing cells
                    var d = cloneDate(start);
                    tbody.find('tr').each(function() {
                        for (var i = 0; i < 7; i++) {
                            var td = this.childNodes[i * dis + dit];
                            if (d.getMonth() == month) {
                                $(td).removeClass('other-month');
                            } else {
                                $(td).addClass('other-month');
                            }
                            if (d.getTime() == today.getTime()) {
                                $(td).addClass('today');
                            } else {
                                $(td).removeClass('today');
                            }
                            $(td.childNodes[0]).html((d.getTime() == today.getTime() ? '<b>Today</b> ' : '') + d.getDate());
                            addDays(d, 1);
                        }
                    });

                }

                setCellSizes();

                if (sniffBugs) {
                    // nasty bugs in opera 9.25
                    // position() returning relative to direct parent
                    var tr = tbody.find('tr');
                    var td = tr.find('td');
                    var trTop = tr.position().top;
                    var tdTop = td.position().top;
                    tdTopBug = tdTop < 0;
                    trTopBug = trTop != tdTop;
                    tbodyTopBug = tbody.position().top != trTop;
                    sniffBugs = false;
                }

                fetchEvents(renderEvents);

                ignoreResizes = false;

                if (options.monthDisplay) {
                    options.monthDisplay(date.getFullYear(), date.getMonth(), monthTitle);
                }

            }


            //
            // Adjust dimensions of the cells, based on container's width
            //

            function setCellSizes() {
                var tbodyw = tbody.width();
                var cellw = Math.floor(tbodyw / 7);
                var cellh = Math.round(cellw * .85);
                thead.find('th')
					.filter(':lt(6)').width(cellw).end()
					.filter(':eq(6)').width(tbodyw - cellw * 6);
                tbody.find('td').height(cellh);
                glass.height(monthElement.height());
                monthElementWidth = monthElement.width();
            }






            /*******************************************************************/
            //
            //		Event Rendering
            //
            /*******************************************************************/


            //
            // Render the 'events' array. First, break up into segments
            //

            var eventMatrix = [];

            function renderEvents() {
                eventMatrix = [];
                var i = 0;
                var ws = cloneDate(start);
                var we = addDays(cloneDate(ws), 7);
                while (ws.getTime() < end.getTime()) {
                    var segs = [];
                    $.each(events, function(j, event) {
                        if (event.end.getTime() > ws.getTime() && event.start.getTime() < we.getTime()) {
                            var ss, se, isStart, isEnd;
                            if (event.start.getTime() < ws.getTime()) {
                                ss = cloneDate(ws);
                                isStart = false;
                            } else {
                                ss = cloneDate(event.start);
                                isStart = true;
                            }
                            if (event.end.getTime() > we.getTime()) {
                                se = cloneDate(we);
                                isEnd = false;
                            } else {
                                se = cloneDate(event.end);
                                isEnd = true;
                            }
                            ss = clearTime(ss);
                            se = clearTime((se.getHours() == 0 && se.getMinutes() == 0) ? se : addDays(se, 1));
                            segs.push({
                                event: event, start: ss, end: se,
                                isStart: isStart, isEnd: isEnd, msLength: se - ss
                            });
                        }
                    });
                    segs.sort(segCmp);
                    var levels = [];
                    $.each(segs, function(j, seg) {
                        var l = 0; // level index
                        while (true) {
                            var collide = false;
                            if (levels[l]) {
                                for (var k = 0; k < levels[l].length; k++) {
                                    if (seg.end.getTime() > levels[l][k].start.getTime() &&
										seg.start.getTime() < levels[l][k].end.getTime()) {
                                        collide = true;
                                        break;
                                    }
                                }
                            }
                            if (collide) {
                                l++;
                                continue;
                            } else {
                                break;
                            }
                        }
                        if (levels[l]) levels[l].push(seg);
                        else levels[l] = [seg];
                    });
                    eventMatrix[i] = levels;
                    addDays(ws, 7);
                    addDays(we, 7);
                    i++;
                }
                _renderEvents();
            }


            //
            // Do the REAL rendering of the segments
            //

            var eventElements = []; // [[event, element], ...]

            function _renderEvents() {
                for (var i = 0; i < eventMatrix.length; i++) {
                    var levels = eventMatrix[i];
                    var tr = tbody.find('tr:eq(' + i + ')');
                    var td = tr.find('td:first');
                    var innerDiv = td.find('div.day-content div').css('position', 'relative');
                    var top = innerDiv.position().top;
                    if (tdTopBug) top -= td.position().top;
                    if (trTopBug) top += tr.position().top;
                    if (tbodyTopBug) top += tbody.position().top;
                    var height = 0;
                    for (var j = 0; j < levels.length; j++) {
                        var segs = levels[j];
                        var maxh = 0;
                        for (var k = 0; k < segs.length; k++) {
                            var seg = segs[k];
                            var event = seg.event;
                            var left1, left2, roundW, roundE;
                            if (r2l) {
                                left2 = seg.isStart ?
									tr.find('td:eq(' + ((seg.start.getDay() - weekStart + 7) % 7 * dis + dit) + ') div.day-content div') :
									tbody;
                                left1 = seg.isEnd ?
									tr.find('td:eq(' + ((seg.end.getDay() + 6 - weekStart) % 7 * dis + dit) + ') div.day-content div').position().left :
									tbody.position().left;
                                roundW = seg.isEnd;
                                roundE = seg.isStart;
                            } else {
                                left1 = seg.isStart ?
									tr.find('td:eq(' + ((seg.start.getDay() - weekStart + 7) % 7) + ') div.day-content div').position().left :
									tbody.position().left;
                                left2 = seg.isEnd ?
									tr.find('td:eq(' + ((seg.end.getDay() + 6 - weekStart) % 7) + ') div.day-content div') :
									tbody;
                                roundW = seg.isStart;
                                roundE = seg.isEnd;
                            }
                            left2 = left2.position().left + left2.width();
                            var cl = event.className;
                            if (typeof cl == 'string') {
                                cl = ' ' + cl;
                            }
                            else if (typeof cl == 'object') {
                                cl = ' ' + cl.join(' ');
                            }
                            var element = $("<table class='event" + (cl || '') + "' />")
								.append("<tr>" +
									(roundW ? "<td class='nw'/>" : '') +
									"<td class='n'/>" +
									(roundE ? "<td class='ne'/>" : '') + "</tr>")
								.append("<tr>" +
									(roundW ? "<td class='w'/>" : '') +
									"<td class='c'/>" +
									(roundE ? "<td class='e'/>" : '') + "</tr>")
								.append("<tr>" +
									(roundW ? "<td class='sw'/>" : '') +
									"<td class='s'/>" +
									(roundE ? "<td class='se'/>" : '') + "</tr>");
                            buildEventText(event, element.find('td.c'));
                            if (options.eventRender) {
                                var res = options.eventRender(event, element);
                                if (typeof res != 'undefined') {
                                    if (res === false) continue;
                                    if (res !== true) element = $(res);
                                }
                            }
                            element
								.css({
								    position: 'absolute',
								    top: top,
								    left: left1,
								    width: left2 - left1,
								    'z-index': 3
								})
								.appendTo(monthElement);
                            initEventElement(event, element);
                            var h = element.outerHeight({ margin: true });
                            if (h > maxh) maxh = h;
                        }
                        height += maxh;
                        top += maxh;
                    }
                    innerDiv.height(height);
                }
            }


            //
            // create the text-contents of an event segment
            //

            function buildEventText(event, element) {
                $("<span class='event-title' />")
					.text(event.title)
					.appendTo(element);
                var st = typeof event.showTime == 'undefined' ? showTime : event.showTime;
                if (st != false) {
                    if (st == true || st == 'guess' &&
						(event.start.getHours() || event.start.getMinutes() ||
						 event.end.getHours() || event.end.getMinutes())) {
                        var timeStr = $.fullCalendar.formatDate(event.start, timeFormat);
                        var timeElement = $("<span class='event-time' />");
                        if (r2l) element.append(timeElement.text(' ' + timeStr));
                        else element.prepend(timeElement.text(timeStr + ' '));
                    }
                }
            }


            //
            // Attach event handlers to an event segment
            //

            function initEventElement(event, element) {
                element.click(function(ev) {
                    if (!element.hasClass('ui-draggable-dragging')) {
                        if (options.eventClick) {
                            var res = options.eventClick.call(this, event, ev);
                            if (res === false) return false;
                        }
                        if (event.url) window.location.href = event.url;
                    }
                });
                if (options.eventMouseover)
                    element.mouseover(function(ev) {
                        options.eventMouseover.call(this, event, ev);
                    });
                if (options.eventMouseout)
                    element.mouseout(function(ev) {
                        options.eventMouseout.call(this, event, ev);
                    });
                if (typeof event.draggable != 'undefined') {
                    if (event.draggable)
                        draggableEvent(event, element);
                }
                else if (options.draggable) {
                    draggableEvent(event, element);
                }
                eventElements.push([event, element]);
            }


            //
            // Remove all event segments from DOM
            //

            function clearEventElements() {
                for (var i = 0; i < eventElements.length; i++)
                    eventElements[i][1].remove();
                eventElements = [];
            }







            /*******************************************************************/
            //
            //		Drag & Drop		(and cell-coordinate stuff)
            //
            /*******************************************************************/


            //
            // Attach jQuery UI draggable
            //

            var dragStartTD, dragTD;
            var dayOverlay;

            function draggableEvent(event, element) {
                element.draggable({
                    zIndex: 4,
                    delay: 50,
                    opacity: options.eventDragOpacity,
                    revertDuration: options.eventRevertDuration,
                    start: function(ev, ui) {
                        // hide other elements with same event
                        for (var i = 0; i < eventElements.length; i++) {
                            var x = eventElements[i];
                            var xevent = x[0];
                            if (x[1].get(0) != this && (xevent == event ||
								typeof xevent.id != 'undefined' && xevent.id == event.id))
                                x[1].hide();
                        }
                        if (!dayOverlay)
                            dayOverlay =
								$("<div class='over-day' style='position:absolute;z-index:2' />")
									.appendTo(monthElement);
                        buildDayGrid();
                        dragTD = dragStartTD = null;
                        eventDrag(this, ev, ui);
                        if (options.eventDragStart)
                            options.eventDragStart.call(this, event, ev, ui);
                    },
                    drag: function(ev, ui) {
                        eventDrag(this, ev, ui);
                    },
                    stop: function(ev, ui) {
                        if (!dragTD || dragTD == dragStartTD) {
                            // show all events
                            for (var i = 0; i < eventElements.length; i++)
                                eventElements[i][1].show();
                        } else {
                            var delta = dayDelta(dragStartTD, dragTD);
                            for (var i = 0; i < events.length; i++) {
                                if (event == events[i] || typeof event.id != 'undefined' && event.id == events[i].id) {
                                    addDays(events[i].start, delta, true);
                                    addDays(events[i].end, delta, true);
                                    events[i]._start = cloneDate(events[i].start);
                                }
                            }
                            if (options.eventDrop) {
                                options.eventDrop.call(this, event, delta, ev, ui);
                            }
                            clearEventElements();
                            renderEvents();
                        }
                        dayOverlay.hide();
                        if (options.eventDragStop) {
                            options.eventDragStop.call(this, event, ev, ui);
                        }
                    }
                });
            }


            //
            // Called DURING dragging, on every mouse move
            //

            function eventDrag(node, ev, ui) {
                var oldTD = dragTD;
                dragTD = dayTD(ev.pageX, ev.pageY);
                if (!dragStartTD) dragStartTD = dragTD;
                if (dragTD != oldTD) {
                    if (dragTD) {
                        $(node).draggable('option', 'revert', dragTD == dragStartTD);
                        dayOverlay.css({
                            top: currTDY,
                            left: currTDX,
                            width: currTDW,
                            height: currTDH,
                            display: 'block'
                        });
                    } else {
                        $(node).draggable('option', 'revert', true);
                        dayOverlay.hide();
                    }
                }
            }


            //
            // Record positions & dimensions of each TD
            //

            var dayX, dayY, dayX0, dayY0;
            var currTD, currR, currC;
            var currTDX, currTDY, currTDW, currTDH;

            function buildDayGrid() {
                var tr, td, o = monthElement.offset();
                dayX0 = o.left;
                dayY0 = o.top;
                dayY = [];
                tbody.find('tr').each(function() {
                    tr = $(this);
                    dayY.push(tr.position().top +
						(trTopBug ? tbody.position().top : 0));
                });
                dayY.push(dayY[dayY.length - 1] + tr.height());
                dayX = [];
                tr.find('td').each(function() {
                    td = $(this);
                    dayX.push(td.position().left);
                });
                dayX.push(dayX[dayX.length - 1] + td.width());
                currTD = null;
            }

            //
            // Returns TD underneath coordinate (optimized)
            //

            function dayTD(x, y) {
                var r = -1, c = -1;
                var rmax = dayY.length - 1, cmax = dayX.length - 1;
                while (r < rmax && y > dayY0 + dayY[r + 1]) r++;
                while (c < cmax && x > dayX0 + dayX[c + 1]) c++;
                if (r < 0 || r >= rmax || c < 0 || c >= cmax)
                    return currTD = null;
                else if (!currTD || r != currR || c != currC) {
                    currR = r;
                    currC = c;
                    currTD = tbody.find('tr:eq(' + r + ') td:eq(' + c + ')').get(0);
                    currTDX = dayX[c];
                    currTDY = dayY[r];
                    currTDW = dayX[c + 1] - currTDX;
                    currTDH = dayY[r + 1] - currTDY;
                    return currTD;
                }
                return currTD;
            }

            //
            // Get a TD's date
            //

            function dayDate(td) {
                var i, trs = tbody.get(0).getElementsByTagName('tr');
                for (i = 0; i < trs.length; i++) {
                    var tr = trs[i];
                    for (var j = 0; j < 7; j++) {
                        if (tr.childNodes[j] == td) {
                            var d = cloneDate(start);
                            return addDays(d, i * 7 + j * dis + dit);
                        }
                    }
                }
            }

            //
            // Return the # of days between 2 TD's
            //

            function dayDelta(td1, td2) {
                var i1, i2, trs = tbody.get(0).getElementsByTagName('tr');
                for (var i = 0; i < trs.length; i++) {
                    var tr = trs[i];
                    for (var j = 0; j < 7; j++) {
                        var td = tr.childNodes[j];
                        if (td == td1) i1 = i * 7 + j * dis + dit;
                        if (td == td2) i2 = i * 7 + j * dis + dit;
                    }
                }
                return i2 - i1;
            }







            /*******************************************************************/
            //
            //		Event Sources & Fetching
            //
            /*******************************************************************/


            //
            // Fetch from ALL sources. Clear 'events' array and populate
            //

            function fetchEvents(callback) {
                events = [];
                if (eventSources.length > 0) {
                    var queued = eventSources.length;
                    var sourceDone = function() {
                        if (--queued == 0) {
                            popLoading();
                            if (callback) {
                                callback(events);
                            }
                        }
                    };
                    pushLoading();
                    for (var i = 0; i < eventSources.length; i++) {
                        fetchEventSource(eventSources[i], sourceDone);
                    }
                }
            }


            //
            // Fetch from a particular source. Append to the 'events' array
            //

            function fetchEventSource(src, callback) {
                var y = date.getFullYear();
                var m = date.getMonth();
                var reportEvents = function(a) {
                    if (date.getFullYear() == y && date.getMonth() == m) {
                        for (var i = 0; i < a.length; i++) {
                            normalizeEvent(a[i]);
                            a[i].source = src;
                        }
                        events = events.concat(a);
                    }
                    if (callback) {
                        callback(a);
                    }
                };
                if (typeof src == 'string') {
                    var params = {};
                    params[options.startParam || 'start'] = Math.round(start.getTime() / 1000);
                    params[options.endParam || 'end'] = Math.round(end.getTime() / 1000);
                    params[options.cacheParam || '_'] = (new Date()).getTime();
                    $.getJSON(src, params, reportEvents);
                }
                else if ($.isFunction(src)) {
                    src(start, end, reportEvents);
                }
                else {
                    reportEvents(src);
                }
            }


            //
            // methods for reporting loading state
            //

            var loadingLevel = 0;

            function pushLoading() {
                if (!loadingLevel++ && options.loading) {
                    options.loading(true);
                }
            }

            function popLoading() {
                if (! --loadingLevel && options.loading) {
                    options.loading(false);
                }
            }






            /*******************************************************************/
            //
            //		Begin "Main" Execution
            //
            /*******************************************************************/

            var e = $(this);
            var _e = this;
            var resizeID = 0;
            $(window).resize(function() {   // re-render table on window resize
                if (!ignoreResizes) {
                    var rid = ++resizeID;   // add a delay
                    setTimeout(function() {
                        if (rid == resizeID) {
                            // if calendar is visible
                            if (e.css('display') != 'none') {
                                // if the month width changed
                                if (monthElement.width() != monthElementWidth) {
                                    clearEventElements();
                                    setCellSizes();
                                    _renderEvents();
                                    if (options.resize) options.resize.call(_e);
                                }
                            }
                        }
                    }, 200);
                }
            });

            // let's begin...
            if (e.css('display') != 'none') {
                render();
            }




        });

        return this;
    };




    /***************************************************************************/
    //
    //		Utilities
    //
    /***************************************************************************/


    //
    // event utils
    //

    function normalizeEvent(event) {
        if (event.date) {
            event.start = event.date;
            delete event.date;
        }
        event.start = $.fullCalendar.parseDate(event.start);
        event._start = cloneDate(event.start);
        event.end = $.fullCalendar.parseDate(event.end);
        if (!event.end || event.end <= event.start) {
            event.end = addDays(cloneDate(event.start), 1);
        }
        return event;
    }

    function segCmp(a, b) {
        return (b.msLength - a.msLength) * 100 + (a.event.start - b.event.start);
    }


    //
    // string utils
    //

    function zeroPad(n) {
        return (n < 10 ? '0' : '') + n;
    }


    //
    // date utils
    //

    function addMonths(d, n, keepTime) {
        d.setMonth(d.getMonth() + n);
        if (keepTime) return d;
        return clearTime(d);
    }

    function addYears(d, n, keepTime) {
        d.setFullYear(d.getFullYear() + n);
        if (keepTime) return d;
        return clearTime(d);
    }

    function addDays(d, n, keepTime) {
        d.setDate(d.getDate() + n);
        if (keepTime) return d;
        return clearTime(d);
    }

    function clearTime(d) {
        d.setHours(0);
        d.setMinutes(0);
        d.setSeconds(0);
        d.setMilliseconds(0);
        return d;
    }

    function cloneDate(d) {
        return new Date(+d);
    }


    //
    // globally accessible date formatting & parsing
    //

    $.fullCalendar = {

        monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
        monthAbbrevs: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
        dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
        dayAbbrevs: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],

        formatDate: function(d, format) {
            var f = $.fullCalendar.dateFormatters;
            var s = '';
            for (var i = 0; i < format.length; i++) {
                var c = format.charAt(i);
                if (f[c]) {
                    s += f[c](d);
                } else {
                    s += c;
                }
            }
            return s;
        },

        dateFormatters: {
            'a': function(d) { return d.getHours() < 12 ? 'am' : 'pm' },
            'A': function(d) { return d.getHours() < 12 ? 'AM' : 'PM' },
            'x': function(d) { return d.getHours() < 12 ? 'a' : 'p' },
            'X': function(d) { return d.getHours() < 12 ? 'A' : 'P' },
            'g': function(d) { return d.getHours() % 12 || 12 },
            'G': function(d) { return d.getHours() },
            'h': function(d) { return zeroPad(d.getHours() % 12 || 12) },
            'H': function(d) { return zeroPad(d.getHours()) },
            'i': function(d) { return zeroPad(d.getMinutes()) },
            'F': function(d) { return $.fullCalendar.monthNames[d.getMonth()] },
            'm': function(d) { return zeroPad(d.getMonth() + 1) },
            'M': function(d) { return $.fullCalendar.monthAbbrevs[d.getMonth()] },
            'n': function(d) { return d.getMonth() + 1 },
            'Y': function(d) { return d.getFullYear() },
            'y': function(d) { return (d.getFullYear() + '').substring(2) },
            'c': function(d) {
                // ISO8601. derived from http://delete.me.uk/2005/03/iso8601.html
                return d.getUTCFullYear() +
					"-" + zeroPad(d.getUTCMonth() + 1) +
					"-" + zeroPad(d.getUTCDate()) +
					"T" + zeroPad(d.getUTCHours()) +
					":" + zeroPad(d.getUTCMinutes()) +
					":" + zeroPad(d.getUTCSeconds()) +
					"Z";
            }
        },

        parseDate: function(s) {
            if (typeof s == 'object')
                return s; // already a Date object
            if (typeof s == 'undefined')
                return null;
            if (typeof s == 'number')
                return new Date(s * 1000);
            return $.fullCalendar.parseISO8601(s, true) ||
			       Date.parse(s) ||
			       new Date(parseInt(s) * 1000);
        },

        parseISO8601: function(s, ignoreTimezone) {
            // derived from http://delete.me.uk/2005/03/iso8601.html
            var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
				"(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +
				"(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
            var d = s.match(new RegExp(regexp));
            if (!d) return null;
            var offset = 0;
            var date = new Date(d[1], 0, 1);
            if (d[3]) { date.setMonth(d[3] - 1); }
            if (d[5]) { date.setDate(d[5]); }
            if (d[7]) { date.setHours(d[7]); }
            if (d[8]) { date.setMinutes(d[8]); }
            if (d[10]) { date.setSeconds(d[10]); }
            if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); }
            if (!ignoreTimezone) {
                if (d[14]) {
                    offset = (Number(d[16]) * 60) + Number(d[17]);
                    offset *= ((d[15] == '-') ? 1 : -1);
                }
                offset -= date.getTimezoneOffset();
            }
            return new Date(Number(date) + (offset * 60 * 1000));
        }

    };

    // additional FullCalendar "extensions" should be attached to $.fullCalendar

})(jQuery);

//Activities Script
var emsDashBoard = {
    loadActs: function(items, islimited, member) {
        (function($) {
            $().ready(function() {
                var _items = typeof items == 'undefined' ? 5 : items;
                var _islimited = typeof islimited == 'undefined' ? true : islimited;
                var _member = typeof member == 'undefined' ? '' : member;
                WPS.BLL.WPSWebService.getLatestActivities($('#hdComp').val(), _member, '1', _items, _islimited, emsDashBoard.succGetAct, emsDashBoard.errorGetAct);
            });
        })(jQuery);
    },
    succGetAct: function(args) {
        (function($) {
            var _acts = eval(args);
            var _actsHtml = '';
            for (var i = 0; i < _acts.length; i++) {
                _actsHtml += '<div class="actDay">';
                _actsHtml += '<div class="actDay-header">';
                _actsHtml += '<b>' + dateFormat(_acts[i].date, 'dddd') + '</b>, ' + dateFormat(_acts[i].date, 'mmmm d, yyyy') + '</div>';
                var _mems = _acts[i].members;
                for (var y = 0; y < _mems.length; y++) {
                    _actsHtml += '<div class="act-element">';
                    _actsHtml += '<div class="t3t"></div><div class="t2"></div><div class="t1"></div>';
                    _actsHtml += '<div class="act-elementCon">';
                    _actsHtml += '<div class="act-elementCon-img">';
                    _actsHtml += '<a href="/Members/Profile/' + _mems[y].username + '">';
                    _actsHtml += '<img src="' + _mems[y].photo + '" alt="' + _mems[y].username + '" /></div>';
                    _actsHtml += '</a>';
                    _actsHtml += '<div class="act-elementCon-info">';

                    var _memActs = _mems[y].activities;

                    if (_memActs.length > 1) {
                        _actsHtml += '<div class="act-elementCon-info-row"><a href="/Members/Profile/' + _mems[y].username + '"><b>' + _mems[y].name + '</b></a> :</div>';
                        for (var z = 0; z < _memActs.length; z++) {
                            _actsHtml += '<div class="act-elementCon-info-row">';
                            var _actIcon = '<img alt="' + _memActs[z].icon + '" src="' + $('#hdIconsUrl').val() + _memActs[z].icon + $('#hdIconFrmt').val() + '" /><b>';
                            _actsHtml += _memActs[z].info.replace(/ICON /, _actIcon) + '</b>: ' + (_memActs[z].url != '' ? '<a href="' + _memActs[z].url + '"><b>' + _memActs[z].text + '</b></a>' : '<b>' + _memActs[z].text + '</b>') + ' on ' + dateFormat(_memActs[z].date, 'h:mm tt') + '</div>';
                            _actsHtml += _memActs[z].up;
                        }
                        if (_acts[i].limited) {
                            if (_mems[y].count > 5) {
                                var _limit = _mems[y].count - 5;
                                _actsHtml += '<div class="act-elementCon-info-row-plus">';
                                if (_limit == 1) {
                                    _actsHtml += 'Plus 1 more activity.';
                                } else {
                                    _actsHtml += 'Plus ' + _limit + ' more activities.';
                                }
                                _actsHtml += '</div>';
                            }
                        }
                    }
                    else {
                        _actsHtml += '<div class="act-elementCon-info-row">';
                        _actsHtml += '<a href="/Members/Profile/' + _mems[y].username + '"><b>' + _mems[y].name + '</b></a>: ';
                        var _actIcon = '<img alt="' + _memActs[0].icon + '" src="' + $('#hdIconsUrl').val() + _memActs[0].icon + $('#hdIconFrmt').val() + '" /><b>';
                        _actsHtml += _memActs[0].info.replace(/ICON /, _actIcon) + '</b>: ' + (_memActs[0].url != '' ? '<a href="' + _memActs[0].url + '"><b>' + _memActs[0].text + '</b></a>' : '<b>' + _memActs[0].text + '</b>') + ' on ' + dateFormat(_memActs[0].date, 'h:mm tt') + '</div>';
                        _actsHtml += _memActs[0].up;
                    }
                    _actsHtml += '</div>';
                    _actsHtml += '</div>';
                    _actsHtml += '<div class="t1"></div><div class="t2"></div><div class="t3b"></div>';
                    _actsHtml += '</div>';
                }
                _actsHtml += '</div>';
            }
            $('#actDays').append(_actsHtml);
            Shadowbox.setup();
        })(jQuery);
    },
    errorGetAct: function() {
    (function($) {
        Notification.drawSuccessNotification('There was an error, Please try again later.',false,false);
        })(jQuery);
    }
};
//End Activities Script

//function $(id) {
//    return document.getElementById(id);
//}

// Postback
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}

// Validation
function InitValidators() {
    var Page_ValidationActive = false;
    if (typeof (ValidatorOnLoad) == "function") {
        ValidatorOnLoad();
    }
}

function ValidatorOnSubmit() {
    if (Page_ValidationActive) {
        return ValidatorCommonOnSubmit();
    }
    else {
        return true;
    }
}

// Form submit
function CleanForm_OnSubmit() {
    if (typeof (ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) return false;
    return true;
}


//EmsFullCal Start
var emsFullCall = {
    loadFullCal: function() {
        emsFullCall.isAdmin = ($('#hdIsAdmin').val() == "1") ? true : false;
        emsFullCall.isSingle = ($('#hdSingle').val() == "1") ? true : false;
        $().ready(function() {

            $('#calendar').fullCalendar({
                draggable: emsFullCall.isAdmin,
                abbrevDayHeadings: false,
                weekStart: $('#hdWeekStart').val(),
                events: function(start, end, callback) {
                    var _offSet = (-1 * (new Date().getTimezoneOffset() * 60000));
                    if (emsFullCall.isSingle) {
                        WPS.BLL.WPSWebService.getEventWithinRange($('#hdComp').val(), $('#hdId').val(), new Date(start.getTime() + _offSet), new Date(end.getTime() + _offSet), function(result) {
                            var _bllEvents = eval(result);
                            var _eventsPro = [];
                            for (var i = 0; i < _bllEvents.length; i++) {

                                var _id = _bllEvents[i].id;
                                var _start = new Date(_bllEvents[i].start.y, _bllEvents[i].start.m, _bllEvents[i].start.d, _bllEvents[i].start.h, _bllEvents[i].start.mm, _bllEvents[i].start.s);
                                var _end = new Date(_bllEvents[i].end.y, _bllEvents[i].end.m, _bllEvents[i].end.d, _bllEvents[i].end.h, _bllEvents[i].end.mm, _bllEvents[i].end.s);
                                var _title = _bllEvents[i].title;
                                var _className = _bllEvents[i].className;
                                var _url = _bllEvents[i].url;
                                _eventsPro[i] = { "id": _id, "start": _start, "end": _end, "title": _title, "className": _className, "url": _url };
                            }

                            callback(_eventsPro);
                        });
                    }
                    else {
                        WPS.BLL.WPSWebService.getEventsWithinRange($('#hdComp').val(), new Date(start.getTime() + _offSet), new Date(end.getTime() + _offSet), function(result) {
                            var _bllEvents = eval(result);
                            var _eventsPro = [];
                            for (var i = 0; i < _bllEvents.length; i++) {
                                var _id = _bllEvents[i].id;
                                var _start = new Date(_bllEvents[i].start.y, _bllEvents[i].start.m, _bllEvents[i].start.d, _bllEvents[i].start.h, _bllEvents[i].start.mm, _bllEvents[i].start.s);
                                var _end = new Date(_bllEvents[i].end.y, _bllEvents[i].end.m, _bllEvents[i].end.d, _bllEvents[i].end.h, _bllEvents[i].end.mm, _bllEvents[i].end.s);
                                var _title = _bllEvents[i].title;
                                var _className = _bllEvents[i].className;
                                var _url = _bllEvents[i].url;
                                _eventsPro[i] = { "id": _id, "start": _start, "end": _end, "title": _title, "className": _className, "url": _url };
                            }

                            callback(_eventsPro);
                        });
                    }
                },
                eventMouseover: function(calEvent, jsEvent) {
                    if (emsFullCall.isAdmin) {
                        if (emsFullCall.showContextMenu) {
                            var _menu = '<div class="t3t calMenuBoarderColor" ></div><div class="t2 calMenuBoarderColor" ></div><div class="t1 calMenuBoarderColor" ></div><div id="calMenuCon" class="calMenuBoarderColor"><ul>';
                            _menu += '<li onmouseover="emsFullCall.menuDetails(\'View this event\');"><a href="' + calEvent.url + '"><img alt="View" src="/Themes/Private/img/icons/zoom.png" /></a></li>';
                            _menu += '<li onmouseover="emsFullCall.menuDetails(\'Edit this event\');"><a href="' + calEvent.parent + '/Edit"><img alt="Edit" src="/Themes/Private/img/icons/pencil.png" /></a></li>';
                            _menu += '<li onclick="emsFullCall.deleteEventSummary(\'' + calEvent.id + '\');" onmouseover="emsFullCall.menuDetails(\'Delete this instance\');"><a><img alt="Delete this instance" src="/Themes/Private/img/icons/cancel.png" /></a></li>';
                            _menu += '<li onclick="emsFullCall.deleteEvent(\'' + calEvent.id + '\');" onmouseover="emsFullCall.menuDetails(\'Delete <b>ALL</b> instances\');"><a><img alt="Delete ALL instances" src="/Themes/Private/img/icons/cross.png" /></a></li>';
                            _menu += '</ul><div id="calMenuCon-info" class="clear options">Options</div></div><div class="t1 calMenuBoarderColor" ></div><div class="t2 calMenuBoarderColor" ></div><div class="t3b calMenuBoarderColor" ></div>';

                            $('#calMenu').html(_menu);

                            var _classses = jsEvent.currentTarget.className.split(' ');
                            var _color;

                            for (var i = 0; i < _classses.length; i++) {
                                if (_classses[i].startsWith('event-clr-')) {
                                    _color = $('.' + _classses[i]).css('background-color');
                                    $('.calMenuBoarderColor').css('border-color', _color);
                                    $('#calMenuCon ul > li').hover(function() { $(this).css('background-color', _color) }, function() { $(this).css('background-color', 'transparent') });
                                    break;
                                }
                            }

                            $('#calMenu').show().css({
                                top: (jsEvent.currentTarget.offsetTop + jsEvent.currentTarget.offsetParent.offsetTop - 6) + "px",
                                left: (jsEvent.currentTarget.offsetLeft + jsEvent.currentTarget.offsetParent.offsetLeft + jsEvent.currentTarget.offsetWidth - 1) + "px",
                                position: "absolute",
                                opacity: 0.9,
                                zIndex: 2000
                            });
                        }
                        emsFullCall.bindMenuMouseOver(emsFullCall.showContextMenu);
                    }
                },
                eventMouseout: function(calEvent, jsEvent) {
                    if (emsFullCall.isAdmin) {
                        if (emsFullCall.showContextMenu) {
                            $('#calMenu').hide();
                        }
                    }
                },
                loading: function(bool) {
                    if (bool) {
                        if (emsFullCall.showDefaultMsg)
                            emsFullCall.renderInfo('.full-calendar-info', '<b>Loading...</b>');
                    }
                    else {
                        emsFullCall.showDefaultMsg = true;
                        emsFullCall.hideAndClear('.full-calendar-info');
                    }
                },
                eventDragStart: function(calEvent, jsEvent, ui) {
                    if (emsFullCall.isAdmin) {
                        emsFullCall.showContextMenu = false;
                        $('#calMenu').hide();
                    }
                },
                eventDragStop: function(calEvent, jsEvent, ui) {
                    if (emsFullCall.isAdmin) {
                        emsFullCall.showContextMenu = true;
                    }
                },
                eventDrop: function(calEvent, dayDelta, jsEvent, ui) {
                    if (emsFullCall.isAdmin) {
                        emsFullCall.renderInfo('.full-calendar-info', '<b>Updating...</b>');
                        WPS.BLL.WPSWebService.moveEventSummary($('#hdComp').val(), calEvent.id, dayDelta, emsFullCall.moveEventResult);
                    }
                }
            });
            if (emsFullCall.isAdmin) {
                emsFullCall.bindMenuMouseOver(true);
            }

        });
    },
    deleteEvent: function(arg) {
        if (emsFullCall.isAdmin) {
            emsFullCall.renderInfo('.full-calendar-info', '<b>Deleting...</b>');
            emsFullCall.showDefaultMsg = false;
            WPS.BLL.WPSWebService.deleteEventByEventSummary($('#hdComp').val(), arg, emsFullCall.refreshCal);
        }
    },
    deleteEventSummary: function(arg) {
        if (emsFullCall.isAdmin) {
            emsFullCall.renderInfo('.full-calendar-info', '<b>Deleteing...</b>');
            emsFullCall.showDefaultMsg = false;
            WPS.BLL.WPSWebService.deleteEventSummary($('#hdComp').val(), arg, emsFullCall.refreshCal);
        }
    },
    menuDetails: function(arg) {
        if (emsFullCall.isAdmin) {
            $('#calMenuCon-info').html(arg);
        }
    },
    refreshCal: function(arg) {
        if (eval(arg)) {
            $('#calMenu').html('');
            $('#calendar').fullCalendar('refresh');
        }
        else {
            emsFullCall.renderInfo('.full-calendar-info', 'Event was <b>NOT</b> deleted');
            emsFullCall.hideAndClear('.full-calendar-info');
        }
    },
    moveEventResult: function(arg) {
        if (emsFullCall.isAdmin) {
            if (eval(arg)) {
                emsFullCall.hideAndClear('.full-calendar-info');
            }
            else {
                emsFullCall.renderInfo('.full-calendar-info', 'Event was <b>NOT</b> moved');
                emsFullCall.showDefaultMsg = false;
                emsFullCall.refreshCal(true);
            }
        }
    },
    getInfo: function(args) {
        var _info = '<div class="t3"></div>';
        _info += '<div class="t2"></div>';
        _info += '<div class="t1"></div>';
        _info += '<div class="t0">' + args + '</div>';
        _info += '<div class="t1"></div>';
        _info += '<div class="t2"></div>';
        _info += '<div class="t3"></div>';
        return _info;
    },
    renderInfo: function(element, text) {
        emsFullCall.endAnimation(element);
        $(element).html(emsFullCall.getInfo(text));
    },
    hideAndClear: function(args) {
        $(args).fadeOut(2000, function() {
            $(args).html('');
            $(args).fadeIn(0);
        });
    },
    endAnimation: function(args) {
        $(args).stop(false, true);
    },
    bindMenuMouseOver: function(args) {
        if (args) {
            $('#calMenu').mouseover(function(args) {
                $('#calMenu').show();
            });
            $('#calMenu').mouseout(function(args) {
                $('#calMenu').hide();
            });
            $('#calMenuCon').mouseover(function(args) {
                $('#calMenu').show();
            });
        }
        else {
            $('#calMenu').unbind('mouseover');
            $('#calMenu').unbind('mouseout');
            $('#calMenuCon').unbind('mouseover');
        }
    },
    showContextMenu: true,
    showDefaultMsg: true,
    isAdmin: false,
    isSingle: false
};

//WPSFullCal END

/**
*
*	simpleTooltip jQuery plugin, by Marius ILIE
*	visit http://dev.mariusilie.net for details
*
**/
(function($) {
    $.fn.simpletooltip = function() {
        return this.each(function() {
            var text = $(this).attr("title");
            $(this).attr("title", "");
            if (text != undefined) {
                $(this).hover(function(e) {
                    var tipX = e.pageX + 12;
                    var tipY = e.pageY + 12;
                    $(this).attr("title", "");
                    $("body").append("<div id='simpleTooltip' style='position: absolute; z-index: 100; display: none;'>" + text + "</div>");
                    if ($.browser.msie) var tipWidth = $("#simpleTooltip").outerWidth(true)
                    else var tipWidth = $("#simpleTooltip").width()
                    $("#simpleTooltip").width(tipWidth);
                    $("#simpleTooltip").css("left", tipX).css("top", tipY).fadeIn("medium");
                }, function() {
                    $("#simpleTooltip").remove();
                    $(this).attr("title", text);
                });
                $(this).mousemove(function(e) {
                    var tipX = e.pageX + 12;
                    var tipY = e.pageY + 12;
                    var tipWidth = $("#simpleTooltip").outerWidth(true);
                    var tipHeight = $("#simpleTooltip").outerHeight(true);
                    if (tipX + tipWidth > $(window).scrollLeft() + $(window).width()) tipX = e.pageX - tipWidth;
                    if ($(window).height() + $(window).scrollTop() < tipY + tipHeight) tipY = e.pageY - tipHeight;
                    $("#simpleTooltip").css("left", tipX).css("top", tipY).fadeIn("medium");
                });
            }
        });
    }
})(jQuery);


(function($) {
    $(document).ready(function() {
        $(".with-tooltip").simpletooltip();
    });
})(jQuery);


//$.emsUploader
(function($) {

    $.fn.iselUploader = function(options) {
        var emsUploader = {
            init: function(cn) {
                var _baseElements = '<div id="' + $(cn).data('Id') + '-emsup-files"></div>';
                _baseElements += '<div id="' + $(cn).data('Id') + '-emsup-button" class="attacher fltLeft" align="right"><img class="fltLeft" alt="Upload File(s)" src="/Themes/Private/img/Icons/link.png" />Attach</div><div class="clear"></div>';
                _baseElements += '<div id="' + $(cn).data('Id') + '-emsup-dialog" title="Upload Files"><div>Select file(s) to upload</div><input type="file" id="' + $(cn).data('Id') + '-emsup-input" name="' + $(cn).data('Id') + '-emsup-input" /></div>';
                $('#' + $(cn).data('Id')).append(_baseElements);

                if ($(cn).data('locationType') == 0 || $(cn).data('locationType') == 4 || $(cn).data('locationType') == 5) {
                    //Settings
                    $('#' + $(cn).data('Id') + '-emsup-button').click(function() {
                        $('#' + $(cn).data('Id') + '-emsup-dialog').dialog('open');
                        $('#' + $(cn).data('Id') + '-emsup-input').makeAsyncUploader({
                            upload_url: '/Uploader.ashx?ScID=' + $(cn).data('scId') + ($(cn).data('multiUpload') ? '&m=m' : '') + '&c=' + $(cn).data('companyId'),
                            flash_url: '/SWF/swfupload.swf',
                            button_image_url: '/Themes/Private/img/blankButton.png',
                            disableDuringUpload: 'INPUT[type="submit"]',
                            file_types: '*.jpg;*.bmp;*.png;*.jpeg;*.gif',
                            file_types_description: 'All Images',
                            file_size_limit: '20 MB',
                            file_upload_limit: 0,
                            file_queue_limit: ($(cn).data('multiUpload') ? 0 : 1)
                        });
                    });
                }
                else if ($(cn).data('locationType') == 1) {
                    //Settings
                    $('#' + $(cn).data('Id') + '-emsup-button').click(function() {
                        $('#' + $(cn).data('Id') + '-emsup-dialog').dialog('open');
                        $('#' + $(cn).data('Id') + '-emsup-input').makeAsyncUploader({
                            upload_url: '/Uploader.ashx?ScID=' + $(cn).data('scId') + ($(cn).data('multiUpload') ? '&m=m' : '') + '&c=' + $(cn).data('companyId'),
                            flash_url: '/SWF/swfupload.swf',
                            button_image_url: '/Themes/Private/img/blankButton.png',
                            disableDuringUpload: 'INPUT[type="submit"]',
                            file_types: '*.jpg;*.bmp;*.png;*.jpeg;*.gif;*.wma;*.mp3',
                            file_types_description: 'All supported types',
                            file_size_limit: '200 MB',
                            file_upload_limit: 0,
                            file_queue_limit: ($(cn).data('multiUpload') ? 0 : 1)
                        });
                    });
                }
                else {
                    //Settings
                    $('#' + $(cn).data('Id') + '-emsup-button').click(function() {
                        $('#' + $(cn).data('Id') + '-emsup-dialog').dialog('open');
                        $('#' + $(cn).data('Id') + '-emsup-input').makeAsyncUploader({
                            upload_url: '/Uploader.ashx?ScID=' + $(cn).data('scId') + ($(cn).data('multiUpload') ? '&m=m' : '') + '&c=' + $(cn).data('companyId'),
                            flash_url: '/SWF/swfupload.swf',
                            button_image_url: '/Themes/Private/img/blankButton.png',
                            disableDuringUpload: 'INPUT[type="submit"]',
                            file_types: '*.*',
                            file_size_limit: '100 MB',
                            file_upload_limit: 0,
                            file_queue_limit: ($(cn).data('multiUpload') ? 0 : 1)
                        });
                    });
                }



                $('#' + $(cn).data('Id') + '-emsup-dialog').dialog({
                    bgiframe: true,
                    autoOpen: false,
                    height: 300,
                    width: 460,
                    resizable: false,
                    modal: true,
                    buttons: {
                        'Save uploaded files': function() {
                            emsUploader.removeNotSaved = false;
                            emsUploader.submitUploads(cn);
                            $(this).dialog('close');
                        },
                        Cancel: function() {
                            $(this).dialog('close');
                        }
                    },
                    close: function() {
                        $('#' + $(cn).data('Id') + '-emsup-input_completedMessage').html('');
                        $('#' + $(cn).data('Id') + '-emsup-input_filename').html('');
                        if (emsUploader.removeNotSaved) {
                            WPS.BLL.WPSWebService.RemoveUpload($(cn).data('scId'));
                        }
                        else {
                            emsUploader.removeNotSaved = true;
                        }
                    }
                });

                emsUploader.getUploads(cn);
            },
            submitUploads: function(cn) {
                if (!$(cn).data('insertMode')) {
                    var desc = '';
                    var comp = $(cn).data('companyId');

                    if ($(cn).data('locationType') == 1 || $(cn).data('locationType') == 5) {
                        if ($('#txtMediaDescription').length > 0) {
                            desc = $('#txtMediaDescription').val();
                        }
                    }
                    if ($(cn).data('locationType') == 5) {
                        comp = VisioRegistration.SelectedAlbum;
                    }


                    WPS.BLL.WPSWebService.SubmitNewUploads(comp, $(cn).data('scId'), $(cn).data('targetId'), $(cn).data('locationType'), desc, function(args) {
                        emsUploader.getUploads(cn);
                    });
                }
                else {
                    emsUploader.removeNotSaved = false;
                    emsUploader.getUploads(cn);
                }
            },
            getUploads: function(cn) {
                if (!$(cn).data('insertMode')) {
                    WPS.BLL.WPSWebService.getTargetMediaFiles($(cn).data('companyId'), $(cn).data('targetId'), function(args) {
                        emsUploader.drawUploads(eval(args), cn);
                        if ($(cn).data('locationType') == 1) {
                            $('#divLoading').hide();
                            $('#divAddnewMediaDialog').show();
                            Notification.drawSuccessNotification('added successfuly', false, true);

                            VisioRegistration.getGalleryImages();
                            VisioRegistration.getGalleryVideos();
                            initLightbox();
                            //$('#lnkSubmitNewMedia')
                            //                            $('#' + $(cn).data('Id') + '-emsup-input_completedMessage').html('');
                            //                            $('#' + $(cn).data('Id') + '-emsup-input_filename').html('');
                            //                            if (emsUploader.removeNotSaved) {
                            //                                WPS.BLL.WPSWebService.RemoveUpload($(cn).data('scId'));
                            //                            }
                            $('#divContainerAddMedia').fadeOut('slow');
                            //         VisioRegistration.resetPortoflio();
                            //   $(cn).data('insertMode', true);
                            return;

                        }
                        else if ($(cn).data('locationType') == 5) {
                            // WPS.BLL.WPSWebService.AddNewBridesMedia(memid, description, $('#scid').val(), function(args) {
                            //       var result = eval(args);
                            //     if (result.status) {
                            $('#divLoading').hide();
                            Notification.drawSuccessNotification('added successfuly', false, true);
                            $('#divContainerAddMedia').fadeOut('slow');
                            VisioRegistration.getAlbumImages(VisioRegistration.SelectedAlbum, VisioRegistration.AlbumName);
                            initLightbox();
                            VisioRegistration.resetPortoflio();
                            $('#divAddnewMediaDialog').show();


                            //   setTimeout("VisioRegistration.getGalleryVideos()", 9000);
                            //                                }
                            //                                else {
                            //                                    ('#divLoading').hide();
                            //                                    Notification.drawSuccessNotification('added successfuly', false, true);
                            //                                    $('#divContainerAddMedia').fadeOut('slow');
                            //                                    VisioRegistration.resetPortoflio();
                            //                                    Notification.drawSuccessNotification(result.error, false, false);
                            //                                }
                            //                            });

                        }
                        else if ($(cn).data('locationType') == 2) {

                            $("#txtOffer").val('');
                            var oid = $("#OID").val();
                            var memId = $('#hdMemId').val();
                            WPS.BLL.WPSWebService.SendNewBidOffermsg(oid, function() {
                                var bidid = $("#bidid").val();

                                WPS.BLL.WPSWebService.drowOffer(bidid, function(result2) {
                                    var stat2 = eval(result2);
                                    if (stat2.status) {
                                        WPS.BLL.WPSWebService.useOneCredit(memId, bidid);
                                        resetBidOMedia();
                                        $("#ODiv").html(stat2.Offer);
                                        $("#Otab").html(stat2.uplosdedImages);
                                        $('#divContainerLogin2').fadeOut("slow");
                                        $('.stars-wrapper2').each(function() {
                                            $(this).stars({
                                                disabled: true
                                            });
                                        });

                                    }

                                });

                            });


                        }
                    });
                }
                else {
                    WPS.BLL.WPSWebService.getSubmittedUploads($(cn).data('scId'), function(args) {
                        emsUploader.drawUploads(eval(args), cn);
                    });
                }
            },
            drawUploads: function(args, cn) {
                $('#' + $(cn).data('Id') + '-emsup-files').html('');
                emsUploader.totalUploadsSize = 0;
                emsUploader.filesCount = 0;
                if (args.length > 0 && !($(cn).data('startJob'))) {
                    for (var i = 0; i < args.length; i++) {
                        //url, name, size
                        emsUploader.filesCount += 1;
                        emsUploader.totalUploadsSize += args[i].size;
                        var _fileCon = '<div id="' + $(cn).data('Id') + '-emsup-file-' + args[i].id + '-c" class="attachedFilesCon">';
                        _fileCon += '<div id="' + $(cn).data('Id') + '-emsup-file-' + args[i].id + '" class="attachedFileDel fltLeft">';
                        _fileCon += '<input type="hidden" id="' + $(cn).data('Id') + '-emsup-file-' + args[i].id + '-i" value="' + args[i].id + '" />';
                        _fileCon += '<img alt="Remove File" title="Remove File" src="/Themes/Private/img/Icons/cross.png" />';
                        _fileCon += '</div>';
                        _fileCon += '<div class="attachedFileCon fltLeft">';
                        _fileCon += '<div class="attachedFileDetails">';
                        _fileCon += '<span class="attachedFileInfo"><b>' + args[i].name + '</b></span>';
                        _fileCon += '<i>&nbsp;(' + (args[i].size > 1048576 ? (Math.round((args[i].size / 1048576) * 100) / 100) + ' MB' : (Math.round((args[i].size / 1024) * 100) / 100) + ' KB') + ')</i>';
                        _fileCon += '</div>';
                        if ($(cn).data('locationType') == 4) {
                            var viewPath = '[view:' + (($(cn).data('insertMode')) ? args[i].id : $(cn).data('targetId')) + ']&nbsp;<a href=\"Javascript:void(0);\" onclick=\"AppendImage(\'' + (($(cn).data('insertMode')) ? args[i].id : $(cn).data('targetId')) + '\');\">Add image to topic description</a>';
                            _fileCon += '<div><div class="left">' + viewPath + '</div></div>';
                        }
                        _fileCon += '</div>';
                        _fileCon += '<div class="clear"></div>';
                        _fileCon += '</div>';
                        $('#' + $(cn).data('Id') + '-emsup-files').append(_fileCon);
                        $('#' + $(cn).data('Id') + '-emsup-file-' + args[i].id).click(function() {
                            $('#' + $(this).attr('id') + '-c').hide();
                            WPS.BLL.WPSWebService.deleteMediaFile($(cn).data('companyId'), ($(cn).data('insertMode') ? $(cn).data('scId') : $(cn).data('targetId')), $('#' + $(this).attr('id') + '-i').val(), $(cn).data('insertMode'), function(args) {
                                emsUploader.filesCount -= 1;
                                emsUploader.totalUploadsSize -= eval(args);
                            });
                        });
                    }
                }


            },
            removeNotSaved: true,
            totalUploadsSize: 0,
            filesCount: 0
        }
        var _startJob = typeof options.startJob == 'undefined' ? false : options.startJob;
        if (!_startJob) {

            //options Example
            //{ companyId:'',target:'targetDiv',id:'targetId',scId:'SecureCode',multiUpload:true,locationType:4,listStyle:1 }
            $(this).data('companyId', options.companyId);
            $(this).data('target', $(this).attr('id'));
            $(this).data('targetId', typeof options.id == 'undefined' ? '' : options.id);

            if ($(this).data('targetId') == '') {
                $(this).data('insertMode', true);
                $(this).data('targetId', options.scId);
            }
            else {
                $(this).data('insertMode', false);
            }

            $(this).data('scId', typeof options.scId == 'undefined' ? $(this).data('targetId') : options.scId);
            $(this).data('multiUpload', typeof options.multiUpload == 'undefined' ? true : options.multiUpload);
            // 0 = Unknown
            // 1 = SiteSettings
            // 2 = Comment
            // 3 = News
            // 4 = Pages
            // 5 = Events
            // 6 = Messages
            $(this).data('locationType', typeof options.locationType == 'undefined' ? 0 : options.locationType);
            // 0 = Small
            // 1 = Big
            $(this).data('listStyle', typeof options.listStyle == 'undefined' ? 0 : options.listStyle);



            $(this).data('emsUploader', emsUploader);
            $(this).data('options', options);
            $(this).data('Id', $(this).attr('id'));
            $(this).html('');

            $(this).data('inited', typeof $(this).data('inited') == 'undefined' ? false : $(this).data('inited'));
            if (!$(this).data('inited')) {
                emsUploader.init(this);
                $(this).data('inited', true);
            }

        }
        else {
            var targetId = typeof options.id == 'undefined' ? '' : options.id;

            if (targetId == '') {
                $(this).data('insertMode', true);
                $(this).data('targetId', options.scId);
            } else {
                $(this).data('insertMode', false);
                $(this).data('targetId', options.id);
            }
            $(this).data('startJob', _startJob);
            if ($(this).data('startJob')) {
                emsUploader.submitUploads(this);
            }
        }
    }
})(jQuery);


var emsJQFullCall = {
    showContextMenu: true,
    showDefaultMsg: true,
    isAdmin: false,
    isSingle: false, deleteEvent: function(arg) {
        if (emsJQFullCall.isAdmin) {
            emsJQFullCall.renderInfo('.full-calendar-info', '<b>Deleting...</b>');
            emsJQFullCall.showDefaultMsg = false;
            WPS.BLL.WPSWebService.deleteEventByEventSummary($('#hdComp').val(), arg, emsJQFullCall.refreshCal);
        }
    },
    deleteEventSummary: function(arg) {
        if (emsJQFullCall.isAdmin) {
            emsJQFullCall.renderInfo('.full-calendar-info', '<b>Deleteing...</b>');
            emsJQFullCall.showDefaultMsg = false;
            WPS.BLL.WPSWebService.deleteEventSummary($('#hdComp').val(), arg, emsJQFullCall.refreshCal);
        }
    },
    menuDetails: function(arg) {
        if (emsJQFullCall.isAdmin) {
            $('#calMenuCon-info').html(arg);
        }
    },
    refreshCal: function(arg) {
        if (eval(arg)) {
            $('#calMenu').html('');
            $('#calendar').fullCalendar('refresh');
        }
        else {
            emsJQFullCall.renderInfo('.full-calendar-info', 'Event was <b>NOT</b> deleted');
            emsJQFullCall.hideAndClear('.full-calendar-info');
        }
    },
    moveEventResult: function(arg) {
        if (emsJQFullCall.isAdmin) {
            if (eval(arg)) {
                emsJQFullCall.hideAndClear('.full-calendar-info');
            }
            else {
                emsJQFullCall.renderInfo('.full-calendar-info', 'Event was <b>NOT</b> moved');
                emsJQFullCall.showDefaultMsg = false;
                emsJQFullCall.refreshCal(true);
            }
        }
    },
    getInfo: function(args) {
        var _info = '<div class="t3"></div>';
        _info += '<div class="t2"></div>';
        _info += '<div class="t1"></div>';
        _info += '<div class="t0">' + args + '</div>';
        _info += '<div class="t1"></div>';
        _info += '<div class="t2"></div>';
        _info += '<div class="t3"></div>';
        return _info;
    },
    renderInfo: function(element, text) {
        emsJQFullCall.endAnimation(element);
        $(element).html(emsJQFullCall.getInfo(text));
    },
    hideAndClear: function(args) {
        $(args).fadeOut(2000, function() {
            $(args).html('');
            $(args).fadeIn(0);
        });
    },
    endAnimation: function(args) {
        $(args).stop(false, true);
    },
    bindMenuMouseOver: function(args) {
        if (args) {
            $('#calMenu').mouseover(function(args) {
                $('#calMenu').show();
            });
            $('#calMenu').mouseout(function(args) {
                $('#calMenu').hide();
            });
            $('#calMenuCon').mouseover(function(args) {
                $('#calMenu').show();
            });
        }
        else {
            $('#calMenu').unbind('mouseover');
            $('#calMenu').unbind('mouseout');
            $('#calMenuCon').unbind('mouseover');
        }
    },
    loadFullCal: function() {
        (function($) {
            $(document).ready(function() {
                emsJQFullCall.isAdmin = ($('#hdIsAdmin').val() == "1") ? true : false;
                emsJQFullCall.isSingle = ($('#hdSingle').val() == "1") ? true : false;
                var $calendar = $('#calendar');
                var id = 10;
                $calendar.weekCalendar({
                    timeslotsPerHour: 4,
                    allowCalEventOverlap: true,
                    abbrevDayHeadings: false,
                    firstDayOfWeek: 1, //$('#hdWeekStart').val(), //weekStartDay
                    businessHours: { start: 0, end: 24, limitDisplay: true },
                    height: function($calendar) {
                        return $(window).height() - $("h1").outerHeight();
                    },
                    eventRender: function(calEvent, $event) {
                        if (calEvent.end.getTime() < new Date().getTime()) {
                            $event.css("backgroundColor", "#aaa");
                            $event.find(".time").css({
                                "backgroundColor": "#999",
                                "border": "1px solid #888"
                            });
                        }
                    },
                    draggable: function(calEvent, $event) {
                        return emsJQFullCall.isAdmin;
                    },
                    resizable: function(calEvent, $event) {
                        return emsJQFullCall.isAdmin;
                    },
                    eventNew: function(calEvent, $event) {
                    },
                    eventDragStart: function(calEvent, jsEvent, ui) {
                        if (emsJQFullCall.isAdmin) {
                            emsJQFullCall.showContextMenu = false;
                            $('#calMenu').hide();
                        }
                    },
                    eventDragStop: function(calEvent, jsEvent, ui) {
                        if (emsJQFullCall.isAdmin) {
                            emsJQFullCall.showContextMenu = true;
                        }
                    },
                    eventDrop: function(calEvent, dayDelta, jsEvent, ui) {
                        if (emsJQFullCall.isAdmin) {
                            emsJQFullCall.renderInfo('.full-calendar-info', '<b>Updating...</b>');
                            WPS.BLL.WPSWebService.moveEventSummary($('#hdComp').val(), calEvent.id, dayDelta, emsJQFullCall.moveEventResult);
                        }
                    },
                    eventResize: function(calEvent, $event) {
                    },
                    eventClick: function(calEvent, $event) {
                    },
                    eventMouseover: function(calEvent, jsEvent) {
                        if (emsJQFullCall.isAdmin) {
                            if (emsJQFullCall.showContextMenu) {
                                var _menu = '<div class="t3t calMenuBoarderColor" ></div><div class="t2 calMenuBoarderColor" ></div><div class="t1 calMenuBoarderColor" ></div><div id="calMenuCon" class="calMenuBoarderColor"><ul>';
                                _menu += '<li onmouseover="emsJQFullCall.menuDetails(\'View this event\');"><a href="' + calEvent.url + '"><img alt="View" src="/Themes/Private/img/icons/zoom.png" /></a></li>';
                                _menu += '<li onmouseover="emsJQFullCall.menuDetails(\'Edit this event\');"><a href="' + calEvent.parent + '/Edit"><img alt="Edit" src="/Themes/Private/img/icons/pencil.png" /></a></li>';
                                _menu += '<li onclick="emsJQFullCall.deleteEventSummary(\'' + calEvent.id + '\');" onmouseover="emsJQFullCall.menuDetails(\'Delete this instance\');"><a><img alt="Delete this instance" src="/Themes/Private/img/icons/cancel.png" /></a></li>';
                                _menu += '<li onclick="emsJQFullCall.deleteEvent(\'' + calEvent.id + '\');" onmouseover="emsJQFullCall.menuDetails(\'Delete <b>ALL</b> instances\');"><a><img alt="Delete ALL instances" src="/Themes/Private/img/icons/cross.png" /></a></li>';
                                _menu += '</ul><div id="calMenuCon-info" class="clear options">Options</div></div><div class="t1 calMenuBoarderColor" ></div><div class="t2 calMenuBoarderColor" ></div><div class="t3b calMenuBoarderColor" ></div>';
                                $('#calMenu').html(_menu);
                                var _jsEvent = jsEvent;
                                var _classses = jsEvent.context.className.split(' ');
                                var _color;
                                for (var i = 0; i < _classses.length; i++) {
                                    if (_classses[i].startsWith('event-clr-')) {
                                        _color = $('.' + _classses[i]).css('background-color');
                                        $('.calMenuBoarderColor').css('border-color', _color);
                                        $('#calMenuCon ul > li').hover(function() { $(this).css('background-color', _color) }, function() { $(this).css('background-color', 'transparent') });
                                        break;
                                    }
                                }
                                $('#calMenu').show().css({
                                    top: (jsEvent.context.offsetTop + jsEvent.context.offsetParent.offsetTop - 6) + "px",
                                    left: (jsEvent.context.offsetLeft + jsEvent.context.offsetParent.offsetLeft + jsEvent.context.offsetWidth - 1) + "px",
                                    position: "absolute",
                                    opacity: 0.9,
                                    zIndex: 2000
                                });
                            }
                            emsJQFullCall.bindMenuMouseOver(emsJQFullCall.showContextMenu);
                        }
                    }, //mouse Over
                    eventMouseout: function(calEvent, jsEvent) {
                        if (emsJQFullCall.isAdmin) {
                            if (emsJQFullCall.showContextMenu) {
                                $('#calMenu').hide();
                            }
                        }
                    }, //mouse out
                    noEvents: function() {
                    },
                    data: function(start, end, callback) {
                        //callback(getEventData());
                        var _offSet = (-1 * (new Date().getTimezoneOffset() * 60000));
                        if (emsJQFullCall.isSingle) {
                            WPS.BLL.WPSWebService.getEventWithinRange($('#hdComp').val(), $('#hdId').val(), new Date(start.getTime() + _offSet), new Date(end.getTime() + _offSet), function(result) {
                                var _bllEvents = eval(result);
                                var _eventsPro = [];
                                for (var i = 0; i < _bllEvents.length; i++) {
                                    var _id = _bllEvents[i].id;
                                    var _start = new Date(_bllEvents[i].start.y, _bllEvents[i].start.m, _bllEvents[i].start.d, _bllEvents[i].start.h, _bllEvents[i].start.mm, _bllEvents[i].start.s);
                                    var _end = new Date(_bllEvents[i].end.y, _bllEvents[i].end.m, _bllEvents[i].end.d, _bllEvents[i].end.h, _bllEvents[i].end.mm, _bllEvents[i].end.s);
                                    var _title = _bllEvents[i].title;
                                    var _className = _bllEvents[i].className;
                                    var _url = _bllEvents[i].url;
                                    _eventsPro[i] = { "id": _id, "start": _start, "end": _end, "title": _title, "className": _className, "url": _url };
                                }
                                callback(_eventsPro);
                            });
                        }
                        else {
                            WPS.BLL.WPSWebService.getEventsWithinRange($('#hdComp').val(), new Date(start.getTime() + _offSet), new Date(end.getTime() + _offSet), function(result) {
                                var _bllEvents = eval(result);
                                var _eventsPro = [];
                                for (var i = 0; i < _bllEvents.length; i++) {
                                    var _id = _bllEvents[i].id;
                                    var _start = new Date(_bllEvents[i].start.y, _bllEvents[i].start.m, _bllEvents[i].start.d, _bllEvents[i].start.h, _bllEvents[i].start.mm, _bllEvents[i].start.s + 2);
                                    var _end = new Date(_bllEvents[i].end.y, _bllEvents[i].end.m, _bllEvents[i].end.d, _bllEvents[i].end.h, _bllEvents[i].end.mm, _bllEvents[i].end.s - 2);
                                    var _title = _bllEvents[i].title;
                                    var _className = _bllEvents[i].className;
                                    var _url = _bllEvents[i].url;
                                    _eventsPro[i] = { "id": _id, "start": _start, "end": _end, "title": _title, "className": _className, "url": _url };
                                }
                                callback(_eventsPro);
                            });
                        }
                    }, //data
                    loading: function(bool) {
                        if (bool) {
                            if (emsJQFullCall.showDefaultMsg)
                                emsJQFullCall.renderInfo('.full-calendar-info', '<b>Loading...</b>');
                        }
                        else {
                            emsJQFullCall.showDefaultMsg = true;
                            emsJQFullCall.hideAndClear('.full-calendar-info');
                        }
                    }
                });
                if (emsJQFullCall.isAdmin) {
                    emsJQFullCall.bindMenuMouseOver(true);
                }
            }); //document.ready
        })(jQuery);
    } //loadFullCal
};


var Notification = {
    closeSuccessNotification: function() {
        (function($) {
            $(document).ready(function() {
                $('#notify-success-container').hide();
            }); //document.ready
        })(jQuery);
    },
    drawSuccessNotification: function(Notificationtext, requireMargin, isSuccess) {
        (function($) {
            $(document).ready(function() {
                if (requireMargin) {
                    if ($('#notify-success-container').length > 0)
                        $('#notify-success-container').remove();
                    if (isSuccess)

                        $('.notifyDiv:first').append('<div id="notify-success-container" class="notify-table" style="display:none;"><div   style="width:100%; ">    <div class="divcenternotif" >   <div style="text-align:center;"><span style="margin-bottom:5px;font-family:arial;font-size:18px;line-height:30px;vertical-align:top;"> ' + Notificationtext + ' </span>  <img alt="OK" title="Success" src="/Themes/Private/img/ok_32.png" /> </div>               <div class="clear"></div>                  </div>      <div class="right" style="margin-top:-34px;"> <a title="dismiss this notification" onclick="Notification.closeSuccessNotification()">                 <img alt="Close" title="Close" src="/Themes/Public/img/bdelete-24.png" style="border:0px;cursor:pointer;" />      </a></div> <div>    <div> <div class="divpx"></div>');
                    else
                        $('.notifyDiv:first').append('<div id="notify-success-container" class="notify-table" style="display:none;"><div   style="width:100%; ">    <div class="divcenternotif">   <div style="text-align:center;"><span style="margin-bottom:5px;font-family:arial;font-size:18px;line-height:30px;vertical-align:top;"> ' + Notificationtext + ' </span>  <img alt="error" title="Success" src="/Themes/Public/img/symbol-error_32.png" /> </div>               <div class="clear"></div>                  </div>      <div class="right" style="margin-top:-34px;"> <a title="dismiss this notification" onclick="Notification.closeSuccessNotification()">                 <img alt="Close" title="Close" src="/Themes/Public/img/bdelete-24.png" style="border:0px;cursor:pointer;" />      </a></div>  <div>   <div> <div class="divpx"></div>');
                    $('#notify-success-container').fadeIn("slow");
                }
                else {
                    if ($('#notify-success-container').length > 0)
                        $('#notify-success-container').remove();
                    if (isSuccess)
                        $('.notifyDiv:first').append('<div id="notify-success-container" class="notify-table" style="display:none;"><div   style="width:100%; ">    <div class="divcenternotif">   <div style="text-align:center;"><span style="margin-bottom:5px;font-family:arial;font-size:18px;line-height:30px;vertical-align:top;">' + Notificationtext + '</span><img alt="OK" title="Success" src="/Themes/Private/img/ok_32.png" /> </div>               <div class="clear"></div>                  </div>      <div class="right" style="margin-top:-34px;"> <a title="dismiss this notification" onclick="Notification.closeSuccessNotification()">                 <img alt="Close" title="Close" src="/Themes/Public/img/bdelete-24.png" style="border:0px;cursor:pointer;" />      </a></div>  <div>   <div> <div class="divpx"></div>');
                    else
                        $('.notifyDiv:first').append('<div id="notify-success-container" class="notify-table" style="display:none;"><div   style="width:100%; ">    <div class="divcenternotif">   <div style="text-align:center;"><span style="margin-bottom:5px;font-family:arial;font-size:18px;line-height:30px;vertical-align:top;"> ' + Notificationtext + '</span><img alt="error" title="Success" src="/Themes/Public/img/symbol-error_32.png" /> </div>               <div class="clear"></div>                  </div>      <div class="right" style="margin-top:-34px;"> <a title="dismiss this notification" onclick="Notification.closeSuccessNotification()">                 <img alt="Close" title="Close" src="/Themes/Public/img/bdelete-24.png" style="border:0px;cursor:pointer;" />      </a></div> <div>    <div> <div class="divpx"></div>');
                    $('#notify-success-container').fadeIn("slow");
                }
            }); //document.ready
        })(jQuery);
    }
};