﻿$(document).ready(function() {

    $.modal.defaults.onOpen = function(dialog) {
        dialog.overlay.fadeIn('slow', function() {
            dialog.container.slideDown('slow', function() {
                dialog.data.fadeIn('slow');
            });
        });
    };

    $.modal.defaults.onClose = function(dialog) {
        dialog.data.fadeOut('slow', function() {
            dialog.container.slideUp('slow', function() {
                dialog.overlay.fadeOut('slow', function() {
                    $.modal.close();
                });
            });
        });
    };

    $(".pairings .member_summary:last, .group-members .member:last, .group #members .member:last").addClass("last");
    $("a[disabled='disabled']").addClass("disabled");

    stripe_tables();

    fix_buttons();

    group_response_buttons();

    update_messages_autofade();

    group_invite_members();

    tooltips();

    remove_question_buttons();

    homepage_setup();

    tab_setup();

    alert_bar();

    $('.required_field_container').buttonEnable("required", "required_target");

    $('.category_selector').each(function() {
        var catsList = this.id + "_cats";
        $(this).mcDropdown('#' + catsList, { delim: " > ", allowParentSelect: true, hoverOverDelay: 500 });
    });

    $("input.watermarked").each(function() {
        var elem = $(this);
        elem.watermark(elem.attr("rel"));
    });

    $('.showPreview').click(function() {
        $(this).closest('.box').find('.preview_modal').modal({ containerCss: { margin: 'auto 0px', width: 'auto', height: 'auto' }, overlayClose: true });

        return false;
    });
});

function ScrollToElement(theElement) {
    var selectedPosX = 0;
    var selectedPosY = 0;

    while (theElement != null) {
        selectedPosX += theElement.offsetLeft;
        selectedPosY += theElement.offsetTop;
        theElement = theElement.offsetParent;
    }

    window.scrollTo(selectedPosX, selectedPosY);
}


function setupFlexPaper(swfFile, elemId) {
    //<!-- For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. --> 
    var swfVersionStr = "9.0.124";
    //<!-- To use express install, set to playerProductInstall.swf, otherwise the empty string. -->
    var xiSwfUrlStr = ""; //"${expressInstallSwf}";
    var flashvars = { 
          SwfFile : swfFile,
		  Scale : 0.6,
		  ZoomTransition : "easeOut",
		  ZoomTime : 0.5,
		  ZoomInterval : 0.1,
		  FitPageOnLoad : true,
		  FitWidthOnLoad : false,
		  PrintEnabled : true
		  };
	 var params = {
		
	    }
    params.quality = "high";
    params.bgcolor = "#ffffff";
    params.allowscriptaccess = "sameDomain";
    params.allowfullscreen = "true";
    var attributes = {};
    attributes.id = "FlexPaperViewer";
    attributes.name = "FlexPaperViewer";
    swfobject.embedSWF(
        "FlexPaperViewer.swf?v1", elemId, 
        "540", "550", 
        swfVersionStr, xiSwfUrlStr, 
        flashvars, params, attributes);
	swfobject.createCSS("#flashContent", "display:block;text-align:left;");

}

function select_groups(selectorId, groupIds) {
    var elem = $('#' + selectorId);
    elem.find('li').each(function() {
        var id = $(this).find('input[name=groupId]').val();
        $(this).removeClass('selected');
        for (var i = 0; i < groupIds.length; i++) {
            if (groupIds[i] == id)
                $(this).addClass('selected');
        }
    });
}

function setup_group_selector(selectorId, onSaveClicked, onCancelled, button) {

    var elem = $('#' + selectorId);
    var groups = elem.find('li input[type=checkbox]');

    groups.click(function() {
        if ($(this).attr('checked'))
            elem.find('#somegroups').attr('checked', true);
        else {
            if (groups.filter(':checked').size() == 0)
                elem.find('#everyone').attr('checked', true);
        }
    });

    elem.find('.everyone').click(function() {
        elem.find('.group_list').fadeOut('200');
    });

    elem.find('.somegroups').click(function() {
        elem.find('.group_list').fadeIn('200');
    });

    elem.find('#deselectall').hide().click(function() {
        groups.filter(':checked').attr('checked', false);
        $(this).hide();
        elem.find('#selectall').show();
    });

    elem.find('#selectall').click(function() {
        groups.filter(':not(:checked)').attr('checked', true);
        $(this).hide();
        elem.find('#deselectall').show();
    });

    elem.find('.cancel').click(function() { $.modal.close() });

    elem.find('.save').bind('click', function() {
        var groupIds = new Array();
        var groupNames = new Array();

        if (elem.find('input[type=radio].everyone').attr('checked'))
            groupIds.push("ALL");
        else {
            groups.filter(':checked').each(function() {
                groupIds.push(this.value);
                groupNames.push($(this).closest('li').find('h3').text());
            });
        }

        var docId = button.closest('div').find('#documentId').val();

        if (groupIds.length > 0)
            onSaveClicked(groupIds, groupNames, docId, button.closest('.status'));

        return false;
    });

    elem.find('.cancel').click(function() {
        onCancelled();
    });
}

