﻿
var guidEmpty = '00000000-0000-0000-0000-000000000000';


function escape(text) {
    var acEscape = ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^'];
    var reReplace = new RegExp('(\\' + acEscape.join('|\\') + ')', 'g');
    return text.replace(reReplace, '\\$1');
}

function updateVisible() {
    var count = members.length;
    for (var i = 0; i < count; i++) {
        var member = members[i];
        var memberText = member.Text;
        if (((search.test(memberText) || searchText.length == 0) && sectionSearch.test(memberText)) || member.Id == selectedMemberId) {
            if (!member.Visible) {
                $('#' + member.Id).show();
                member.Visible = true;
            }
        }
        else {
            if (member.Visible) {
                $('#' + member.Id).hide();
                member.Visible = false;
            }
        }
    }
}

var search = new RegExp();
var selectedSection = '1';
var sectionSearch = new RegExp(escape('[' + selectedSection + ']'));
var memberSelector;
var selectedMemberId;
var members = new Array;

function SelectContact() {
    var selectedContact = $('#uxMemberSelector .selectedMember');

    var selector = $.contactSelector;
    selector.find(".uxMemberImage").attr("src", selectedContact.find("img").attr("src").replace("tiny.png", "thumb.jpg"));
    selector.find(".uxMemberName").text(selectedContact.find(".uxMemberName").text());
    selector.find(".uxMemberId").val(selectedContact.attr("id").replace("uxM", ""));
    $('#uxMemberDialog').dialog('close');
}
$(document).ready(function () {
    $.contactSelector = '';
    var startTime;

    var memberSelector = $('#uxMemberDialog').dialog(
                                {
                                    width: 400,
                                    title: 'Select Member',
                                    open: function () {
                                        var selectedMember = $('#' + selectedMemberId);
                                        $('.uxMember', memberSelector).removeClass('selectedMember');
                                        if (selectedMember.length > 0) {
                                            selectedMember.addClass('selectedMember');
                                            var container = $('#uxMemberSelector');
                                            var containerTop = container.scrollTop();
                                            var containerBottom = containerTop + container.height();
                                            var elemTop = selectedMember[0].offsetTop;
                                            var elemBottom = elemTop + selectedMember.height();
                                            if (elemTop < containerTop) {
                                                container.scrollTop(elemTop);
                                            } else if (elemBottom > containerBottom) {
                                                container.scrollTop(elemBottom - container.height());
                                            }
                                        }
                                        else {
                                            selectedMemberId = null;
                                        }
                                    },
                                    buttons: {
                                        "Ok": function () {
                                            SelectContact();
                                        },
                                        "Cancel": function () { $(this).dialog("close"); }
                                    },
                                    autoOpen: false
                                });

    $('.MemberSelector').click(function (evt) {
        evt.preventDefault();
        $.contactSelector = $(this).closest('.msDiv');
        var d = new Date();
        startTime = d.getTime();
        selectedMemberId = 'uxM' + $('.uxMemberId', $.contactSelector).val()
        memberSelector.dialog('open');
    });
});

$(function () {
    $('.txtStartDate, .txtEndDate').datepicker({
        showOn: "both",
        beforeShow: customRange,
        dateFormat: "yy-mm-dd",
        firstDay: 1,
        changeFirstDay: false
    });
});
function customRange(input) {
    var min = new Date(2008, 11 - 1, 1); //Set this to your absolute minimum date
    var dateMin = min;
    var dateMax = null;
    var dayRange = 6; // Set this to the range of days you want to restrict to 
    if (input.id === "txtStartDate") {
        if ($("#txtEndDate").datepicker("getDate") != null) {
            dateMax = $("#txtEndDate").datepicker("getDate");
            dateMin = $("#txtEndDate").datepicker("getDate");
            dateMin.setDate(dateMin.getDate() - dayRange);
            if (dateMin < min) {
                dateMin = min;
            }
        }
        else {
            dateMax = new Date; //Set this to your absolute maximum date      
        }
    }
    else if (input.id === "txtEndDate") {
        dateMax = new Date; //Set this to your absolute maximum date   
        if ($("#txtStartDate").datepicker("getDate") != null) {
            dateMin = $("#txtStartDate").datepicker("getDate");
            var rangeMax = new Date(dateMin.getFullYear(), dateMin.getMonth(), dateMin.getDate() + dayRange);
            if (rangeMax < dateMax) {
                dateMax = rangeMax;
            }
        }
    }
    return {
        minDate: dateMin,
        maxDate: dateMax
    };
}