function stripe_tables() {
    if($("table.stripable").length > 0) {
        $("table.stripable tr:odd").addClass("alt");
    }
}

function fix_buttons() {
    var buttons = "span.button.standard, span.button.action, span.button.danger, span.button.special_button";

    if ($(buttons).length > 0) {
        $(buttons)
            .append("<span class=\"clicker\">&nbsp;</span>")
            .find(".clicker")
                .click(function() {
                    $(this).parent().find("input").click();
                });
    }
}


function group_response_buttons() {
    $(".invited-group .button").click(function () {
        // Set group details div to Loading spinner
        $groupElm = $(this).closest(".invited-group");
        $detailsDiv = $groupElm.find(".details");
        
        $detailsDiv.html('<img src="/images/KITT-loader.gif" class="loading" />');
        
        var rawParams = $groupElm.attr("id").split("_");
        var groupId = parseInt(rawParams[0].replace("group", ""));
        var memberId = parseInt(rawParams[1].replace("member", ""));
        var response = $(this).attr("class").replace("button action group-", "").replace("button normal group-", "");

        var url = "/handlers/groups/invite_response.ashx?r=" + response + "&g=" + groupId + "&m=" + memberId;
        
        //alert(url);
        
        // Send AJAX request
        $.getJSON(url, function (data) {
            // Once response is received, remove the parent div in nice animated fashion
            if (data.success) {
                if ($(".group_update").length == 0) {
                    $groupElm.fadeOut('slow', function() {
                        $groupElm.remove();
                        
                        if($(".invited-group").length == 0) {
                            location.href="default.aspx";
                        }
                    });
                }
                else {
                    $(".group_update").fadeOut('slow', function() {
                        location.refresh;
                    });
                }
            }
        });        
    });
}


function update_messages_autofade() {
    if($(".group_update.GoodAlarm, .group_update.BadAlarm").length > 0) {
        $(".group_update.GoodAlarm, .group_update.BadAlarm").animate({ opacity: 1.0 }, 5000, function() {
            $(".group_update.GoodAlarm, .group_update.BadAlarm").animate({
                opacity: 0.0,
                height: "0px",
                marginTop: "0px",
                marginBottom: "0px",
                paddingTop: "0px",
                paddingBottom: "0px"
            }, 1000, function() {
                $(".group_update.GoodAlarm, .group_update.BadAlarm").remove()
            });
        });
    }
}


function group_invite_members() {
    if($("input[id$='hdnGroupId']").length > 0) {
        $(".invite-to-group #networking_contacts .member").click(function() {
            $(this).toggleClass("selected");
            return false;
        });
        
        $(".invite-to-group #networking_contacts .button.send-invites").click(send_invites_to_members);
    }
}

function send_invites_to_members() {
    var groupId = $("input[id$='hdnGroupId']").attr("value");
    
    var url = "/handlers/groups/invite_members_to_group.ashx?g=" + groupId + "&m=";
    
    if($(".invite-to-group #networking_contacts .member.selected").length > 0) {
        $(".invite-to-group #networking_contacts .member.selected").each(function(i) {
            url += $(this).attr("id") + "-";
        });
        
        if(url.lastIndexOf("-") == url.length - 1) {
            url = url.substr(0, url.length - 1);
        }
        
        $.getJSON(url, function(data) {
            if (data.success) {
                $("#invites_sent").modal({
                    containerCss: { margin: 'auto 0px', padding: '10px 15px 10px', height: 'auto', width: "370px" },
                    overlayCss: { background: "#aaa" },
                    position: [225, 540],
                    onClose: function() { 
                        location.href = location.href; 
                    }
                });
            }
        });
    }
    
    return false; 
}


function tooltips() {
    if ($(".tipped").length > 0) {
        $(".tipped").focus(function() {
            $(this).next("span.tooltip").fadeIn(250);            
        });
        
        $(".tipped").blur(function() {
            $(this).next("span.tooltip").fadeOut(250);
        });
    }
}

function remove_question_buttons() {
    $(".confirm_delete .cancel.button").click(function() {                
        $.modal.close();
        return false;
    });

    $(".confirm_delete .yes.button").click(function() {
        $(current_remove_btn).unbind("click", question_modal_confirm);
        $(current_remove_btn).click();
        return false;
    });
    
    $(".button.remove_question input").bind("click", question_modal_confirm);
}

function question_modal_confirm() {
    current_remove_btn = $(this);
    $(this).parent().parent().find(".confirm_delete").modal({
        containerCss: { margin: 'auto 0px', padding: '10px 15px 0', height: '100px', width: "370px" },
        overlayCss: { background: "#aaa" },
        position: [225, 540]
    });
    
    return false;
}

var current_remove_btn;