function ConvertToJson(value) {
    return str('', { '': value });
};

function sendNextEmail() {
    $.ajax({
        type: "POST",
        url: "/Portal/Anonymous/SendEmail.ashx",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false,
        success: function (returnValue) {
            var remaining = returnValue.d;
            $('#uxUnsentEmails').text(remaining.toString());
            if (remaining > 0) {
                sendNextEmail();
            }
        },
        error: function (xhr) {
            $('#uxUnsentEmails').html('<a href="SendEmails.aspx">Continue Sending</a>');
        }
    });
}

if (typeof (dw_Rotator) != "undefined") {

    //Dw_Event
    //  dw_event.js version date Apr 2008
    //  basic event handling file from dyn-web.com

    var dw_Event = {

        add: function (obj, etype, fp, cap) {
            cap = cap || false;
            if (obj.addEventListener) obj.addEventListener(etype, fp, cap);
            else if (obj.attachEvent) obj.attachEvent("on" + etype, fp);
        },

        remove: function (obj, etype, fp, cap) {
            cap = cap || false;
            if (obj.removeEventListener) obj.removeEventListener(etype, fp, cap);
            else if (obj.detachEvent) obj.detachEvent("on" + etype, fp);
        },

        DOMit: function (e) {
            e = e ? e : window.event; // e IS passed when using attachEvent though ...
            if (!e.target) e.target = e.srcElement;
            if (!e.preventDefault) e.preventDefault = function () { e.returnValue = false; return false; }
            if (!e.stopPropagation) e.stopPropagation = function () { e.cancelBubble = true; }
            return e;
        },

        getTarget: function (e) {
            e = dw_Event.DOMit(e); var tgt = e.target;
            if (tgt.nodeType != 1) tgt = tgt.parentNode; // safari...
            return tgt;
        }

    }


    //DW_Rotator
    /*************************************************************************
    This code is from Dynamic Web Coding at dyn-web.com
    Copyright 2008-2009 by Sharon Paine 
    See Terms of Use at www.dyn-web.com/business/terms.php
    regarding conditions under which you may use this code.
    This notice must be retained in the code as is!
    
    for use with dw_rotator.js
    version date: April 2009 (clearTimeout in restart)
    oct 1, 2008 (loadNewWin prop added for random)
    *************************************************************************/



    /////////////////////////////////////////////////////////////////////
    //  code to add stop/restart links

    dw_Rotator.addControls = function () {
        var els = dw_getElementsByClassName('rotator_controls');
        for (var i = 0; els[i]; i++) {
            var links = els[i].getElementsByTagName('a');
            for (var j = 0; links[j]; j++) {
                if (dw_hasClass(links[j], 'stop')) {
                    links[j].onclick = function () { dw_Rotator.stop(); return false }
                } else if (dw_hasClass(links[j], 'start')) {
                    links[j].onclick = function () { dw_Rotator.restart(); return false }
                }
            }
            els[i].style.display = 'block';
        }
    }

    // restart rotation for all instances 
    dw_Rotator.restart = function () {
        var len = dw_Rotator.col.length, obj;
        for (var i = 0; i < len; i++) {
            obj = dw_Rotator.col[i];
            if (obj && obj.id) {
                clearTimeout(obj.timer); obj.timer = null;
                obj.timer = setTimeout(obj.animString + ".rotate()", dw_Rotator.resumeDelay);
            }
        }
    }

}
// display image at random
// rObj: object literal holding data 
function dw_getRandomImage(rObj) {
    var imgAr = rObj.images; if (!imgAr) return;
    var num = Math.floor(Math.random() * imgAr.length);
    var imgStr = ''; var imgFile = imgAr[num];
    rObj.num = num; // hold which img selected
    var path = rObj.path || ''; var id = rObj.id || '';
    var title, alt = '', url;
    // If there are *any* entries for actions, alt or title include them here 
    if (rObj.alt) {
        alt = rObj.alt[num] ? rObj.alt[num] : rObj.alt[0] ? rObj.alt[0] : '';
    }
    if (rObj.title) {
        title = rObj.title[num] ? rObj.title[num] : rObj.title[0] ? rObj.title[0] : '';
    }
    if (rObj.actions) {
        url = rObj.actions[num] ? rObj.actions[num] : rObj.actions[0] ? rObj.actions[0] : null;
    }
    if (url) {
        imgStr += '<a href="';
        imgStr += typeof url == 'string' ? url : 'javascript: void ' + url;
        imgStr += rObj.loadNewWin ? '" target="_blank">' : '">';
    }

    imgStr += '<img src="' + path + imgFile + '"';
    imgStr += id ? ' id="' + id + '"' : '';
    if (title) {
        imgStr += ' title="' + title + '"';
    }
    imgStr += ' alt="' + alt + '" border="0" />';
    if (url) {
        imgStr += '</a>';
    }
    document.write(imgStr); document.close();
}


// Danny Goodman's version (DHTML def ref)
function addLoadEvent(func) {
    var oldQueue = window.onload ? window.onload : function () { };
    window.onload = function () {
        oldQueue();
        func();
    }
}

function dw_hasClass(el, cl) {
    var re = new RegExp("\\b" + cl + "\\b", "i");
    if (re.test(el.className)) {
        return true;
    }
    return false;
}

function dw_getElementsByClassName(sClass, sTag, oCont) {
    var result = [], list, i;
    var re = new RegExp("\\b" + sClass + "\\b", "i");
    oCont = oCont ? oCont : document;
    if (document.getElementsByTagName) {
        if (!sTag || sTag == "*") {
            list = oCont.all ? oCont.all : oCont.getElementsByTagName("*");
        } else {
            list = oCont.getElementsByTagName(sTag);
        }
        for (i = 0; list[i]; i++)
            if (re.test(list[i].className)) result.push(list[i]);
    }
    return result;
};


/////////////////////////////////////////////////////////////////////
// example use of function pointer in actions
// id: id by which the instance can be obtained using dw_Rotator.getInstanceById
// (id passed to constructor - id attached to img tag)
function displayImgInSubWin(id) {
    var rObj = dw_Rotator.getInstanceById(id);
    // notice access to properties of the instance available here 
    // file name could be based on the image file name, perhaps to display a larger version
    var file = rObj.imgs[rObj.ctr].src;
    openSubWin(file);
    return false;
}

// arguments: file to open, subwindow name, left, top, width, height, other attributes
// common attributes: (comma separator, no spaces!)
// "resizable,scrollbars,toolbar,location,directories,status,menubar"
// all but url are optional with defaults provided below 
function openSubWin(url, nm, x, y, w, h, atts) {
    nm = nm || "subwindow";
    atts = atts || "menubar,resizable,scrollbars";
    w = w || 600; h = h || 450;
    x = (typeof x == "number") ? x : Math.round((screen.availWidth - w) / 2);
    y = (typeof y == "number") ? y : Math.round((screen.availHeight - h) / 2);
    atts += ',width=' + w + ',height=' + h + ',left=' + x + ',top=' + y;
    var win = window.open(url, nm, atts);
    if (win) {
        if (!win.closed) { win.resizeTo(w, h); win.moveTo(x, y); win.focus(); return false; }
    }
    return true;
}