function homepage_setup() {

    // ----------------------------------------------------------------------------------------- Change tab code -----
    $("#new-things .section").find(".item:last").addClass("last");

    $("#new-things .section .item").hover(
        function() {
            if ($("html").hasClass("msie")) {
                $(this).find(".tip").css("display", "block");
            }
            else {
                $(this).find(".tip").fadeIn(250);
            }
        },
        function() {
            if ($("html").hasClass("msie")) {
                $(this).find(".tip").css("display", "none");
            }
            else {
                $(this).find(".tip").fadeOut(250);
            }
        }
    );
}

function tab_setup() {
    $(".client-tabs a").click(tab_click);
}


function tab_click() {
    $(".tabs li.selected, .sections .selected").removeClass("selected");
    $(this).parent().addClass("selected");

    var id = $(this).attr("id").replace("get-", "");    
    $("#" + id).addClass("selected");
                
    switch($(this).attr("id")) {            
        case "get-documents":
            $("#documents").addClass("selected");
            break;
        case "get-discussions":
            $("#discussions").addClass("selected");
            break;
        case "get-groups":
            $("#groups").addClass("selected");
            break;
        case "get-members":
            $("#members").addClass("selected");
            break;
    }
    
    return false;
}

function alert_bar() {
    $(".alerts").notification({ autoHide: true });
}

function goodAlert(text) {
    var innerHtml = null;
    
    if(text != null)
        innerHtml = '<div class="alert_bar">' + text + '</div>';

    $(".alerts").empty();
    $(".alerts").notification({ text: innerHtml, autoHide: true });
}

// ----------------------------------------------------------------------------------------- From master page -----
function popUp(URL) {
    day = new Date();
    id = day.getTime();
    eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=0,width=600,height=430,left = 540,top = 320');");
    }

    function popUpExternal(URL) {
    day = new Date();
    id = day.getTime();
    eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=1,statusbar=1,menubar=0,resizable=1,width=640,height=480,left = 520,top = 285');");
    }


    function toggleDivOL(elemID) {
    var elem = document.getElementById(elemID);
    if (elem.style.position != 'absolute') {
        elem.style.position = 'absolute';
        elem.style.left = '-4000px';
    }
    else {
        elem.style.position = 'relative';
        elem.style.left = '0px';
    }
    }

    function onChanged(sender, args)
    {
    sender.get_clientStateField().value = sender.saveClientState();
    }

    $(document).ready(
    function main_header_initPage() {
        $(".vcentre").vcentre();
        $(".hcentre").hcentre();
    }
    );

    function positionHeader() {
    $('#main_content').css("min-height", "0px");
    var footerHeight = $('#main_footer').outerHeight();
    var contentHeight = $('#main_content').outerHeight();
    var headerHeight = $('#main_header').outerHeight();
    var availHeight = (document.body.parentNode.clientHeight - 40); //(window.screen.availHeight);
    if ((contentHeight + headerHeight) < availHeight) {
        $('#main_content').css("min-height", (availHeight - (headerHeight + footerHeight)) + "px");
    }
    }

    $(document).ready(function() {
    positionHeader();
    $(window).resize(positionHeader);
    $(".footer, .vcentre, .hcentre").css("visibility", "visible");
    // Apply focus
    $("input.auto_focus:first").focus();

    if ($(".linkButton").length > 0) {
        // Attaches click event to a.linkButton's. Inspired by http://kpumuk.info/asp-net/using-panel-defaultbutton-property-with-linkbutton-control-in-asp-net/
        $(".linkButton").each(function() {
            var elm = $(this).get(0);

            if (elm && typeof (elm.click) == 'undefined') {
                elm.click = function() {
                    var result = true;
                    if (elm.onclick) result = elm.onclick();
                    if (typeof (result) == 'undefined' || result) {
                        eval(elm.getAttribute('href'));
                    }
                }
            }
        });
    }

    $(".mini_basket > a, .home, .globe").supersleight({ shim: '../images/supersleight.gif' });
    });
    
    // errors is an array of objects, each containing message and elemid
    function notifyError(errors) {
        clearErrors();
        var validationSummary = $('.error_alert');
        validationSummary.empty();

        if (window.messages != undefined) {
            validationSummary.append('<span class="validation-summary-errors">' +
                window.messages.validationError + '</span>');
        }
            
        var content = '<ul>';

        for (var i = 0; i < errors.length; i++) {
        
            var message = (errors[i].message == undefined) ? errors[i] : errors[i].message;
            
            content += '<li>' + message + '</li>';

            if (errors[i].elemid != undefined) {
                if (errors[i].elemid instanceof Array) {
                    for (var t = 0; t < errors[i].elemid.length; t++)
                        $(':input[name=' + errors[i].elemid[t] + ']').addClass('input-validation-error');
                }
                else {
                    $(':input[name=' + errors[i].elemid + ']').addClass('input-validation-error');
                }
            }
        }
        content += '</ul>';
        validationSummary.append(content).notification({ autoHide: true, debug: true });
    }
    
    function clearErrors() {
        $('.alert_bar').removeClass('input-validation-error');
    }
