﻿// ### Importantblock SwissChecklist.js
/*
* Swisschecklist Javascript
* Copyright (c) 2010 2sic internet solutions gmbh
* Author: Pascal Schweizer
* 
* Description: 
* Requires jQuery 1.3.2
*
*/
// Initilize the SwissChecklist Object
// which holds the ChecklistController, Extensions Methods etc..
var Namespaces = new Array(
"SwissChecklist",
"SwissChecklist.UI",
"SwissChecklist.ChecklistController",
"SwissChecklist.ChecklistController.Checklist",
"SwissChecklist.ChecklistController.NewChecklist",
"SwissChecklist.ChecklistController.Checklist.ViewModes",
"SwissChecklist.ChecklistController.Steps",
"SwissChecklist.ChecklistController.Publish",
"SwissChecklist.ChecklistController.Delete",
"SwissChecklist.Extensions",
"SwissChecklist.Extensions.Attachments",
"SwissChecklist.Extensions.Forms",
"SwissChecklist.Ajax"
);


function RegisterNamespace(ns) {
    var nsParts = ns.split(".");
    var root = window;

    for (var i = 0; i < nsParts.length; i++) {
        if (typeof root[nsParts[i]] == "undefined")
            root[nsParts[i]] = new Object();

        root = root[nsParts[i]];
    }
}

// Create Namespaces
for (var i = 0; i < Namespaces.length; i++) {
    RegisterNamespace(Namespaces[i]);
}


// Global const.
SwissChecklist.Ajax.SaveChecklistUrl = "/SwissChecklist/SwissChecklistServices.asmx/SaveChecklist";
SwissChecklist.ChecklistController.PercentComplete = parseInt($.trim($(".JobPercent").text()));

// Use this method to get a localized text by it's key
function GetLocalizedText(key, args) {
    if (args == undefined)
        args = new Array();
    if (typeof(SwissChecklist.LocalizedTexts[key]) == "undefined")
        return FormatString("MISSING TEXT: {0}", key);
    return FormatString(SwissChecklist.LocalizedTexts[key], args);
}
function FormatString(str, args) {
    if (typeof args == "object") {
        for (i = 0; i < args.length; i++) {
            str = str.replace('{' + i + '}', args[i]);
        }
    }
    else
        str = str.replace('{' + 0 + '}', args[0]);
    //Fix new-line contrants
    return str.replace("\\n", "\n");
}

function EscapeString(String) {
    var RegExpr = new RegExp("'", "g");
    String = String.replace(RegExpr, "&apos;");

    var RegExpr = new RegExp("\"", "g");
    String = String.replace(RegExpr, "&quote;");

    return String;
}

function UnEscapeString(String) {
    var RegExpr = new RegExp("&apos;", "g");
    String = String.replace(RegExpr, "'");

    var RegExpr = new RegExp("&quote;", "g");
    String = String.replace(RegExpr, "\"");

    return String;
}

var delay = (function() {
    var timer = 0;
    return function(callback, ms) {
        clearTimeout(timer);
        timer = setTimeout(callback, ms);
    };
})();

function newGuid() {
    var g = "";
    for (var i = 0; i < 32; i++)
        g += Math.floor(Math.random() * 0xF).toString(0xF) + (i == 7 || i == 11 || i == 15 || i == 19 ? "-" : "")
    return g;
}

function DeleteArrayElement(a, e) {
    //Delete an array element by its name
    for (var i = 0; i < a.length; i++) {
        if (a[i] == "'" + e + "'" || a[i] == e)
            a.splice(i, 1);
    }
    return a;
}

//Extend String with startswith Function
String.prototype.startsWith = function(str) { return (this.match("^" + str) == str) }

String.prototype.endsWith = function(str) { return (this.match(str + "$") == str) }
//Contains method for arrays
Array.prototype.contains = function(element) { for (var i = 0; i < this.length; i++) { if (this[i] == element) { return true; } } return false; }

// Extend jQuery to select extension tags (e.g: <span scl:extension="Forms")
$.extend($.expr[":"], {
    extension: function(a) {
        return $(a).attr("scl:extension") != "";
    }
});


(function($) {
    $.fn.disable = function() {
        ///	<summary>
        ///		Disables the set of input elements
        ///	</summary>
        ///	<returns type="jQuery" />

        return this.each(function() {
            this.disabled = 'true';
        });
    }

    $.fn.enable = function() {
        ///	<summary>
        ///		Disables the set of input elements
        ///	</summary>
        ///	<returns type="jQuery" />

        return this.each(function() {
            this.disabled = '';
        });
    }
})(jQuery);



// Ajax function
SwissChecklist.Ajax.AjaxRequest = function(WebserviceUrl, Data, Success, Error) {
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        url: WebserviceUrl,
        data: Data,
        success: function(msg) { Success(msg) },
        error: function(xhr, status, error) { alert("Error"); Error(xhr, status, error) }
    });
}


// ### SwissChecklist.UI.js

/*
* Swisschecklist.UI Javascript
* Copyright (c) 2010 2sic internet solutions gmbh
* Author: Pascal Schweizer
* 
* Description
* Requires jQuery 1.3.2, SwissChecklist.js
*
*/


// Inline Edit
$(document).ready(function () {
    SwissChecklist.ChecklistController.PercentComplete = parseInt($.trim($(".JobPercent").text()));
    try{
        $("#actionslider").slider({
            orientation: "vertical",
            min: 0,
            max: 3,
            step: 1,
            animate: true,
            value: 3
        });
    } catch (err) {}

    if (typeof ($.fn.scrollFollow) != "undefined") {
        $('#ChecklistManagement').scrollFollow({
            container: 'ChecklistContainer',
            speed: 800,
            delay: 200,
            offset: 20
        });
    }
    $("body").click(function(event) {
        if ($(event.target).parents(".checklist_template_information_panel").size() == 0)
        {
            $(".checklist_template_information_panel:first").hide();
        }
    });


    $("#actionslider a").addClass("ui-state-active");

    if (typeof ($.fn.customCheckbox) != "undefined") {
        // Initialize custom Checkboxes
        $(".ChecklistCheckbox, .StepCheckbox").customCheckbox();
        $(".UserChecklistCloseCheck input").customCheckbox();
    }

    $("#slideoptions p").click(function () {
        if (SwissChecklist.ChecklistController.PercentComplete != 100)
        {
            var position = parseInt($(this).attr("position"));
            $("#actionslider").slider("option", "value", position);
            var actions = new Array("preview", "use", "change", "sort").reverse();
            SwissChecklist.ChecklistController.Checklist.ChangeView(actions[position]);
            $("#actionslider a").addClass("ui-state-active");
        }
    });

    $("#actionslider").bind("slide", function (event, ui) {
        // Change the mode with the slider
        var sIndex = ui.value; // $("#actionslider").slider("value");
        var actions = new Array("preview", "use", "change", "sort").reverse();
        SwissChecklist.ChecklistController.Checklist.ChangeView(actions[sIndex]);
        $("#actionslider a").removeClass("ui-state-hover").addClass("ui-state-active");
    });

    //if ($.trim($(".ChecklistDefaultMode:first").text()) != "3") {
        $(document).ready(function(){
            var ChecklistDefaultMode = parseInt($.trim($(".ChecklistDefaultMode:first").text()));
            $("#actionslider").slider("option", "value", ChecklistDefaultMode);
            var actions = new Array("preview", "use", "change", "sort").reverse();
            SwissChecklist.ChecklistController.Checklist.ForceChangeView(actions[ChecklistDefaultMode]);
            $("#actionslider a").addClass("ui-state-active");
            
//            var ChecklistDefaultMode = parseInt($.trim($(".ChecklistDefaultMode:first").text()));
//            $("#actionslider").slider("option", "value", ChecklistDefaultMode);
//            var actions = new Array("preview", "use", "change", "sort").reverse();
//            SwissChecklist.ChecklistController.Checklist.ChangeView(actions[ChecklistDefaultMode]);
//            $("#actionslider a").addClass("ui-state-active");
            if ($.trim($(".ChecklistDefaultMode:first").text()) == "1") {
                $(".SCL_Step").each(function (i) {
                    SwissChecklist.ChecklistController.Steps.MarkStepAsChanged($(this));
                });
            }


            $("#ui-datepicker-div").hide();
        });
    //}

    if (SwissChecklist.ChecklistController != null)
        if (typeof (SwissChecklist.ChecklistController.Checklist.EnableCheckboxes) != 'undefined')
            SwissChecklist.ChecklistController.Checklist.EnableCheckboxes();




    $(".InsertStepBelow").live("click", function(ev) {
        var StepObject = $(this).parents(".SCL_Step");
        ClickEvent = ev;
        ClickTimer = window.setTimeout(function() {
            if (ClickEvent) { 
                if (typeof (SwissChecklist.ChecklistController.Steps.AddStep) != 'undefined')
                    SwissChecklist.ChecklistController.Steps.AddStep(StepObject);
                $("#Templates").append($("#GreenLine"));
                clearTimeout(ClickTimer); 
                ClickTimer = null; 
            }
        }, SwissChecklist.ChecklistController.DoubleClickSpeed);
        return false;
    });

    $(".InsertStepAbove").live("click", function(ev) {
        var StepObject = $(this).parents(".SCL_Step");
        ClickEvent = ev;
        ClickTimer = window.setTimeout(function() {
            if (ClickEvent) { 
                if (typeof (SwissChecklist.ChecklistController.Steps.AddStep) != 'undefined')
                    SwissChecklist.ChecklistController.Steps.AddStepAbove(StepObject);
                $("#Templates").append($("#GreenLine"));
                clearTimeout(ClickTimer); 
                ClickTimer = null; 
            }
        }, SwissChecklist.ChecklistController.DoubleClickSpeed);
        return false;
    });

    $(".InsertStepBelow").live("dblclick", function(ev) {
        window.clearTimeout(ClickTimer);
        ClickEvent = null;
        var StepID = $(this).parents(".SCL_Step").attr("id");
        var Mode = "below";

        SwissChecklist.ChecklistController.Checklist.OpenMultipleStepsForm(StepID, Mode);
        return false;
    });

    $(".InsertStepBelow").hover(function() {
        var StepObject = $(this).parents(".SCL_Step");
        StepObject.after($("#GreenLine"));
//        $("#GreenLine").data("hover", true);
    }, function() {
//        $("#GreenLine").data("hover", false);
//        setTimeout(function() {
            //if ($("#GreenLine").data("hover") == false)
                $("#Templates").append($("#GreenLine"));
//        }, 200);
    });
    $(".InsertStepAbove").hover(function() {
        var StepObject = $(this).parents(".SCL_Step");
        StepObject.before($("#GreenLine"));
//        $("#GreenLine").data("hover", true);
    }, function() {
//        $("#GreenLine").data("hover", false);
//        setTimeout(function() {
            //if ($("#GreenLine").data("hover") == false)
                $("#Templates").append($("#GreenLine"));
//        }, 200);
    });

    $(".InsertStepAbove").live("dblclick", function(ev) {
        window.clearTimeout(ClickTimer);
        ClickEvent = null;
        var StepID = $(this).parents(".SCL_Step").attr("id");
        var Mode = "above";

        SwissChecklist.ChecklistController.Checklist.OpenMultipleStepsForm(StepID, Mode);
        return false;
    });

    // Init New Step Click
        $("#Step_NewStep").click(function() {
            SwissChecklist.ChecklistController.Steps.AddStep();
            $("#Step_NewStep").hide();
        });

    $("#txtTaskTitle").bind("mousedown", function () {
        if ($(this).val() == $(this).attr("scl:defaultvalue"))
        {
            $(this).val("");
            $(this).focus();
        }
    });
    $("#txtTaskTitle").bind("blur", function () {
        if ($(this).val() == "")
            $(this).val($(this).attr("scl:defaultvalue"));
    });

    $.extend($.expr[":"], {
        extension: function (a) {
            return $(a).attr("scl:extension") != "";
        },
        ext: function (a) {
            return $(a).attr("scl:extension") == m[3];
        }
    });

    // Initialize save buttons
    $(".ChecklistSaveButton").click(function () {
        SwissChecklist.ChecklistController.SaveChecklist($(".ChecklistContainer:first"), false, "ChecklistUpdate", false);
        $(".ChecklistSaveLoader").show();
        $(".ChecklistSaveCompleted").hide();
        return false;
    });

    $(".ChecklistReactivateButton").click(function() {
        SwissChecklist.ChecklistController.SaveChecklistWithCallBack($(".ChecklistContainer:first"), false, "ChecklistUpdate", function(){
            SwissChecklist.ChecklistController.Checklist.ReactivateChecklist();
            // Force change view to preview

            $("#actionslider").slider("option", "value", 2);
            SwissChecklist.ChecklistController.Checklist.ForceChangeView("use");

        }, function() {alert('Reactivating failed');}, false);
        $(".ChecklistSaveLoader").show();
        $(".ChecklistSaveCompleted").hide();
    });

    $(".ChecklistSaveAndCompleteButton").click(function () {
        SwissChecklist.ChecklistController.SaveChecklistWithCallBack($(".ChecklistContainer:first"), false, "ChecklistUpdate", function(){
            // Open Info
            SwissChecklist.ChecklistController.Checklist.OpenTaskCompletedInfo();

            
            // disable stuff
            SwissChecklist.ChecklistController.Checklist.DisableChecklist();
            SwissChecklist.ChecklistController.PercentComplete = 100;
        }, function() {alert('Complete Job failed');}, true);
        $(".ChecklistSaveLoader").show();
        $(".ChecklistSaveCompleted").hide();
        return false;
    });

    $(".TemplateSaveButton").click(function () {
        setTimeout(function () { UserIsWorkingWithTheChecklist = true; }, 200);
        var Url = "/Default.aspx?tabid=73&SkinSrc=[G]Skins/Swisschecklist2010/Login&returnurl=%2fSwisschecklist%2fSystem%2fAuthentication%2fLoginHelper.aspx";
        jQuery.fancybox({
            type : 'iframe',
            href : decodeURIComponent(Url),
            title : GetLocalizedText("Login"),
            width : 580,
            height : 500,
            transitionIn : 'none',
            transitionOut : 'none',
        });
        return false;

    });

    $(".TemplateSaveAndCompleteButton").click(function () {
        setTimeout(function () { UserIsWorkingWithTheChecklist = true; }, 200);
        var Url = "/Default.aspx?tabid=73&SkinSrc=[G]Skins/Swisschecklist2010/Login&returnurl=%2fSwisschecklist%2fSystem%2fAuthentication%2fLoginHelper.aspx";
        jQuery.fancybox({
            type : 'iframe',
            href : decodeURIComponent(Url),
            title : GetLocalizedText("Login"),
            width : 580,
            height : 500,
            transitionIn : 'none',
            transitionOut : 'none',
        });
        return false;

    });


    $(".TemplateSaveButton2").click(function () {
        SwissChecklist.ChecklistController.SaveChecklist($(".ChecklistContainer:first"), true, "TemplateUpdate", false);
        $(".ChecklistSaveLoader").show();
        $(".ChecklistSaveCompleted").hide();
        return false;
    });

    $(".CopyChangesToTemplateButton").click(function () {
        if (confirm("This action overwrites the original template. Continue?")) {
            //$("#ChecklistManagement").tabs('select', 0);
            SwissChecklist.ChecklistController.SaveChecklist($(".ChecklistContainer:first"), true, "TemplateUpdateFromChecklist", false);
            $(".ChecklistSaveLoader").show();
            $(".ChecklistSaveCompleted").hide();
        }
        return false;
    });

    $(".TagField .ChecklistPublish_TagInput").keyup(function (e) {
        // Tag Suggestion for publish mode
        if (!$.browser.msie && (this.selectionStart != $(this).val().length))
            return false;
        $("#TagSuggestions").remove();
        if ((e.keyCode > 47 && e.keyCode < 90) || e.keyCode == 8) {
            var TagInput = $(this);
            var Tags = $(this).val().split(' ');
            var CurrentTag = Tags[Tags.length - 1];
            if (CurrentTag != null && CurrentTag != "") {
                Tags.pop();
                var DTO = {
                    TagStart: CurrentTag,
                    Language: $.trim($(".Language:first").text()),
                    ParentTags: Tags
                };
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "/SwissChecklist/SwissChecklistServices.asmx/GetTagSuggestions",
                    data: JSON.stringify(DTO),
                    dataType: "json",
                    success: function (msg) {
                        var Results = msg.d.Values;
                        if (Results.length > 0) {
                            var SuggestList = $("<ul>", {
                                id: "TagSuggestions"
                            });
                            for (var i = 0; i < Results.length; i++) {
                                var ListItem = $("<li>", {
                                    text: Results[i].Value,
                                    title: Results[i].Value,
                                    click: function () {
                                        var JoinedTags = Tags.join(" ");
                                        var NewTextBoxValue = (JoinedTags != "" ? JoinedTags + " " : "") + $(this).attr("title");
                                        TagInput.val(NewTextBoxValue);
                                        $(this).parent("ul#TagSuggestions").remove();
                                    }
                                });
                                SuggestList.append(ListItem);
                            }
                        }
                        $(".TagField").append(SuggestList);
                    },
                    error: function () {
                        // If it fails, unbind keyup event to prevent creating errors on the page and do unneeded requests
                        TagInput.unbind("keyup");
                    }
                });
            }
            else if (event.keyCode == 27) {
                $("#TagSuggestions").remove();
            }
            else {
                return false;
            }
        }
    }).click(function (e) {
        $("#TagSuggestions").remove();
    });

    // Checklist
    $(".checklist_title.ChecklistTitle span").keypress(function (e) {
        if (e.keyCode == '13')
            return false;
        return true;
    });


    $(".authreq").click(function () {
        // Do something nice for unregistered/guest users
        var Title = GetLocalizedText("NotAuthIn");
        var Message = GetLocalizedText("NotAuthInText");
        var ButtonText = GetLocalizedText("Cancel");
        SwissChecklist.ChecklistController.Checklist.FancyMessage(Title, Message, ButtonText);
        return false;
    });
    $(".functiondisabled").click(function () {
        // TODO: Do something nice for unregistered/guest users
        $("<div>", {
            text: GetLocalizedText("FunctionDisabledText")
        }).dialog({
            title: GetLocalizedText("FunctionDisabled"),
            resizable: false,
            draggable: false,
            modal: true
        });
        return false;
    });

    if ($.trim($(".UserChecklistID:first").text()) != "" && $.trim($(".UserChecklistID:first").text()) != "0")
    {
        $("#ShareChecklist").show();
    }

    $("#TaskNotesWysiwyg").wysiwyg({
        initialContent : $("#TaskNotesWysiwyg").html()
    });

    $(".SwissChecklistWysiwyg").bind("blur", function(){
        var Content = $.trim($("#TaskNotesWysiwyg").wysiwyg('getContent'));
        if (Content == "" || Content == "<P>&nbsp;</P>" || Content.replace("&nbsp;", "") == "") {
            $("#TaskNotesWysiwyg").wysiwyg('setContent', $("#TaskNotesWysiwyg").attr("scl:defaultvalue"));
        }
        $(".TaskNotes .wysiwyg .toolbar").hide();
        $("#TaskNotesWysiwyg").wysiwyg('grow');
    });

    
    $(".SwissChecklistWysiwyg").bind("focus", function(){
        var Content = $.trim($("#TaskNotesWysiwyg").wysiwyg('getContent'));
        if (Content == $("#TaskNotesWysiwyg").attr("scl:defaultvalue"))
        {
            $("#TaskNotesWysiwyg").wysiwyg('clear');
        }
        $(".TaskNotes .wysiwyg .toolbar").show();
    });


    $(".checklist_description_button").live("click", function() {
        var Container = $(this).parents(".ChecklistContainer:first");
        var Description = $(".ChecklistNotes:first", Container);
        Description.toggle();
        return false;
    });
    setTimeout(function(){
    if (!$.browser.msie)
        {
            $(".TaskNotes .wysiwyg .toolbar").show();
            $(".TaskNotes").css("margin-top", "20px");
        }
    }, 300);

    if (SwissChecklist.ChecklistController.PercentComplete == 100)
    {
        $(document).ready(function() {
            SwissChecklist.ChecklistController.Checklist.DisableChecklist();
        });
    }

});

function GetNamespace()
{
    return trim($(".Namespace:first").text());
}


/* 
* jQuery Editor
*
*/
function InsertTags(tagOpen, tagClose, sampleText, EditorID) {
    UserMayLeave = true;
    var TextArea = document.getElementById(EditorID);
    var selText, isSample = false;

    if (document.selection && document.selection.createRange) { // IE / Opera

        //save window scroll position
        if (document.documentElement && document.documentElement.scrollTop)
            var winScroll = document.documentElement.scrollTop;
        else if (document.body)
            var winScroll = document.body.scrollTop;

        //get current selection
        TextArea.focus();

        var range = document.selection.createRange();

        selText = range.text;

        //insert tags
        checkSelectedText();
        range.text = tagOpen + selText + tagClose;

        //mark sample text as selected
        if (isSample && range.moveStart) {
            if (window.opera)
                tagClose = tagClose.replace(/\n/g, '');
            range.moveStart('character', -tagClose.length - selText.length);
            range.moveEnd('character', -tagClose.length);
        }
        range.select();

        //restore window scroll position
        if (document.documentElement && document.documentElement.scrollTop)
            document.documentElement.scrollTop = winScroll
        else if (document.body)
            document.body.scrollTop = winScroll;


    } else if (TextArea.selectionStart || TextArea.selectionStart == '0') { // Firefox
        //save textarea scroll position
        var textScroll = TextArea.scrollTop;
        //get current selection
        TextArea.focus();
        var startPos = TextArea.selectionStart;
        var endPos = TextArea.selectionEnd;
        selText = TextArea.value.substring(startPos, endPos);
        //insert tags
        checkSelectedText();
        TextArea.value = TextArea.value.substring(0, startPos)
			    + tagOpen + selText + tagClose
			    + TextArea.value.substring(endPos, TextArea.value.length);
        //set new selection
        if (isSample) {
            TextArea.selectionStart = startPos + tagOpen.length;
            TextArea.selectionEnd = startPos + tagOpen.length + selText.length;
        } else {
            TextArea.selectionStart = startPos + tagOpen.length + selText.length + tagClose.length;
            TextArea.selectionEnd = TextArea.selectionStart;
        }
        //restore textarea scroll position
        TextArea.scrollTop = textScroll;
    }

    function checkSelectedText() {
        if (!selText) {
            selText = sampleText;
            isSample = true;
        } else if (selText.charAt(selText.length - 1) == ' ') { //exclude ending space char
            selText = selText.substring(0, selText.length - 1);
            tagClose += ' '
        }
    }
}

/*
* Post it
*
*/
$(function () {
    with (SwissChecklist.ChecklistController) {
        // Properties
        SwissChecklist.ChecklistController.CurrentPostItPositionElement = null;
        SwissChecklist.ChecklistController.CurrentPostItStepElement = null;
        SwissChecklist.ChecklistController.PostItOpen = false;
        SwissChecklist.ChecklistController.IsSaved = false;
        SwissChecklist.ChecklistController.DoubleClickSpeed = 220;

        Checklist.ReactivateChecklist = function() {
            // disable saving
            $("#ChecklistManagement_Save").show();
            $("#ChecklistManagement_Share").show();

            // enable reactivating
            $("#ChecklistManagement_Reopen").hide();

            // disable slider
            $("#actionslider").slider("enable");
            try {$(".jq_datepicker").datepicker("enable")} catch(err){};
            $(".jq_datepicker, .task_title_input, .ext_viewforms_wrapper").enable();

            SwissChecklist.ChecklistController.PercentComplete = 99;

            $("#slideoptions p:eq(1),#slideoptions p:eq(2),#slideoptions p:eq(3)").removeClass("deactivated");
        }

        Checklist.DisableChecklist = function() {
            // disable saving
            $("#ChecklistManagement_Save").hide();
            $("#ChecklistManagement_Share").hide();

            // enable reactivating
            $("#ChecklistManagement_Reopen").show();

            // disable slider
            $("#actionslider").slider("option", "value", 3);
            $("#actionslider").slider("disable");
            try {$(".jq_datepicker").datepicker("disable")} catch(err){};
            $(".jq_datepicker, .task_title_input, .ext_viewforms_wrapper").disable();
            SwissChecklist.ChecklistController.Checklist.ForceChangeView("preview");
            
            $("#slideoptions p:eq(1),#slideoptions p:eq(2),#slideoptions p:eq(3)").addClass("deactivated");
        }

        Steps.ReloadStep = function(StepObject, StepDetailsAreHidden) {
            
            var Data = JSON.stringify({ 'TemplateStepGuid': $(StepObject).attr("scl:stepguid"), 'JobGuid': $.trim($(".UserChecklistGUID:first").text())});
            SwissChecklist.Ajax.AjaxRequest("/SwissChecklist/SwissChecklistServices.asmx/GetStepHtml", Data, function(msg){ SwissChecklist.ChecklistController.Steps.UpdateStepHtml(StepObject, msg.d, StepDetailsAreHidden)}, function(xhr, status, error) { alert('wrong') } );
        }

        Steps.UpdateStepHtml = function(StepObject, Html, StepDetailsAreHidden){
            StepObject.after(Html);
            
            $("#Templates").append($("#LoadPanel"));
            StepObject.siblings("div").remove();
            InitializeAttachment(StepObject.next());

            SwissChecklist.ChecklistController.Steps.InitStepRollover(StepObject.next());
            SwissChecklist.ChecklistController.Steps.InitStepClick(StepObject.next());
            SwissChecklist.ChecklistController.Steps.InitLinkPreview(StepObject.next());
            SwissChecklist.Extensions.Forms.Initialize(StepObject.next());
            $(".SCL_MouseoverButtons", StepObject.next()).show();
            // Add Checklist Change
            $(this).click(function() {
                if (ChecklistHasChange)
                    ChecklistHasChange();
            });

            /*if (!StepDetailsAreHidden)
            {
                // Show Details
                $(".SCL_Details", StepObject.next()).removeClass("SCL_Hidden");
            }*/
            if ($(".SCL_Details .ext_attachments ul li", StepObject.next()).length > 0)
            {
                $(".SCL_Details", StepObject.next()).removeClass("SCL_Hidden");
            } else if ($.trim($(".SCL_Details", StepObject.next()).text()) != "")
            {
                $(".SCL_Details", StepObject.next()).removeClass("SCL_Hidden");
            } else {
                $(".SCL_Details", StepObject.next()).addClass("SCL_Hidden");
            }
           


            $("#Templates").append($("#EditButtons"));

            StepObject.remove();

           

            setTimeout(function() {
            ChangeExtensionFormsChecklistMode("change");
            }, 5);

            if (typeof ($.fn.customCheckbox) != "undefined")
                $(".ChecklistCheckbox").customCheckbox();
        }

        Checklist.FancyConfirm = function(Message, OkButton, CancelButton, Title, callback)
        {
            var ReturnValue;
            jQuery.fancybox({
                modal: true,
                changeSpeed: 0,
                title: Title,
                content : "<div class=\"ConfirmMessage\">"+Message+"<div class=\"ConfirmButtons\"><input id=\"fancyConfirm_cancel\" type=\"button\" style=\"padding: 3px; width: 80px;\" value=\"" + CancelButton + "\"><input id=\"fancyConfirm_ok\" type=\"button\" style=\"padding: 3px; width: 80px;\" value=\"" + OkButton + "\"></div></div>",
                onComplete : function() 
                {
                    jQuery("#fancyConfirm_cancel").click(function() {
                        ReturnValue = false;
                        jQuery.fancybox.close();
                    })
                    jQuery("#fancyConfirm_ok").click(function() {
                        ReturnValue = true;
                        jQuery.fancybox.close();
                    })
                },
                onClosed : function() {
                    if (typeof(callback) == "function")
                        callback.call(this,ReturnValue);
                },
                transitionIn: 'none',
                transitionOut: 'none'
            });
        }

        Checklist.FancyMessage = function(Title, Message, ButtonText) {
            jQuery.fancybox({
                modal : true,
                changeSpeed : 0,
                title : Title,
                content : "<div class=\"ConfirmMessage\">"+Message+"<div class=\"ConfirmButtons\"><input id=\"fancyConfirm_cancel\" type=\"button\" value=\"" + ButtonText + "\"></div></div>",
                onComplete : function()
                {
                    jQuery("#fancyConfirm_cancel").click(function() {
                        jQuery.fancybox.close();
                    })
                },
                transitionIn : 'none',
                transitionOut : 'none' 
            });
            return false;
        };

        Checklist.TryToAutosave = function(callback) {
            SwissChecklist.ChecklistController.Checklist.FancyConfirm(GetLocalizedText("HaveToSave"), GetLocalizedText("Save"), GetLocalizedText("Cancel"), GetLocalizedText("ConfirmSaving"), callback);
        }

        Checklist.OpenPublishDialog = function() {

            SwissChecklist.ChecklistController.Publish.InitDialog();

            jQuery.fancybox({
                type : 'inline',
                href : '#ChecklistPublichContent',
                title : "Publish",
                width: 593,
                height: 500,
                transitionIn : 'none',
                transitionOut : 'none',
                autoDimensions : false,
                onClose : function() {

                }
            });
        }

        Checklist.OpenPublishDialogForce = function() {
            $.fancybox.close();
            setTimeout(function() {
                SwissChecklist.ChecklistController.Publish.InitDialog();

                jQuery.fancybox({
                    type : 'inline',
                    href : '#ChecklistPublichContent',
                    title : "Publish",
                    width: 593,
                    height: 500,
                    transitionIn : 'none',
                    transitionOut : 'none',
                    autoDimensions : false,
                    onClose : function() {

                    }
                });
            }, 300);
            
            
        }

        Checklist.OpenChangeDescriptionForm = function() {

            var Url = "/SwissChecklist/Dialogs/ChangeDescriptionForm/ChangeDescriptionForm.aspx?Lang=" + $.trim($(".Language:first").text()) + "&mode=checklist";
            var Value = $(".ChecklistNotes:first").attr("scl:checklistdescription");
            var Link = $(".checklist_intro_changebutton:first");
            $(".checklist_intro_changebutton:first").remove();
            var Html = $(".ChecklistNotes:first").html();
            $(".ChecklistNotes:first").prepend(Link);

            $(".TempDescriptionHolder:first").attr("scl:description", Value);
            $(".TempDescriptionHolder:first").attr("scl:descriptionhtml", Html);

            jQuery.fancybox({
                type : 'iframe',
                href : decodeURIComponent(Url),
                title : GetLocalizedText("ChangeDescription"),
                width : 580,
                height : 500,
                transitionIn : 'none',
                transitionOut : 'none',
                onComplete: function(){
                    // Fill the Textfield
//                    var Frame = $("#fancybox-frame");
//                    Frame.Description = Value;
//                    Frame.DescriptionHtml = Html;
                    
//                    alert(Frame.contents().find("body").length);
//                    setTimeout(function() {
//                        var Frame = $("#fancybox-frame");
//                        Frame.contents().find("body #txtDescription").val(Value);
//                        Frame.contents().find("body #DescriptionPreview").html(Html);
//                    }, 200);
                }
            });
            return false;
        }

        Checklist.OpenTaskCompletedInfo = function() {
            var Changed = $.trim($(".ChecklistIsNotSameAsTemplate:first").text());

            var Url = "/SwissChecklist/Dialogs/TaskCloseInfo/TaskCloseInfo.aspx?Lang=" + $.trim($(".Language:first").text()) + "&changed=" + Changed;
            
            jQuery.fancybox({
                type : 'iframe',
                href : decodeURIComponent(Url),
                title : GetLocalizedText("CloseTaskTitle"),
                width : 580,
                height : 500,
                transitionIn : 'none',
                transitionOut : 'none'
            });
            return false;
        }




        Checklist.ChangeStatusToUseWithEffect = function()
        {
            if (SwissChecklist.ChecklistController.PercentComplete != 100)
            {
                // Change Status
                $("#actionslider").slider("option", "value", 2);
                SwissChecklist.ChecklistController.Checklist.ChangeView("use");

                // Make Effect
                var SlidePointUse = $("#slideoptions p:eq(1)");
                SlidePointUse.fadeOut("fast", function(){
                    SlidePointUse.fadeIn("fast", function() {
                        SlidePointUse.fadeOut("fast", function(){
                            SlidePointUse.fadeIn("fast");
                        });
                    });
                });
            }
        }

        Checklist.UpdateChecklistDescription = function(PlainText, Html) {
               $(".ChecklistNotes:first").attr("scl:checklistdescription", PlainText);
               
               var ChangeButton = $(".checklist_intro_changebutton:first");
               $(".ChecklistNotes:first").empty().append(ChangeButton);
               $(".ChecklistNotes:first").prepend(Html);
        }

        Steps.UpdateStepDescription = function(PlainText, Html) {
            var CurrentEditStep = $("li.modify_step:first");
            $(".SCL_Details:first", CurrentEditStep).attr("scl:notes", PlainText);
            $(".SCL_Details:first", CurrentEditStep).contents().each(function(i){
                if (!$(this).hasClass("SCL_ChangeDetails") && !$(this).hasClass("ext_attachments"))
                    $(this).remove();
            });
             $(".SCL_Details:first", CurrentEditStep).prepend(Html);
        }

        Steps.OpenChangeStepDescriptionForm = function() {
            var CurrentEditStep = $("li.modify_step:first");

            var Url = "/SwissChecklist/Dialogs/ChangeDescriptionForm/ChangeDescriptionForm.aspx?Lang=" + $.trim($(".Language:first").text()) + "&mode=step";
            var Value = $(".SCL_Details:first", CurrentEditStep).attr("scl:notes");
            var Html = $(".SCL_Details:first", CurrentEditStep).html();

            $(".TempDescriptionHolder:first").html(Html);
            $(".TempDescriptionHolder:first .SCL_ChangeDetails").remove();
            $(".TempDescriptionHolder:first .ext_attachments").remove();
            Html = $(".TempDescriptionHolder:first").html();

            $(".TempDescriptionHolder:first").attr("scl:description", Value);
            $(".TempDescriptionHolder:first").attr("scl:descriptionhtml", Html);


            $(".TempDescriptionHolder:first").html("");
            jQuery.fancybox({
                type : 'iframe',
                href : decodeURIComponent(Url),
                title : GetLocalizedText("ChangeStepDescription"),
                width : 580,
                height : 500,
                transitionIn : 'none',
                transitionOut : 'none',
                onComplete: function(){
                    // Fill the Textfield
                    //setTimeout(function() {
                        //var Frame = $("#fancybox-frame");
                        //Frame.contents().find("body #txtDescription").val(Value);
                        //Frame.contents().find("body #DescriptionPreview").html(Html);
                        //Frame.contents().find("body #DescriptionPreview .SCL_ChangeDetails").remove();
                        //Frame.contents().find("body #DescriptionPreview .ext_attachments").remove();

                    //}, 50);
                },
                onClosed: function(){
                    $(".SCL_ChangeDetails", CurrentEditStep).show();
                }
            });
            return false;
        }

        Checklist.OpenMultipleStepsForm = function(StepID, Mode) {
            var Url = "/SwissChecklist/Dialogs/InsertMultipleSteps/InsertMultipleSteps.aspx?Lang=" + $.trim($(".Language:first").text()) + "&stepid=" + StepID + "&mode=" + Mode;

            jQuery.fancybox({
                type : 'iframe',
                href : decodeURIComponent(Url),
                title : GetLocalizedText("InsertMultipleSteps"),
                width : 593,
                height : 500,
                transitionIn : 'none',
                transitionOut : 'none'
            });
            return false;
        }

        Checklist.InsertMultipleSteps = function(StepID, Mode, Steps) {
            var StepObj = $("#" + StepID);

            if (Mode == "below")
                Steps = Steps.reverse();

            for (var i = 0; i < Steps.length; i++) {
                if ($.trim(Steps[i]) != "") {
                    if (Mode == "below")
                        SwissChecklist.ChecklistController.Steps.AddStepWithoutEditing(StepObj, $.trim(Steps[i]));
                    else
                        SwissChecklist.ChecklistController.Steps.AddStepWithoutEditingAbove(StepObj, $.trim(Steps[i]));
                }
            }
            $.fancybox.close();
        }


        Steps.InitSteps = function () {
            $(".SCL_Step").each(function (i) {
                var Step = $(this);
                var Notes = $(".SCL_UserNotes", Step).attr("scl:notes");
                if (Notes != "") {
                    Steps.HidePostItButton(Step);
                    Steps.ShowPostItButton(Step);
                }
                SwissChecklist.ChecklistController.Steps.InitLinkPreview(Step);
            });
        }

        Steps.InitPostIt = function () {
            $(".SCL_StepLine").mouseenter(function (e) {
                var Step = $(this).parents(".SCL_Step:first");
                if (CurrentPostItStepElement == null || CurrentPostItStepElement.attr("id") != Step.attr("id")) {
                    if ($(".SCL_UserNotes", Step).attr("scl:notes") == "")
                        Steps.ShowPostItButton(Step);
                }
            });

            $(".SCL_StepLine").mouseleave(function (e) {
                var Step = $(this).parents(".SCL_Step:first");
                if (CurrentPostItStepElement == null || CurrentPostItStepElement.attr("id") != Step.attr("id")) {
                    if ($(".SCL_UserNotes", Step).attr("scl:notes") == "")
                        Steps.HidePostItButton(Step);
                }
            });
        }

        Steps.DisposePostIt = function () {
            $(".SCL_StepLine").unbind("mouseenter").unbind("mouseleave");
        }

        Steps.InitChangeIcon = function() {
            $(".SCL_StepLine").mouseenter(function (e) {
                var Step = $(this).parents(".SCL_Step:first");
                if (!Step.hasClass("modify_step"))
                    $(".SCL_MouseoverButtons:first", Step).append($("#EditIcon")); 
            });

            $(".SCL_StepLine").mouseleave(function (e) {
                var Step = $(this).parents(".SCL_Step:first");
                $("#Templates").append($("#EditIcon"));
            });
        }

        Steps.DisposeChangeIcon = function () {
            $(".SCL_StepLine").unbind("mouseenter").unbind("mouseleave");
        }

        Steps.ClosePostIt = function () {
            var PostIt = $("#PostItBox");
            if (CurrentPostItPositionElement != null) {
                var Step = $(CurrentPostItPositionElement).parents(".SCL_Step:first");
                var NoteManager = $(".SCL_UserNotes:first", Step);

                if ($("textarea", PostIt).val() != $("textarea", PostIt).attr("title")) {
                    NoteManager.attr("scl:notes", EscapeString($("textarea", PostIt).val()))

                } else {
                    var Step = $(CurrentPostItPositionElement).parents(".SCL_Step:first");
                    var NoteManager = $(".SCL_UserNotes", Step);
                    NoteManager.attr("scl:notes", "")
                }
                if (NoteManager.attr("scl:notes") == "") {
                    Steps.HidePostItButton(CurrentPostItStepElement);
                }
            }
            $("#Templates").append($("#PostItBox"));
        }

        Steps.ShowPostItButton = function (StepObject) {
            // if there isnt a postitbutton
            var PostItButtonClone = $("#PostItButton", "#Templates").clone();
            if ($(".SCL_MouseoverButtons:first #PostItButton", StepObject).size() == 0) {
                $(".SCL_MouseoverButtons:first", StepObject).append(PostItButtonClone).show();
                PostItButtonClone.click(function () {
                    UserMayLeave = true;
                    UserIsWorkingWithTheChecklist = false;

                    if (PostItOpen == this) {
                        Steps.ClosePostIt();
                        CurrentPostItPositionElement = null;
                        CurrentPostItStepElement = null;
                        PostItOpen = null;
                    }
                    else {
                        PostItOpen = this;
                        Steps.GetPostIt(this);
                    }
                });
            }
        }

        Steps.HidePostItButton = function (StepObject) {
            // it the postitvalue is empty
            $("#PostItButton:first", StepObject).remove();
        }

        Steps.InitLinkPreview = function (StepObject) {
            $(".ext_attachments:first img.ext_attachments_preview", StepObject).each(function(){
                if ($(this).attr("type") == "link")
                {
                    var WebUrl = $(this).attr("src");
                    if (WebUrl.indexOf("http://images.websnapr.com") == -1)
                    {
                        var Url = "http://images.websnapr.com/?size=s&key=9cYh7A7u0Dse&hash=" + websnapr_hash + "&url=" + escape(WebUrl);
                        $(this).attr("src", Url);
                    }
                }
            });
        }

        Steps.GetPostIt = function (object) {
            Steps.ClosePostIt();
            var PostItButton = $(object);
            var Step = $(object).parents(".SCL_Step:first");
            var NoteManager = $(".SCL_UserNotes", Step);
            var Checklist = Step.parents("ul:first");
            var PostIt = $("#PostItBox");

            CurrentPostItPositionElement = PostItButton;
            CurrentPostItStepElement = Step;

            Checklist.after(PostIt);


            PostIt.css("left", "535px");
            PostIt.css("top", Step.position().top + "px");

            if (NoteManager.attr("scl:notes") == "") {
                $("textarea", PostIt).val("");
            } else {
                $("textarea", PostIt).val(UnEscapeString(NoteManager.attr("scl:notes")));
            }
            setTimeout(function () {
                $("textarea", PostIt).focus();
            }, 100);
        }

        




        // Events
        //Steps.InitPostIt();
        $("#PostItCloseButton").click(function () {
            Steps.ClosePostIt();
            CurrentPostItPositionElement = null;
            PostItOpen = null;
            if ($(".SCL_UserNotes", CurrentPostItStepElement).attr("scl:notes") == "")
                Steps.HidePostItButton(CurrentPostItStepElement);

            CurrentPostItStepElement = null;
        });

        $(document).click(function (e) {
            if ($(e.target).is("#PostItBox") == false
            && $(e.target).is(".PostItHelper") == false
            && $(e.target).is(".PostItTextBox") == false
            && $(e.target).is(".PostItButtonImage") == false) {
                Steps.ClosePostIt();
                CurrentPostItPositionElement = null;
                CurrentPostItStepElement = null;
                PostItOpen = null;
            }
        });
        Steps.InitSteps();
    }
});



// Publish and Delete script
$(document).ready(function () {
    // init Publish button
    $(".ChecklistPublishButton").bind("click", function () {
        SwissChecklist.ChecklistController.Checklist.OpenPublishDialog();
        return false;
    });

    $(".checklist_template_republish").bind("click", function () {
        SwissChecklist.ChecklistController.Checklist.OpenPublishDialog();
        return false;
        
    });

    // Radiobuttons
    $(".checklistpublish_option input:radio").click(function () {
        SwissChecklist.ChecklistController.Publish.DisableAllFields();
        SwissChecklist.ChecklistController.Publish.EnableFields($(this).parents("div:first"));
        SwissChecklist.ChecklistController.NewChecklist.UpdateURLForPublish();
    });

    // Next button
    $("#ChecklistPublish_Forward").click(function () {
        SwissChecklist.ChecklistController.Publish.ResetPublishStep2();
        $("#Publish_Step1").hide();
        $("#Publish_Step2").show();
        if ($("#CopyChangesToTemplateButton").is(":checked")) {
            SwissChecklist.ChecklistController.Publish.SetPublishStep2Mode("OverwriteTemplate");
        } else if ($("#CopyChangesToNewTemplateButton").is(":checked")) {
            SwissChecklist.ChecklistController.Publish.SetPublishStep2Mode("CreateNewTemplate");
        }
        else {
            // Fix if the user didn't select an option
            $("#Publish_Step1").show();
        }
        return false;
    });

    $("#CopyChangesToNewTemplateButton").click(function () {
        SwissChecklist.ChecklistController.NewChecklist.UpdateUrlWithKey("########")
    });

    //Backbutton
    $(".ChecklistPublish_Back").click(function () {
        jQuery.fancybox.close();        
    });

    $("#PublishTemplate_Library").change(function () {
        SwissChecklist.ChecklistController.NewChecklist.UpdateUrlWithKey("########");
    });
    $("#PublishTemplate_Language").change(function () {
        SwissChecklist.ChecklistController.NewChecklist.UpdateUrlWithKey("########");
    });

    // Init Tags
//    SwissChecklist.ChecklistController.Publish.InitCategories();

    $(".CategoryListEdit ul li input").click(function () {
        SwissChecklist.ChecklistController.Publish.ToggleCategory($(this));
    });

    // Save
    $(".PublishChecklist").click(function () {
        // Check if all fields are filled in
        var Title = $.trim($("#Publish_Title_New_Set input").val());
        var SelectedTitleChoice = $("#ddlPublishTitle").get(0).selectedIndex;
        if (Title == "" && SelectedTitleChoice == 1)
        {
            $("#Publish_Title_New_Set input").css("border", "1px solid #f00");
            return false;
        } else 
        {

            // Overwrite Tags from template
            SwissChecklist.ChecklistController.OverwriteChecklistTags();
            // Overwrite Description
            SwissChecklist.ChecklistController.OverwriteTemplateHeaderDescription();

            // Save whole thing
            if ($("#ddlPublishTarget").get(0).selectedIndex == 0)
                SwissChecklist.ChecklistController.SaveChecklistForPublish($(".ChecklistContainer:first"), false, "TemplateUpdateFromChecklist", SwissChecklist.ChecklistController.Publish.PublishSucessed, SwissChecklist.ChecklistController.Publish.PublishError);
            else {
                SwissChecklist.ChecklistController.OverwriteChecklistMetaData();
                SwissChecklist.ChecklistController.PreparePublishAfterTemplateFirstSave();
                SwissChecklist.ChecklistController.SaveChecklistForPublish($(".ChecklistContainer:first"), false, "TemplateNewFromChecklist", SwissChecklist.ChecklistController.Publish.PublishSucessed, SwissChecklist.ChecklistController.Publish.PublishError);
            }


            //$("#ChecklistManagement").tabs('select', 0);

            var UserName = $("#ChecklistPublish_Username").text();

            $("#Publish_Done").show();
            $("#ChecklistPublish_Save").hide();
            $("#PublishDialog").hide();
        
            var Namespace = $.trim($.trim($(".Namespace:first").text().toLowerCase()));
            if (Namespace.toLowerCase() == "my")
                Namespace = "user:" + UserName;
            if (Namespace.toLowerCase() == "public")
                Namespace = "";
            var NamespaceForLink = Namespace != "" ? Namespace + ":" : Namespace;
            var Link = "http://swisschecklist.com/" + $.trim($(".Language:first").text().toLowerCase()) + "/" + NamespaceForLink + $.trim($(".ChecklistKey:first").text().toLowerCase());
            //Link = Link.toLowerCase();
            Link = Link.replace("user_", "user:");

            $("#spanTemplateLink").attr("href", Link);
            $("#spanTemplateLink").text(Link);

            $("#spanTemplateName").text($.trim($(".checklist_title.ChecklistTitle:first span").text()));
        }
        return false;
    });

    // Delete code
    $(".TemplateDeleteButton").click(function () {
        tb_show(" ", "#TB_inline?height=300&width=600&inlineId=TemplateDelete", false);
        $("#DeleteChecklistPanel").show();
        $("#DeleteChecklistPanelRequested").hide();
        $(".SendImage").hide();
        $(".DeleteReasonTitleIsEmpty").hide();
        return false;
    });

    $(".DeleteCancel").click(function () {
        tb_remove();
        return false;
    });

    $(".DeleteRequest").click(function () {
        SwissChecklist.ChecklistController.Delete.SendDeleteRequest();
    });



});

SwissChecklist.ChecklistController.Delete.SendDeleteRequest = function () {
    var Reason = $(".DeleteReasonText").val();

    if (Reason == "") {
        $(".DeleteReasonTitleIsEmpty").show();
    } else {
        $(".SendImage").show();

        // Get ChecklistInformations
//        var ChecklistKey = $.trim($(".ChecklistKey:first").html());
//        var ChecklistLanguage = $.trim($(".Language:first").html());
//        var ChecklistNamespace = $.trim($(".Namespace:first").html());
        var ChecklistPermalinkID = $.trim($(".ChecklistPermalinkID:first").html());

        //ChecklistNamespace = ChecklistNamespace.replace("User_", "User:");

        var SaveData = JSON.stringify({ 'ChecklistPermalinkID': ChecklistPermalinkID, 'Reason': Reason });
        SwissChecklist.Ajax.AjaxRequest("/SwissChecklist/SwissChecklistServices.asmx/SendTemplateDeletationRequest", SaveData, SwissChecklist.ChecklistController.Delete.DeleteRequestSended, SwissChecklist.ChecklistController.Delete.DeleteRequestFailed);
    }
}

SwissChecklist.ChecklistController.Delete.DeleteRequestSended = function (msg) {
    if (msg.d == "True") {
        $("#DeleteChecklistPanel").hide();
        $("#DeleteChecklistPanelRequested").show();
    } else {
        alert("Could not send mail");
    }
}
SwissChecklist.ChecklistController.Delete.DeleteRequestFailed = function (xhr, status, error) {
    alert("Could not send mail: " + xhr.responseText);
}

$(function () {
    with (SwissChecklist.ChecklistController) {
        Publish.CloseAllSteps = function() {
            /*$("#Publish_Target_New").hide();
            $("#Publish_Target_Template").show();
            $("#Publish_Title_Template").show();
            $("#Publish_Title_New").hide();
            $("#Publish_Description_New").hide();
            $("#Publish_Tags_New").hide();*/
        }

        Publish.ChangeTargetDropDown = function() {
            SwissChecklist.ChecklistController.Publish.CloseAllSteps();
            if ($("#ddlPublishTarget").get(0).selectedIndex == 1){
                $("#Publish_Target_New").show();
                $("#Publish_Target_Template").hide();
            } else {
                $("#Publish_Target_New").hide();
                $("#Publish_Target_Template").show();
            }
        }

        Publish.ChangeTitleDropDown = function() {
            SwissChecklist.ChecklistController.Publish.CloseAllSteps();
            if ($("#ddlPublishTitle").get(0).selectedIndex == 1){
                $("#Publish_Title_Template").hide();
                $("#Publish_Title_New").show();
            } else {
                $("#Publish_Title_Template").show();
                $("#Publish_Title_New").hide();
            }
        }

        Publish.ChangeDescriptionDropDown = function() {
            SwissChecklist.ChecklistController.Publish.CloseAllSteps();
            if ($("#ddlPublishDescription").get(0).selectedIndex == 1){
                $("#Publish_Description_New").show();
            } else {
                $("#Publish_Description_New").hide();
            }
        }

        Publish.ChangeTagsDropDown = function() {
            SwissChecklist.ChecklistController.Publish.CloseAllSteps();
            if ($("#ddlPublishTags").get(0).selectedIndex == 1){
                $("#Publish_Tags_New").show();
            } else {
                $("#Publish_Tags_New").hide();
            }
        }
        
        Publish.InitDialog = function() {
            var IsNew = false;
            if ($(".checklist_template_exist").css("display") == "none")
                IsNew = true;
            $("#Publish_Title_New_Set input").css("border", "1px solid #ABADB3");
            
            $("#Publish_Done").hide();
            $("#ChecklistPublish_Save").show();
            $("#PublishDialog").show();
            var Language = $.trim($(".Language:first").text());
            $("#Publish_Target_Language option").removeAttr("selected");
            if (Language == "DE") {
                $("#Publish_Target_Language option:eq(1)").attr("selected", "selected");
            } else {
                $("#Publish_Target_Language option:eq(0)").attr("selected", "selected");
            }

            if (IsNew) {
                // Disable stuff
                $("#ddlPublishTarget option:eq(0)").disable();
                $("#ddlPublishTitle option:eq(0)").disable();
                $("#ddlPublishDescription option:eq(0)").disable();
                $("#ddlPublishTags option:eq(0)").disable();

                // Change selects
                $("#ddlPublishTarget option:eq(1)").attr('selected', 'selected');
                $("#ddlPublishTitle option:eq(1)").attr('selected', 'selected');
                $("#ddlPublishDescription option:eq(1)").attr('selected', 'selected');
                $("#ddlPublishTags option:eq(1)").attr('selected', 'selected');
                SwissChecklist.ChecklistController.Publish.ChangeDescriptionDropDown();
                SwissChecklist.ChecklistController.Publish.ChangeTagsDropDown();
                SwissChecklist.ChecklistController.Publish.ChangeTargetDropDown();
                SwissChecklist.ChecklistController.Publish.ChangeTitleDropDown();


                // CurrentDescription
                var CurrentDescription = $(".ChecklistNotes:first").attr("scl:checklistdescription");
                $(".Publish_SetDescription_Input:first").val(CurrentDescription);

            } else {
                // Set current template
                var TemplateLink = $("#hlnkChecklistTemplate:first").attr("href");
                $("#Publish_Target_Template span").text(TemplateLink);

                // Set current title
                var ChecklistTitle = $.trim($(".ChecklistTitleMeta:first").text());
                $("#Publish_Title_Template span").text(ChecklistTitle);
                $("#Publish_Title_New_Set input").val(ChecklistTitle);

                // Set Current Description
                var CurrentDescription = $(".ChecklistNotes:first").attr("scl:checklistdescription");
                $(".Publish_SetDescription_Input:first").val(CurrentDescription);

                // Categories
                SwissChecklist.ChecklistController.Publish.SetCategories();
                SwissChecklist.ChecklistController.Publish.InitCategories();
            }
        }

        Publish.SetCategories = function() {
            var TextFieldValue = $("#CategoriesFromChecklist").text();
            $("li", "#Publish_Tags_New").each(function(i) {
                var CategoryCheckbox = $("input", this);

                if (TextFieldValue.indexOf(CategoryCheckbox.attr("name")) != -1) {
                    // Check checkbox
                    CategoryCheckbox.attr("checked", "checked");
                    // Add to span
                    Checklist.ToggleCategoryAsTag(CategoryCheckbox.attr("name"));
                    // remove from textbox
                    var reg = new RegExp(CategoryCheckbox.attr("name"), "g");
                    TextFieldValue = TextFieldValue.replace(reg, "");
                    TextFieldValue = TextFieldValue.replace(/^\s+|\s+$|\s+/g, " ");
                    //$(".TagsChangeTextbox").val(TextFieldValue);
                }
            });
        }


        Publish.InitCategories = function () {
            var TagsAsString = $(".ChecklistPublish_TagInput").val();
            $("li", "#Publish_Tags_New").each(function (i) {
                var CategoryCheckbox = $("input", this);
                if (TagsAsString.indexOf(CategoryCheckbox.attr("name")) != -1) {
                    CategoryCheckbox.attr("checked", "checked");
                    $(".ChecklistPublish_Categories").text($(".ChecklistPublish_Categories").text() + " " + CategoryCheckbox.attr("name"));
                    // remove from textbox
                    var reg = new RegExp(CategoryCheckbox.attr("name"), "g");
                    TagsAsString = TagsAsString.replace(reg, "");
                    TagsAsString = TagsAsString.replace(/^\s+|\s+$|\s+/g, " ");
                }
            });
            if (typeof (TagsAsString) != "undefined") {

                var reg = new RegExp("scl:deleted", "g");
                TagsAsString = TagsAsString.replace(reg, "");
                TagsAsString = TagsAsString.replace(/^\s+|\s+$|\s+/g, " ");
                //$(".TagsChangeTextbox").val(TextFieldValue);

                var reg = new RegExp("scl:draft", "g");
                TagsAsString = TagsAsString.replace(reg, "");
                TagsAsString = TagsAsString.replace(/^\s+|\s+$|\s+/g, " ");
                //$(".TagsChangeTextbox").val(TextFieldValue);

                $(".ChecklistPublish_TagInput").val(TagsAsString);
            }
        }
    }

    // Behaviour
    $("#ddlPublishTarget").change(function(){
        SwissChecklist.ChecklistController.Publish.ChangeTargetDropDown();
    });
    $("#ddlPublishTitle").change(function(){
        SwissChecklist.ChecklistController.Publish.ChangeTitleDropDown();
    });
    $("#ddlPublishDescription").change(function(){
        SwissChecklist.ChecklistController.Publish.ChangeDescriptionDropDown();
    });
    $("#ddlPublishTags").change(function(){
        SwissChecklist.ChecklistController.Publish.ChangeTagsDropDown();
    });


});


/*
SwissChecklist.ChecklistController.Publish.DisableAllFields = function () {
    $("input, select", $(".checklistpublish_option")).not(":radio").disable();
    $(".checklistpublish_option").removeClass("active");
}

SwissChecklist.ChecklistController.Publish.EnableFields = function (Container) {
    $("input, select", Container).enable();
    $(Container).addClass("active");
}

SwissChecklist.ChecklistController.Publish.ResetPublishStep2 = function () {
    $("#Publish_Step2").children("div").css("display", "none");
}

SwissChecklist.ChecklistController.Publish.SetPublishStep2Mode = function (Mode) {
    // Set Values
    $(".Publish_SetDescription_Input").val($(".ChecklistNotesTextBox:first").val());

    if (Mode == "OverwriteTemplate") {
        $("#Publish_OverwriteTemplate_Intro").css("display", "block");
        $("#Publish_SetDescription").css("display", "block");
        $("#Publish_SetTags").css("display", "block");
        $("#ChecklistPublish_Save").css("display", "block");
    } else if (Mode == "CreateNewTemplate") {
        $("#Publish_CreateTemplate_Intro").css("display", "block");
        $("#Publish_SetDescription").css("display", "block");
        $("#Publish_SetTags").css("display", "block");
        $("#ChecklistPublish_Save").css("display", "block");
    }
}

// Categories


SwissChecklist.ChecklistController.Publish.ToggleCategory = function (Container) {
    if ($(Container).is(":checked")) {
        SwissChecklist.ChecklistController.Publish.AddCategory($(Container).attr("name"));
    } else {
        SwissChecklist.ChecklistController.Publish.RemoveCategory($(Container).attr("name"));
    }
}

SwissChecklist.ChecklistController.Publish.RemoveCategory = function (Category) {
    var CategoriesAsString = $.trim($(".ChecklistPublish_Categories").text());
    var reg = new RegExp(Category, "g");
    CategoriesAsString = CategoriesAsString.replace(reg, "");
    CategoriesAsString = CategoriesAsString.replace(/^\s+|\s+$|\s+/g, " ");
    $(".ChecklistPublish_Categories").text(CategoriesAsString);
}

SwissChecklist.ChecklistController.Publish.AddCategory = function (Category) {
    $(".ChecklistPublish_Categories").text($(".ChecklistPublish_Categories").text() + " " + Category);
}*/

SwissChecklist.ChecklistController.Publish.PublishSucessed = function (Message) {
    $("#ChecklistPublish_SaveStatus .LoadingPanel").css("display", "none");
    $("#ChecklistPublish_SaveStatus .ChecklistSaveCompleted").css("display", "block");
    $("#ChecklistPublish_SucessedMessage").css("display", "block");
    
    var Permalink = Message.d.split("|")[1];
    var PlainUrl = Message.d.split("|")[2];
    var Url = "http://swisschecklist.com" + PlainUrl;
//    var url = "http://swisschecklist.com/{Language}/{PermalinkID}/{Namespace}{ChecklistTitle}";
//    url =  url.replace("{Language}", $.trim($(".Language:first").text().toLowerCase()));
//    url = url.replace("{PermalinkID}", Permalink);
//    var ChecklistTitle = SwissChecklist.ChecklistController.NewChecklist.EncodeChecklistTitle($.trim($(".ChecklistTitle:first").text()));
//    url = url.replace("{ChecklistTitle}", ChecklistTitle);
//    var Namespace = $.trim($(".Namespace:first").text());



    $("#spanTemplateLink").attr("href", Url);
    $("#spanTemplateLink").text(Url);

    $("#hlnkOpenTemplate").attr("href", PlainUrl);

    $(".ChecklistPermalinkID:first").text(Permalink);

}

SwissChecklist.ChecklistController.Publish.PublishError = function (xhr, status, error) {
    SwissChecklist.UI.ShowDialog($("<span>", {
        text: xhr.responseText
    }), { title: "AJAX Error" });
};




SwissChecklist.UI.ShowDialog = function (element, options) {
    $(element).dialog(options);
}


// ### SwissChecklist.ChecklistController.js

/*
* Swisschecklist.ChecklistController Javascript
* Copyright (c) 2010 2sic internet solutions gmbh
* Author: Pascal Schweizer
* 
* Description
* Requires jQuery 1.3.2, SwissChecklist.js
*
*/

// Define master variables
with (SwissChecklist.ChecklistController) {
    $(function () {
        Checklist.CurrentView = Checklist.ViewModes["preview"];
        SwissChecklist.ChecklistController.UserMayLeavePage = true;
    });
}

$(function () {
    with (SwissChecklist.ChecklistController) {
        Checklist.ChangeView = function (ViewMode) {

            // Check if CurrentViewMode is not the same as the wished one
            if (ViewMode != this.CurrentView.Name && typeof (Checklist.ViewModes[ViewMode]) != "undefined") { // == "use" || ViewMode == "change" || ViewMode == "sort" || ViewMode == "preview")) {
                // Leave the old ViewMode
                this.CurrentView.Dispose();
                this.CurrentView = this.ViewModes[ViewMode];
                // Change to new ViewMode
                this.CurrentView.Initialize();

                // Call Extenionmethod which changes the viewmode
                // TODO: Check this
                if (typeof (SwissChecklist.Extensions.ChangeExtensionChecklistMode) != 'undefined') {
                    if (!IsChecklistInEditMode)
                        SwissChecklist.Extensions.ChangeExtensionChecklistMode(this.CurrentView.Name);
                }
            }
        };
        Checklist.ForceChangeView = function (ViewMode) {

            // Check if CurrentViewMode is not the same as the wished one
            if (typeof (Checklist.ViewModes[ViewMode]) != "undefined") { // == "use" || ViewMode == "change" || ViewMode == "sort" || ViewMode == "preview")) {
                // Leave the old ViewMode
                this.CurrentView.Dispose();
                this.CurrentView = this.ViewModes[ViewMode];
                // Change to new ViewMode
                this.CurrentView.Initialize();

                // Call Extenionmethod which changes the viewmode
                // TODO: Check this
                if (typeof (SwissChecklist.Extensions.ChangeExtensionChecklistMode) != 'undefined') {
                    if (!IsChecklistInEditMode)
                        SwissChecklist.Extensions.ChangeExtensionChecklistMode(this.CurrentView.Name);
                }
            }
        };
    }
});

// Step Marker
SwissChecklist.ChecklistController.Steps.MarkStepAsChanged = function (StepObject, MarkPrev) {
    StepObject.attr("StepHasChanged", "true");
    if (MarkPrev) {
        StepObject.prev("li").attr("StepHasChanged", "true");
    }
}

// User leaving site check status
SwissChecklist.ChecklistController.ConfirmBrowseAway = function () {
    if (!SwissChecklist.ChecklistController.UserMayLeavePage) {
        return GetLocalizedText("SiteLeaveMessage");
    }
}
window.onbeforeunload = SwissChecklist.ChecklistController.ConfirmBrowseAway;

SwissChecklist.ChecklistController.ForbidUserToLeave = function () {
    SwissChecklist.ChecklistController.UserMayLeavePage = false;
}
SwissChecklist.ChecklistController.AllowUserToLeave = function () {
    SwissChecklist.ChecklistController.UserMayLeavePage = true;
}


// ### SwissChecklist.IntegratedSearch.js

$(document).ready(function(){
    $("#SearchButton").attr("href", "javascript:;");
});

$(function() {
    $("#SearchInput").keyup(function(e) {
        if (e.keyCode == 32) {
            // Autoselect on space
            /*
            if ($(".SearchResultList li").length > 0) {
                $(this).val($(".SearchResultList li:first").text());
                SwissChecklist.Search.HideSuggestions();
            }
            return true;*/
        }
        else if ((e.keyCode > 47 && e.keyCode < 90) || e.keyCode == 8) {
            var searchText = this.value;

            var DTO = {
                Tag: searchText,
                Language: SwissChecklist.UICulture,
                Namespace: "",
                ParentTags: []
            };
            SwissChecklist.Search.GetSearchResults(DTO);
        }
        if (e.keyCode == 38 || e.keyCode == 40)
            SwissChecklist.Search.SearchKeydown(e.keyCode);
        return true;
    }).keypress(function(e) {
        if (e.keyCode == 13) {
            e.preventDefault();
            if ($(".SearchResultList li.SearchActive").size() > 0)
                $("#SearchInput").val($(".SearchResultList li.SearchActive").text());
            if ($("#SearchInput").val() != "")
                SwissChecklist.Search.SearchChecklistByTag($("#SearchInput").val());
            else
                window.location = SwissChecklist.Search.GetUrl() + "Search/";
            return false;
        }
    }).focus(function() {
        var SearchWrapper = $("#SearchWrapper");
        if ($("#SearchInput", SearchWrapper).val() != "")
            SwissChecklist.Search.ShowSuggestions();
    });
    $("#SearchButton").click(function() {
        if ($("#SearchInput").val() != $("#SearchInput").attr("defaulttext"))
            SwissChecklist.Search.SearchChecklistByTag($("#SearchInput").val());
        else
            window.location = SwissChecklist.Search.GetUrl() + "Search/";
    });

    $(document).click(function(e) {
        if (!$(e.target).is(".SearchResultList") && !$(e.target).is("#SearchInput"))
            SwissChecklist.Search.HideSuggestions();
    });

    $("#SearchInput").focus(function() {
        if ($(this).val() == $(this).attr("defaulttext"))
            $(this).val("").removeClass("DefaultSearch");
    }).blur(function() {
        if ($(this).val() == "")
            $(this).val($(this).attr("defaulttext")).addClass("DefaultSearch");
    });
});


SwissChecklist.Search = {
    TagSuggestionServiceURL: "/SwissChecklist/SwissChecklistServices.asmx/GetTagSearchSuggestions",
    AppendSearchResults: function(results) {
        var SearchWrapper = $("#SearchWrapper");
        var ResultList = $(".SearchResultList", SearchWrapper);
        for (var i = 0; i < results.length; i++) {
            var Result = results[i];
            var ResultListItem = $("<li>", {
                text: Result.Caption,
                title: Result.Value,
                click: function() {
                    $("#SearchInput", SearchWrapper).val($(this).text());
                    SwissChecklist.Search.SearchChecklistByTag($("#SearchInput").val());
                }
            });
            ResultList.append(ResultListItem);
        }
        SearchWrapper.append(ResultList);
        SwissChecklist.Search.ShowSuggestions();
    }, GetSearchResults: function(Data) {
        $.ajaxq("tagsearchsuggestion", {
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: this.TagSuggestionServiceURL,
            data: JSON.stringify(Data),
            dataType: "json",
            success: function(msg) {
                SwissChecklist.Search.ClearSuggestions();
                SwissChecklist.Search.HideSuggestions();
                if (typeof (msg.d.Values) != "undefined")
                    SwissChecklist.Search.AppendSearchResults(msg.d.Values);
            }, error: function() {
                alert("An error occured during your search request!");
            }
        });
    }, HideSuggestions: function() {
        $(".SearchResultList").hide();
    }, ClearSuggestions: function() {
        $(".SearchResultList").empty();
    }, ShowSuggestions: function() {
        if ($(".SearchResultList li").size() > 0)
            $(".SearchResultList").show();
    }, SearchChecklistByTag: function(Tag) {
        if (Tag != null && Tag != "")
            window.location = this.GetUrl() + "Search/" + Tag.replace(/([\[\]\(\)/%&?:])/g, " ");
        else
            window.location = this.GetUrl();
    }, GetUrl: function() {
        return "http://" + window.location.host + "/" + $.trim($(".CurrentLanguage").text()) + "/";
    }, SearchKeydown: function(keyCode) {
        if ($(".SearchResultList li").hasClass("SearchActive")) {
            var selectedIndex = $(".SearchResultList li.SearchActive").removeClass("SearchActive").index();
            var NewIndex = selectedIndex;
            if (keyCode == 40)
                NewIndex++;
            else
                NewIndex--;
            $(".SearchResultList li:eq(" + NewIndex + ")").addClass("SearchActive");
        }
        else {
            $(".SearchResultList li:first").addClass("SearchActive");
        }
    } 
};



// ### SwissChecklist.NewChecklist.js


var ChecklistURLInvalidSigns = new Array();
ChecklistURLInvalidSigns.push(new Array("\[", "(", "["));
ChecklistURLInvalidSigns.push(new Array("\]", ")", "]"));
ChecklistURLInvalidSigns.push(new Array("\{", "(", "{"));
ChecklistURLInvalidSigns.push(new Array("\}", ")", "}"));
ChecklistURLInvalidSigns.push(new Array("\<", "(", "<"));
ChecklistURLInvalidSigns.push(new Array("\>", ")", ">"));
ChecklistURLInvalidSigns.push(new Array("\%", "%25", "%"));
ChecklistURLInvalidSigns.push(new Array("\#", "", "#"));
ChecklistURLInvalidSigns.push(new Array("\?", "", "?"));
ChecklistURLInvalidSigns.push(new Array("\|", "", "|"));
ChecklistURLInvalidSigns.push(new Array("\&", "", "&"));
ChecklistURLInvalidSigns.push(new Array("\"", "", "\""));
ChecklistURLInvalidSigns.push(new Array("\'", "", "\'"));
ChecklistURLInvalidSigns.push(new Array("\/{2,}", "/", "//"));
ChecklistURLInvalidSigns.push(new Array("\:", "", ":"));

//var URLTextBoxCanChange = true;
//var Language = "";
//var Namespace = "";
//var ChecklistKey = "";
//var ChecklistURL = "swisschecklist.com/{Language}/{Namespace}{ChecklistKey}";


with (SwissChecklist.ChecklistController) {
    // Properties
    SwissChecklist.ChecklistController.NewChecklist.URLTextBoxCanChange = true;
    SwissChecklist.ChecklistController.NewChecklist.Language = "";
    SwissChecklist.ChecklistController.NewChecklist.Namespace = "";
    SwissChecklist.ChecklistController.NewChecklist.ChecklistKey = "";
    SwissChecklist.ChecklistController.NewChecklist.ChecklistURL = "http://swisschecklist.com/{Language}/{Namespace}{ChecklistKey}";
    SwissChecklist.ChecklistController.NewChecklist.ChecklistURLV2 = "http://swisschecklist.com/{Language}/{PermalinkID}/{Namespace}{ChecklistTitle}";



    // Methods
//    NewChecklist.UpdateURL = function() {
//        var url = NewChecklist.ChecklistURL.replace("{Language}", $.trim(NewChecklist.Language)).replace("{Namespace}", $.trim(NewChecklist.Namespace) == "" ? "" : $.trim(NewChecklist.Namespace) + SwissChecklist.NamespaceSeperator).replace("{ChecklistKey}", NewChecklist.ChecklistKey);
//        url = url.toLowerCase();
//        $("#ChecklistUrl").text(url);
//        $("#ChecklistUrl").attr("scl:ChecklistKey", NewChecklist.ChecklistKey);
//    }

    NewChecklist.UpdateURL = function() {
        var Permalink = $.trim($(".ChecklistPermalinkID:first").text());
        if (Permalink == "")
            Permalink = "########";
        NewChecklist.UpdateUrlWithKey(Permalink);
    }

    NewChecklist.UpdateUrlWithKey = function (PermalinkID) {
        var url = NewChecklist.ChecklistURLV2.replace("{Language}", $.trim(NewChecklist.Language.toLowerCase()));
        url = url.replace("{PermalinkID}", PermalinkID);
        var ChecklistTitle = NewChecklist.EncodeChecklistTitle($.trim($(".ChecklistTitle:first").text()));
        url = url.replace("{ChecklistTitle}", ChecklistTitle);
        var Namespace = $.trim($(".Namespace:first").text());
        if (Namespace != "")
            Namespace = Namespace + ":";
        if (Namespace.indexOf("User:") != -1)
            Namespace = NewChecklist.EncodeChecklistTitle(Namespace);
        url = url.replace("{Namespace}", Namespace);
        //url = url.toLowerCase();
        if (url.indexOf("/########/") == -1)
            $("#ChecklistUrl").text(url);
        else
            $("#ChecklistUrl").text("-");
        $("#ChecklistUrl").attr("scl:permalinkid", PermalinkID);
    }

    NewChecklist.EncodeChecklistTitle = function(ChecklistTitle)
    {
        ChecklistTitle = ChecklistTitle.replace(/[\s%&#\?]/g, "-");
        ChecklistTitle = ChecklistTitle.replace(/[-]{2,}/g, "-");

        return ChecklistTitle;
    }
    
    NewChecklist.UpdateURLForPublish = function() {
        if ($("#CopyChangesToTemplateButton").is(":checked")) {
            NewChecklist.Language = $.trim($(".Language:first").text()).toUpperCase();
            //NewChecklist.Namespace = $.trim($(".Namespace:first").text());
            //NewChecklist.ChecklistKey = $.trim($(".ChecklistKey:first").text());
        } else {
            NewChecklist.Language = $("#PublishTemplate_Language").val();
            //NewChecklist.Namespace = $("#PublishTemplate_Library").val() == "public" ? "" : $("#PublishTemplate_Library").val() == "my" ? "user:" + $("#ChecklistPublish_Username").text() : $("#PublishTemplate_Library").val();
            //NewChecklist.ChecklistKey = SwissChecklist.ChecklistController.NewChecklist.GetEncodedURLString($("#PublishChecklist_NewTitle").val());
        }
        
        NewChecklist.UpdateURL();
    }

    NewChecklist.GetEncodedURLString = function(NonEncodedString) {
        //Replacing
        // Space
        NonEncodedString = NonEncodedString.replace(/\s+/g, "_");
        NonEncodedString = NonEncodedString.replace(/\_+/g, "_");
        NonEncodedString = $.trim(NonEncodedString)


        // Check the string
        var StringContainsNoInvalidElements = true;
        var InvalidSignsString = "";
        for (var i = 0; i < ChecklistURLInvalidSigns.length; i++) {
            if (NonEncodedString.search(new RegExp("\\" + ChecklistURLInvalidSigns[i][0], "g")) != -1) {
                InvalidSignsString += " " + ChecklistURLInvalidSigns[i][2] + ",";
                NonEncodedString = NonEncodedString.replace(new RegExp("\\" + ChecklistURLInvalidSigns[i][0], "g"), ChecklistURLInvalidSigns[i][1]);
                StringContainsNoInvalidElements = false;
            }
        }

        if (InvalidSignsString.length > 0)
            InvalidSignsString = InvalidSignsString.substring(0, InvalidSignsString.length - 1);

        $("#InvalidSigns").text(InvalidSignsString);

        if (!StringContainsNoInvalidElements)
            $("#NewChecklistErrorContainer").css("display", "block");
        else
            $("#NewChecklistErrorContainer").css("display", "none");

        return NonEncodedString;
    }

    NewChecklist.GoToChecklist = function() {
        // Check if something is empty
        var TitleAndUrlIsOK = true;
        if ($(".NewChecklistTitleBox").val() == "") {
            TitleAndUrlIsOK = false;
        }
        if (NewChecklist.ChecklistKey == "")
            TitleAndUrlIsOK = false;

        if (TitleAndUrlIsOK) {
            document.location.href = NewChecklist.GetChecklistURL($(".NewChecklistTitleBox").val());
        } else {
            $(".NewChecklistTitleBox").css("border-color", "#ff0000");
        }
    }

    NewChecklist.GetChecklistURL = function(ChecklistTitle) {
        if (NewChecklist.Namespace == "")
            return "/Default.aspx?tabid=87&Checklist=" + NewChecklist.ChecklistKey + "&mode=edit&title=" + encodeURIComponent(ChecklistTitle) + "&lang=" + $.trim(NewChecklist.Language);
        else
            return "/Default.aspx?tabid=87&Checklist=" + NewChecklist.ChecklistKey + "&mode=edit&title=" + encodeURIComponent(ChecklistTitle) + "&lang=" + $.trim(NewChecklist.Language) + "&ns=" + $.trim(NewChecklist.Namespace);
    }

    // Events
    $(function() {
        NewChecklist.Language = $.trim($("#NewChecklistLanguage").text());
        NewChecklist.Namespace = $.trim($("#NewChecklistNamespace").text());
        NewChecklist.ChecklistKey = NewChecklist.GetEncodedURLString($(".NewChecklistTitleBox").val() == null ? "" : $(".NewChecklistTitleBox").val());
        NewChecklist.UpdateURL();
    });

}


// ### SwissChecklist.UserActions.js

// This Script contains all function for the user action

function LoadUserAction(Language, Query) {
    if ($) {
        // Get userChecklistID
        var UserChecklistID = $(".UserChecklistID").text();

        var html = $.ajax({
            url: "/SwissChecklist/System/Checklist/UserActions.aspx?UserChecklistID=" + UserChecklistID + "&Lang=" + Language + "&q=" + escape(Query),
            async: false,
            cache: false
        }).responseText;        
        $("#UserActionContainer").html(html);

        
    }
}

function HideMessages() {
    if ($) {
        $(".NotAuthenticated").css("display", "none");
        $(".Authenticated").css("display", "none");
        $(".ChecklistChanged").css("display", "none");
        $(".Saved").css("display", "none");
        $(".UserChecklistChanged").css("display", "none");
    }
}

function ChecklistHasChange() {
    if ($ && document.URL.indexOf("mode=edit") == -1) {
    /*
        HideMessages();
        if (Trim($(".UserChecklistID").text()) == "0") {
            $(".ChecklistChanged").css("display", "block");
            $(".UserChecklistSaveButton").css("display", "block");      
        } else {
        $(".UserChecklistChanged").css("display", "block");
        $(".UserChecklistSaveButton").css("display", "block"); 
        }
        */
    }
}

function UserChecklistSaved() {
    HideMessages();
    $(".Saved").css("display", "block");

    $(".UserChecklistSaveButton").css("display", "none"); 
}

function Trim(string) {
    if (string == null)
        return "";
    else
        return string.replace(/^\s+|\s+$/g, "")
}

// ### SwissChecklist.SaveChecklist.js

/*
* Swisschecklist.SaveChecklist Javascript
* Copyright (c) 2009 2sic internet solutions gmbh
* Author: Pascal Schweizer
*
* Requires jQuery 1.3.2
*
*/

with (SwissChecklist) {


    /// <summary>
    /// This function saved the Checklist
    /// </summary>
    ChecklistController.SaveChecklist = function(Container, OverwriteTemplate, Action, IsCompleted) {
        // Prepare Checklist for Saving
        ChecklistController.PrepareChecklistForSaving();
        // Get and prepare checklist informations
        var ChecklistData = ChecklistController.GetChecklistData(Container);
        var UserChecklistData = OverwriteTemplate ? {} : ChecklistController.GetUserChecklistData();
        if (!OverwriteTemplate && IsCompleted)
            UserChecklistData[0].Percent = 100;

        var SaveData = JSON.stringify({ 'Template': ChecklistData, 'UserValues': UserChecklistData, 'Action': Action });
        // Show ajax loaderv
        $(".LoadingPanel").css("display", "block");
        // Register ajax request
        SwissChecklist.Ajax.AjaxRequest(SwissChecklist.Ajax.SaveChecklistUrl, SaveData, ChecklistController.ChecklistSavingSucessed, ChecklistController.ChecklistSavingError);
    };

    ChecklistController.SaveChecklistStandard = function() {
        SwissChecklist.ChecklistController.SaveChecklist($(".ChecklistContainer:first"), false, "ChecklistUpdate", false);
         $(".ChecklistSaveLoader").show();
        $(".ChecklistSaveCompleted").hide();
        $("#litSaveAuth").show();
        $("#litSafeAnonym").hide();
    }

    ChecklistController.SaveChecklistWithCallBack = function(Container, OverwriteTemplate, Action, SuccessCallback, ErrorCallback, IsCompleted)
    {
    
        // Prepare Checklist for Saving
        ChecklistController.PrepareChecklistForSaving();
        // Get and prepare checklist informations
        var ChecklistData = ChecklistController.GetChecklistData(Container);
        var UserChecklistData = OverwriteTemplate ? {} : ChecklistController.GetUserChecklistData();
        if (!OverwriteTemplate && IsCompleted)
            UserChecklistData[0].Percent = 100;
            
        var SaveData = JSON.stringify({ 'Template': ChecklistData, 'UserValues': UserChecklistData, 'Action': Action });


        // Show ajax loaderv
        $(".LoadingPanel").css("display", "block");
        // Register ajax request
        SwissChecklist.Ajax.AjaxRequest(SwissChecklist.Ajax.SaveChecklistUrl, SaveData, function (Message) {SwissChecklist.ChecklistController.ChecklistSavingSucessed(Message); SuccessCallback() }, function (xhr, status, error) {SwissChecklist.ChecklistController.ChecklistSavingError(xhr, status, error);ErrorCallback()} );
     
     };

    ChecklistController.SaveChecklistForPublish = function(Container, OverwriteTemplate, Action, ChecklistSavingSucessed, ChecklistSavingError) {
        // Prepare Checklist for Saving
        ChecklistController.PrepareChecklistForSaving();

        // Get and prepare checklist informations
        var ChecklistData = ChecklistController.GetChecklistData(Container);
        var UserChecklistData = OverwriteTemplate ? {} : ChecklistController.GetUserChecklistData();
        var SaveData = JSON.stringify({ 'Template': ChecklistData, 'UserValues': UserChecklistData, 'Action': Action });

        $("#ChecklistPublish_SaveStatus .LoadingPanel").css("display", "block");
        $("#ChecklistPublish_SucessedMessage").css("display", "none");

        // Register ajax request
        SwissChecklist.Ajax.AjaxRequest(SwissChecklist.Ajax.SaveChecklistUrl, SaveData, ChecklistSavingSucessed, ChecklistSavingError);
    };


    /// <summary>
    /// Checklist saves successable
    /// </summary>
    ChecklistController.ChecklistSavingSucessed = function(Message) {
        $(".LoadingPanel").hide();
        var date = GetCurrentTime();
        $(".ChecklistSaveCompleted").text(GetLocalizedText("SavedAt") + " " + date).show();
        SwissChecklist.ChecklistController.AllowUserToLeave();
        var ChecklistGuid = Message.d.toString().split("|")[0];
        var ChecklistPermalink = Message.d.toString().split("|")[1];
        var JobID = Message.d.toString().split("|")[3];
        var ChecklistID = Message.d.toString().split("|")[4];
        var ChecklistIsNotSameAsTemplate = Message.d.toString().split("|")[7];
        $(".ChecklistGuid:first").text(ChecklistGuid);
        $(".ChecklistPermalinkID:first").text(ChecklistPermalink);
        $(".UserChecklistID:first").text(JobID);
        $(".ChecklistID:first").text(ChecklistID);
        $(".ChecklistIsNotSameAsTemplate:first").text(ChecklistIsNotSameAsTemplate);
        SwissChecklist.ChecklistController.IsSaved = true;


        // If Checklist is published as new
        // ToDo: Check this, should change Header after publishing a non-templatet checklist to a template
        // Not works

//        var Url = Message.d.toString().split("|")[5];
//        var Title = Message.d.toString().split("|")[6];
//        if (Url != "")
//        {
//            $(".checklist_template_empty:first").hide();
//            $(".checklist_template_exist:first").show();
//            $(".checklist_template_emptyinformation:first").hide();
//            $(".checklist_template_information:first").show();
//            $(".checklist_template_exist:first").text(Title);
//            $(".checklist_template_link:first").attr("href", Url);
//        }



    };

    /// <summary>
    /// Checklist saving goes wrong
    /// </summary>
    ChecklistController.ChecklistSavingError = function(xhr, status, error) {
        $(".LoadingPanel").hide();
        //alert(xhr.responseText);
        SwissChecklist.UI.ShowDialog($("<span>", {
            text: xhr.responseText
        }), { title: "AJAX Error" });
    };

    ChecklistController.GetChecklistData = function(Container) {
        var ChecklistData = {
            TemplateHeader: ChecklistController.GetTemplateHeader(Container),
            TemplateSteps: ChecklistController.GetTemplateSteps(Container)
        };
        return ChecklistData;
    };

    ChecklistController.GetTemplateHeader = function(Container) {
        // Init
        // ToDo: Review this
        /*if (CurrentEditedStep != null) {
        ChangeStepToViewMode(CurrentEditedStep);
        CurrentEditedStep = null;
        }*/
        var ChecklistExtensions = [];

        // Create a Checklist object
        var CurrentTemplateHeader = {
            Key: Trim($(".ChecklistKey:first").text().replace("\n", "")),
            GUID: Trim($(".ChecklistGuid:first").text().replace("\n", "")),
            Title: $.trim($(".ChecklistTitleMeta:first").text()), //$.trim($(".checklist_title.ChecklistTitle:first span").text()), // Trim($(".ChecklistInput").val()),
            Description: $(".ChecklistNotes:first").attr("scl:checklistdescription"), //$(".ChecklistNotesTextBox:first").val(),
            Language: Trim($(".Language:first").text().replace("\n", "")),
            Library: Trim($(".Namespace:first").text().replace("\n", "")),
            PermalinkID: Trim($(".ChecklistPermalinkID:first").text().replace("\n", "")),
            Changed: true,
            TemplateHeaderTags: ChecklistController.GetTemplateTags()
            /*ChecklistExtensions: ChecklistExtensions*/
        };

        return CurrentTemplateHeader;
    };

    ChecklistController.GetTemplateTags = function() {
        // Manage Tags
        var TemplateTags = new Array();
        var TagString = "";
        if ($(".TagsChangeTextbox").size() > 0)
            TagString = $(".TagsChangeTextbox").val().replace(/\n/g, ' ').replace(/\s/g, ' ').replace(/\,/g, '');
        for (var i = 0; i < TagString.split(' ').length; i++) {
            var TempChecklistTag = new Object();
            TempChecklistTag.Tag = Trim(TagString.split(' ')[i]);
            if (TempChecklistTag.Tag != "")
                TemplateTags.push(TempChecklistTag);
        }

        // Tags from categories
        var CategoryString = $("#CategoryContainer").text();
        for (var i = 0; i < CategoryString.split(' ').length; i++) {
            var TempChecklistTag = new Object();
            TempChecklistTag.Tag = CategoryString.split(' ')[i];
            if (TempChecklistTag.Tag != "")
                TemplateTags.push(TempChecklistTag);
        }


        return TemplateTags;
    };

    ChecklistController.GetTemplateSteps = function(Container) {
        // Get all steps
        var TemplateSteps = [];
        // Loop
        $("#Checklist:first", Container).children().not("#Step_0").not("#Step_NewStep").not("#GreenLine").not("#LoadPanel").each(function(i) {
            TemplateSteps.push(ChecklistController.GetTemplateStep($(this), i));
        });

        //Delete Latest
        //TemplateSteps.pop();

        return TemplateSteps;
    };

    ChecklistController.GetTemplateStep = function(Container, SortOrder) {
        // Init
        var TitleTag = null;
        if (Container.hasClass("SCL_StepType_Task"))
            TitleTag = $("p:first", Container)
        if (Container.hasClass("SCL_StepType_Info"))
            TitleTag = $("p:first", Container)
        if (Container.hasClass("SCL_StepType_Title"))
            TitleTag = $("h2:first", Container)

        // Get Extensions
        var ChecklistStepExtensions = [];
        if (typeof (SwissChecklist.Extensions.GetExtensionProperties) == "function")
            ChecklistStepExtensions = SwissChecklist.Extensions.GetExtensionProperties(Container, "definition");

        var StepType = "1";
        if (Container.hasClass("SCL_StepType_Task"))
            StepType = "2";
        if (Container.hasClass("SCL_StepType_Info"))
            StepType = "3";

        // Get data
        var TemplateStep = {
            TemplateStepID: Container.attr("scl:stepid"),
            StepTypeID: StepType,
            GUID: Container.attr("scl:stepguid"),
            Description: $(".SCL_Details", Container).attr("scl:notes"),
            Changed: Container.attr("StepHasChanged") == "true" ? true : false,
            Title: TitleTag == null ? "" : Trim(TitleTag.text()),
            SubChecklistLanguage: $(".SCL_SubChecklist", Container).attr("scl:SubChecklistLanguage"),
            SubChecklistPermalinkID: $(".SCL_SubChecklist", Container).attr("scl:subchecklistpermalinkid"),
            Extensions: ChecklistStepExtensions
        }

        return TemplateStep;
    };


    ChecklistController.GetUserChecklistData = function() {
        var UserValues = [];


        $(".ChecklistContainer").each(function() {
            var Container = $(this);

            var PercentCompleted = ChecklistController.GetChecklistFillOutPercent(Container);
            if (PercentCompleted == 100)
                PercentCompleted = 99;



            var UserChecklistExtensions = [];
            if (typeof (SwissChecklist.Extensions.GetExtensionProperties) == "function")
                UserChecklistExtensions = SwissChecklist.Extensions.GetExtensionProperties($(".task_title:first"), "userdata");


            var ParentStepObject = Container.parents("li:first");
            var ParentChecklistContainer = Container.parents(".ChecklistContainer:first");
            var ParentUserChecklistID = parseInt(($(".UserChecklistID:first", ParentChecklistContainer).text().replace("\n", "")));
            var ParentUserChecklistGuid = Trim($(".UserChecklistGUID:first", ParentChecklistContainer).html());

            var JobNotes = "";
            if ($.trim($("#TaskNotesWysiwyg:first", Container).html()) != $("#TaskNotesWysiwyg:first", Container).attr("scl:defaultvalue"))
            {
                JobNotes = $("#TaskNotesWysiwyg:first", Container).html();
            }

            var CurrentUserChecklist = {
                ValueSetID: parseInt(($(".UserChecklistID:first", Container).text().replace("\n", ""))),
                TemplateID: parseInt(($(".ChecklistID:first", Container).text().replace("\n", ""))),
                Title: $.trim($(".task_title_input:first", Container).val()), // Trim($(".UserChecklistTitle:first", Container).html()),
                Notes: JobNotes,
                ValueSetGuid: Trim($(".UserChecklistGUID:first", Container).html()),
                ParentValueID: ParentStepObject == null ? 0 : ParentStepObject.attr("scl:stepid"),
                ParentValueGuid: ParentStepObject = null ? "00000000-0000-0000-0000-000000000000" : ParentStepObject.attr("scl:stepguid"),
                ParentValueSetGuid: ParentUserChecklistGuid,
                Percent: PercentCompleted,
                Values: ChecklistController.GetUserChecklistStepsData(Container),
                ValueSetExtension: UserChecklistExtensions
            };

            UserValues.push(CurrentUserChecklist);
        });
        return UserValues;
    };

    ChecklistController.GetChecklistFillOutPercent = function(Container) {
        
        var NumberOfCheckboxes = 0;
        var NumberOfCheckedCheckboxes = 0;
        $("#Checklist:first", Container).children("li").not(".SCL_StepType_Title").not("#Step_0").not("#Step_NewStep").each(function() {
            if ($(".SCL_StepLine:first .ChecklistCheckbox", this).size() > 0)
                NumberOfCheckboxes++;
            if ($(".SCL_StepLine:first .ChecklistCheckbox:checked", this).size() > 0)
                NumberOfCheckedCheckboxes++;
        });
        var Percent = parseInt((NumberOfCheckedCheckboxes / NumberOfCheckboxes) * 100);
        return isNaN(Percent) ? 0 : Percent;
    }

    ChecklistController.GetUserChecklistStepsData = function(Container) {
        var Steps = [];
        $("#Checklist:first", Container).children(".SCL_Step").not("#Step_0").each(function(i) {
            // Init
            var StepObject = $(this);
            var PercentComplete = 0;
            if (StepObject.hasClass("SCL_StepType_Task") && $("input:checkbox:first", StepObject).is(':checked'))
                PercentComplete = 100;

            var ExtensionArray = [];
            if (typeof (SwissChecklist.Extensions.GetExtensionProperties) != "undefined")
                ExtensionArray = SwissChecklist.Extensions.GetExtensionProperties(StepObject, "userdata");

            var UserChecklistStep = {
                PostIt: $(".SCL_UserNotes", StepObject).attr("scl:notes"),
                PostItSticky: false,
                StepValueID: StepObject.attr("scl:stepid"),
                StepGuid: StepObject.attr("scl:stepguid"),
                Percent: PercentComplete,
                Extensions: ExtensionArray
            };

            Steps.push(UserChecklistStep);
        });
        return Steps;
    };

    ChecklistController.PrepareChecklistForSaving = function() {
        SwissChecklist.ChecklistController.Steps.CollapseActualStep();
    };

    ChecklistController.OverwriteChecklistMetaData = function() {
        $(".Language:first").text($("#Publish_Target_Language").val());
        $(".Namespace:first").text($("#Publish_Target_Library").val());
        //$(".ChecklistKey:first").text($("#ChecklistUrl").attr("scl:ChecklistKey"));
        //$(".ChecklistTitle.ChecklistInput").val($("#PublishChecklist_NewTitle").val());
        $(".ChecklistGuid:first").text(newGuid());
        return false;
    };

    ChecklistController.OverwriteChecklistTags = function() {
        $(".TagsChangeTextbox").val($(".ChecklistPublish_TagInput").val());
        $("#CategoryContainer").text($(".ChecklistPublish_Categories").text());
        return false;
    };

    ChecklistController.OverwriteTemplateHeaderDescription = function() {
        if ($("#ddlPublishDescription").get(0).selectedIndex == 1)
            $(".ChecklistNotes:first").attr("scl:checklistdescription", $(".Publish_SetDescription_Input").val());

        if ($("#ddlPublishTitle").get(0).selectedIndex == 1){
            var Title = $(".publishtitleinput").val();
            $(".ChecklistTitle:first").text(Title);
            $(".ChecklistTitle:first").attr("scl:templaettitle", Title);
            $(".checklist_template_exist").text(Title);
            $(".ChecklistTitleMeta:first").text(Title);
        }

        return false;
    };

    ChecklistController.PreparePublishAfterTemplateFirstSave = function() {

    };

    ChecklistController.ShowSubChecklistWizard = function(CurrentStep) {
        var SubChecklistPermalinkID = $(".SCL_SubChecklist:first", CurrentStep).attr("scl:subchecklistpermalinkid");
        var SubChecklistLanguage = $(".SCL_SubChecklist:first", CurrentStep).attr("scl:subchecklistlanguage");
        var SubChecklistNamespace = $(".SCL_SubChecklist:first", CurrentStep).attr("scl:subchecklistnamespace");

        var Url = "";
        if (SubChecklistPermalinkID != "" && typeof(SubChecklistPermalinkID) != "undefined"){
            Url = "/SwissChecklist/Dialogs/SubTemplate/ChangeSubTemplate.aspx?Lang=" + $.trim($(".Language:first").text()) + "&PermalinkID=" + SubChecklistPermalinkID + "&SubChecklistLanguage=" + SubChecklistLanguage + "&SubChecklistNamespace=" + SubChecklistNamespace;
        } else {
            Url = "/SwissChecklist/Dialogs/SubTemplate/AddSubTemplate.aspx?Lang=" + $.trim($(".Language:first").text());
        }
     

        jQuery.fancybox({
            type : 'iframe',
            href : decodeURIComponent(Url),
            title : GetLocalizedText("AddSubChecklist"),
            width : 593,
            height : 500,
            transitionIn : 'none',
            transitionOut : 'none'
        });
        CurrentSubChecklistStep = CurrentStep;
        return false;
    };
}

function Trim(string) {
    if (typeof (string) != "undefined" && string != null)
        return string.replace(/^\s+|\s+$/g, "");
    else {
        return "";
    }
}
function GetCurrentTime() {
    var date = new Date();
    var b = date.getHours(); c = date.getMinutes(); d = date.getSeconds();
    if (b < 10) { b = '0' + b; }
    if (c < 10) { c = '0' + c; }
    if (d < 10) { d = '0' + d; }
    return (b + ':' + c + ':' + d);
}


// ### SwissChecklist.SubChecklistSearch.js
/*
* Swisschecklist.SaveChecklist Javascript
* Copyright (c) 2009 2sic internet solutions gmbh
* Author: Pascal Schweizer
*
* Requires jQuery 1.4.2
*
*/

var delay = (function() {
    var timer = 0;
    return function(callback, ms) {
        clearTimeout(timer);
        timer = setTimeout(callback, ms);
    };
})();

$(function() {
    $("#SubChecklistInput").live("keyup", function(e) {
        var SubChecklistContainer = $(this).closest("div");
        $("#SubChecklistInputValue", SubChecklistContainer).val(GetEncodedURLString(this.value));
        delay(function() {
            if ((e.keyCode > 47 && e.keyCode < 90) || e.keyCode == 8) {
                SwissChecklist.ChecklistController.SubChecklistSearch.GetSubChecklistResults(SubChecklistContainer);
            }
        }, 200);
    });

    $(".subchecklist_add").live("click", function() {
        SwissChecklist.ChecklistController.ShowSubChecklistWizard(CurrentStep);
        return false;
    });
});

SwissChecklist.ChecklistController.SubChecklistSearch = {
    GetSubChecklistResults: function(SubChecklistContainer) {
        var SearchInformations = {
            SearchString: $("#SubChecklistInput", SubChecklistContainer).val(),
            Namespace: $("#ddlNamespaces", SubChecklistContainer).val(),
            Language: $.trim($(".Language:first").text())
        };

        if (SearchInformations.SearchString == "") {
            $("#SearchResults", SubChecklistContainer).hide();
            $(".SearchResultsCounter").remove();
        } else {
            $("#SearchResults", SubChecklistContainer).show();
            var DTO = { 'SearchData': SearchInformations };
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                url: "/SwissChecklist/SwissChecklistServices.asmx/SearchChecklist",
                data: JSON.stringify(DTO),
                success: function(msg) {
                    if (typeof (msg) != "undefined")
                        SwissChecklist.ChecklistController.SubChecklistSearch.AppendSearchResults(msg.d, SubChecklistContainer);
                },
                error: function(xhr, status, error) {
                }
            });
        }
    },
    AppendSearchResults: function(SearchResultsObject, SubChecklistContainer) {
        $(".SearchElement", SubChecklistContainer).remove();
        var SearchElement = $(".TempSearchElement", SubChecklistContainer);
        var Dialog = SubChecklistContainer.closest(".ui-dialog");
        for (var i = 0; i < SearchResultsObject.Results.length; i++) {
            var SearchResult = SearchResultsObject.Results[i];

            var SearchItem = this.CreateSearchItem(SearchResult);
            SearchElement.after(SearchItem);
        }
        this.AppendResultsCounter(Dialog, SearchResultsObject.ResultsCount);
    },
    AppendResultsCounter: function(Dialog, ResultsCount) {
        $(".SearchResultsCounter", Dialog).remove();
        var Result = ResultsCount > 10 ? 10 : ResultsCount;
        var ResultsCounter = $("<span>", {
            "class": "SearchResultsCounter",
            text: GetLocalizedText("ShowingSearchResults", [Result.toString(), ResultsCount.toString()])
        });
        $(".ui-dialog-buttonpane", Dialog).append(ResultsCounter);
    },
    SaveSubChecklistToStep: function(Step, Context) {
        var SubChecklistNamespace = $("#ddlNamespaces", Context).val();
        if ($("#ddlNamespaces", Context).val() == "All" || $("#ddlNamespaces", Context).val() == "Public")
            SubChecklistNamespace = "";

        var SelectedSubChecklist = $(".SelectedSearchResult", Context);
        if (SelectedSubChecklist.length != 0) {
            $(".SCL_SubChecklist", Step).attr("scl:subchecklistkey", $("a", SelectedSubChecklist).attr("scl:subchecklistkey"));
            $(".SCL_SubChecklist", Step).attr("scl:subchecklistnamespace", SubChecklistNamespace);
            $(".SCL_SubChecklist", Step).attr("scl:subchecklisttitle", $("a", SelectedSubChecklist).attr("title"));

            if (SwissChecklist.ChecklistController.TempSubChecklistTitle != $("#SubChecklistInput", Context).val()) {
                SwissChecklist.ChecklistController.Steps.ComputeSubChecklistUrlUpdate(Step)
            }

            if (SelectedSubChecklist.attr("scl:subchecklistkey") != "") {
                //alert("SaveSubChecklistToStep");
                $(".SCL_SubChecklist", Step).removeClass("SCL_Hidden");
            } else {
                if (!$(".SCL_SubChecklist", Step).hasClass("SCL_Hidden")) {
                    $(".SCL_SubChecklist", Step).addClass("SCL_Hidden");
                }
            }
        }
    },
    SaveSubChecklistToStepFromDialog: function(Step, SubChecklistPermalinkID, Language)
    {
        $(".SCL_SubChecklist", Step).attr("scl:subchecklistpermalinkid", SubChecklistPermalinkID);
        $(".SCL_SubChecklist", Step).attr("scl:subchecklistlanguage", Language);

//        alert("Key: " + SubChecklistKey);
//        alert("Namespace: " + SubChecklistNamespace);
//        alert("Language: " + SubChecklistLanguage);

        SwissChecklist.ChecklistController.Steps.ComputeSubChecklistUrlUpdate(Step)

        if (SubChecklistPermalinkID != "") {
            $(".SCL_SubChecklist", Step).removeClass("SCL_Hidden");
        } else {
            if (!$(".SCL_SubChecklist", Step).hasClass("SCL_Hidden")) {
                $(".SCL_SubChecklist", Step).addClass("SCL_Hidden");
            }
        }
    },
    RemoveSubChecklistFromStepFromDialog: function(Step)
    {
         $(".SCL_SubChecklist", Step).attr({
            "scl:subchecklistlanguage": "",
            "scl:subchecklistpermalinkid":"",
            "title": "",
            "subchecklisturl": "",
            "scl:subchecklisttitle": ""
        }).addClass("SCL_Hidden");
    },
    AppendSearchItem: function(Step, Context) {
        var SubChecklistInfo = {
            Title: $(".SCL_SubChecklist", Step).attr("scl:subchecklisttitle"),
            Namespace: $(".SCL_SubChecklist", Step).attr("scl:subchecklistnamespace"),
            Key: $(".SCL_SubChecklist", Step).attr("scl:subchecklistkey")
        }

        var SearchItem = this.CreateSearchItem(SubChecklistInfo);
        SearchItem.addClass("SelectedSearchResult");
        $("#SearchResults", Context).show().find("ul").append(SearchItem).show();
    },
    CreateSearchItem: function(SubChecklistInfo) {
        var SearchItem = $("<li>", {
            "class": "SearchElement",
            click: function() {
                $(".SearchElement").removeClass("SelectedSearchResult");
                $(this).addClass("SelectedSearchResult");
            }
        });

        var SearchItemLink = $("<a>", {
            "title": SubChecklistInfo.Title,
            "scl:subchecklistnamespace": SubChecklistInfo.Namespace,
            "scl:language": $.trim($(".Language:first").text()),
            "scl:subchecklistkey": SubChecklistInfo.Key,
            "class": "SearchResult"
        });

        if (typeof (SubChecklistInfo.Namespace) == "undefined" || SubChecklistInfo.Namespace == "") {
            SearchItemLink.html(SubChecklistInfo.Title + "<br/><span>" + SubChecklistInfo.Key + "</span>");
        } else {
            SearchItemLink.html(SubChecklistInfo.Namespace + "//" + SubChecklistInfo.Title + "<br/><span>" + SubChecklistInfo.Key + "</span>");
        }
        SearchItem.append(SearchItemLink)
        return SearchItem;
    },
    RemoveSubChecklist: function(Step) {
        $(".SCL_SubChecklist", Step).attr({
            "scl:subchecklistkey": "",
            "scl:subchecklistnamespace": "",
            "scl:subchecklisttitle": ""
        }).addClass("SCL_Hidden");
    }
}

var CurrentSubChecklistStep = null;

// ### SwissChecklist.ViewChecklist.js
/*
* Swisschecklist View Javascript
* Copyright (c) 2009 2sic internet solutions gmbh
* Author: Pascal Schweizer
*
* Version 1.0 (2009/03/24)
* Requires jQuery 1.3.2
*
*/



$(function() {
    $(".SCL_MouseoverButtons").show();

    /*$("a.TemplateTab").click(function() {
        $("#ChecklistManagement").tabs("select", 1);
    });*/

    with (SwissChecklist.ChecklistController) {
        // Properties
        SwissChecklist.ChecklistController.StepsWithDetails = null;
        SwissChecklist.ChecklistController.LastClickedStep = null;
        SwissChecklist.ChecklistController.ClickTimer = null;
        SwissChecklist.ChecklistController.ClickEvent = null;
        SwissChecklist.ChecklistController.SubChecklistsMayBeShowed = true;
        SwissChecklist.ChecklistController.StatusOfChecklist = "";


        // Functions

        Checklist.ToggleCategoryAsTag = function(string) {
            var CategoryContainerValue = $("#CategoryContainer").text();
            if (CategoryContainerValue.indexOf(string) != -1) {
                var reg = new RegExp("\\s+" + string, "g");
                var NewValue = CategoryContainerValue.replace(reg, "");
                $("#CategoryContainer").text(NewValue);
            } else {
                $("#CategoryContainer").text(CategoryContainerValue + " " + string);
            }
            Steps.CheckApproach();
        }

        Checklist.UpdateCategoryListEdit = function() {
            var TextFieldValue = $("#CategoriesFromChecklist").text();
            $("li", ".CategoryListEdit").each(function(i) {
                var CategoryCheckbox = $("input", this);

                if (TextFieldValue.indexOf(CategoryCheckbox.attr("name")) != -1) {
                    // Check checkbox
                    CategoryCheckbox.attr("checked", "checked");
                    // Add to span
                    Checklist.ToggleCategoryAsTag(CategoryCheckbox.attr("name"));
                    // remove from textbox
                    var reg = new RegExp(CategoryCheckbox.attr("name"), "g");
                    TextFieldValue = TextFieldValue.replace(reg, "");
                    TextFieldValue = TextFieldValue.replace(/^\s+|\s+$|\s+/g, " ");
                    //$(".TagsChangeTextbox").val(TextFieldValue);
                }
            });
            // Addidional for Deleted and Draft
            var IndexOfDeleted = $("#CategoriesFromChecklist").text().indexOf("scl:deleted");
            var IndexOfDraft = $("#CategoriesFromChecklist").text().indexOf("scl:draft");

            if (IndexOfDeleted == -1 && IndexOfDraft == -1) {
                // Checklist is in Normal mode
                StatusOfChecklist = "normal";
            } else if (IndexOfDeleted > IndexOfDraft) {
                // Checklist is mark as deleted
                StatusOfChecklist = "deleted";
            } else if (IndexOfDraft > IndexOfDeleted) {
                // Checklist is mark as draft
                StatusOfChecklist = "draft";
            }

            var reg = new RegExp("scl:draft", "g");
            TextFieldValue = TextFieldValue.replace(reg, "");
            TextFieldValue = TextFieldValue.replace(/^\s+|\s+$|\s+/g, " ");
            //$(".TagsChangeTextbox").val(TextFieldValue);
        }

        Checklist.UpdateCategoryListView = function() {
            var SpanValue = $("#CategoriesFromChecklist").text();
            $("li", "#TagList").each(function(i) {
                var ListItemTitle = $(this).attr("title");
                if (SpanValue.indexOf(ListItemTitle) != -1)
                    $(this).css("display", "");
            });
        }

        Checklist.ChecklistStatusChange = function() {
            var SelectedStatus = $("#ddlStatus").val();
            //alert(SelectedStatus);
            var Categories = $("#CategoryContainer").text();
            var reg = new RegExp("scl:deleted", "g");
            Categories = Categories.replace(reg, "");
            Categories = Categories.replace(/^\s+|\s+$|\s+/g, " ");
            $("#CategoryContainer").text(Categories);

            var reg = new RegExp("scl:draft", "g");
            Categories = Categories.replace(reg, "");
            Categories = Categories.replace(/^\s+|\s+$|\s+/g, " ");
            $("#CategoryContainer").text(Categories);
            if (SelectedStatus == "deleted") {
                $("#CategoryContainer").text(Categories + " scl:deleted");
            }
            if (SelectedStatus == "draft") {
                $("#CategoryContainer").text(Categories + " scl:draft");
            }

            if (SelectedStatus != undefined) {
                // Manage showed stuff
                $(".DeletedStatus").css("display", "none");
                $(".DraftStatus").css("display", "none");
                if (SelectedStatus == "deleted") {
                    $(".DeletedStatus").css("display", "");
                }
                if (SelectedStatus == "draft") {
                    $(".DraftStatus").css("display", "");
                }


                $("#create_process_status").removeClass("StatusProcessOK");

                if (SelectedStatus == "normal") {
                    $("#create_process_status").addClass("StatusProcessOK");
                }
            }

        }


        Checklist.ShowDetail = function(StepObject) {
            var DetailsContainer = $(".SCL_Details:first", StepObject);
            DetailsContainer.removeClass("SCL_Hidden");
            StepObject.data("ShowDetails", true);
        }

        Checklist.ShowAllDetails = function() {
            $(".SCL_StepType_Task .SCL_Details").each(function(i) {
                if ($(this).html() != "") {
                    $(this).removeClass("SCL_Hidden");
                }
            });
        }

        Checklist.HideDetail = function(StepObject) {
            var DetailsContainer = $(".SCL_Details:first", StepObject);
            DetailsContainer.addClass("SCL_Hidden");
            StepObject.data("ShowDetails", false);
        }

        Checklist.HideAllDetails = function() {
            $(".SCL_StepType_Task .SCL_Details").each(function(i) {
                if ($(this).html() != "") {
                    if (!$(this).hasClass("SCL_Hidden")) {
                        $(this).addClass("SCL_Hidden");
                    }
                }
            });
        }

        Checklist.ToggleDetails = function(StepObject) {
            if (StepObject.data("ShowDetails") == false || StepObject.data("ShowDetails") == null) {
                if ($.trim($(".SCL_Details:first", StepObject).attr("scl:notes")) != "" || $(".ext_attachments ul li").length > 0 )
                    Checklist.ShowDetail(StepObject);
            }
            else {
                Checklist.HideDetail(StepObject);
            }
        }


        Checklist.ToggleAllDetails = function(StepObject) {
            // Check if system must toggle all details
//            var StepsWithDetails = $(".SCL_ShowDetails:not('.SCL_Hidden')").length;
//            var StepsWithShowedDetails = 0;
//            $(".SCL_ShowDetails:not('.SCL_Hidden')").each(function() {
//                var Step = $(this).parents(".SCL_Step:first");
//                if (Step.data("ShowDetails") == true)
//                    StepsWithShowedDetails++;
//            });



            if (!$(".SCL_Details:first", StepObject).hasClass("SCL_Hidden")) {
                // Hide all
                $(".SCL_ShowDetails:not('.SCL_Hidden')").each(function() {
                    var Step = $(this).parents(".SCL_Step:first");
                    Checklist.HideDetail(Step);
                });
            } else {
                // Show all
                $(".SCL_ShowDetails:not('.SCL_Hidden')").each(function() {
                    var Step = $(this).parents(".SCL_Step:first");
                    Checklist.ShowDetail(Step);
                });
            }
        }

        Checklist.SingleClickOnShowDetails = function() {
            Checklist.ToggleDetails(LastClickedStep);
        }

        Checklist.DoubleClickOnShowDetails = function(StepObject) {
            Checklist.ToggleAllDetails(StepObject);
        }



        /*
        **  Subchecklist methods
        */

        // Inserting Subchecklists
        Checklist.InsertSubChecklist = function(Step) {
            // Check if jQuery is loaded
            if ($ && SubChecklistsMayBeShowed) {

                var CurrentSubChecklist = $(".SCL_SubChecklists:first", Step);
                // if there no subchecklist add one else show or hide it
                if ($("div", CurrentSubChecklist).length == 0) {
                    // Get Url
                    var url = $(".SCL_SubChecklist", Step).attr("subchecklisturl");
                    if (url != "" && url != null && typeof(url) != "undefined")
                    {
                        $(".SubChecklistLoader", Step).removeClass("SCL_Hidden");
                        $(".SubChecklistEmpty:first", Step).addClass("SCL_Hidden");
                        $.get(url + "&q=" + (Math.random() * 100000), function(data) {
                            var ContentToAppend;
                            if ($("#NewChecklist", data).size() != 0)           // Show new checklist interface
                                ContentToAppend = $("#NewChecklist", data);
                            else if ($(".LoginMessage", data).size() != 0) {     // Show login error
                                ContentToAppend = $(".LoginMessage", data);
                                ContentToAppend.css("display", "block");
                            } else {                                           // Show Checklist
                                ContentToAppend = $(".ChecklistLeftPanel", data).children();
                                $("#Step_0", ContentToAppend).css("display", "none");
                            }

                            $(CurrentSubChecklist).append(ContentToAppend);
                            $(CurrentSubChecklist).removeClass("SCL_Hidden");
                            $(".SubChecklistLoader", Step).addClass("SCL_Hidden");
                            $(".SubChecklistFull:first", Step).removeClass("SCL_Hidden");

                            // Init Hover in subchecklist
                            Steps.InitPostIt();
                            Steps.InitSteps();
                            if (typeof (SwissChecklist.Extensions.InitializeExtensions) != 'undefined')
                                SwissChecklist.Extensions.InitializeExtensions($("#ChecklistContainer", Step));
                            if (typeof ($.fn.customCheckbox) != "undefined")
                                $(".ChecklistCheckbox").customCheckbox();

                            $(".SCL_Step", CurrentSubChecklist).not(".SCL_ChecklistCompleteTask").each(function(i) {
                                Steps.InitStepClickUse($(this), false);
                            });

                            // Update FootSteps in SubChecklist
                            $(".SCL_Step", Step).each(function(i) {
                                if ($(".SCL_SubChecklist", this).attr("subchecklisturl").toString().indexOf("/my/") != -1) {
                                    $(".SubChecklistEmpty", this).addClass("SCL_Hidden");
                                    $(".SubChecklistFull", this).removeClass("SCL_Hidden");
                                }
                            });
                        });
                    }
                } else {
                    // get SubChecklist
                    var SubChecklist = $(".SCL_SubChecklists:first div:first", Step);
                    if (SubChecklist.hasClass("SCL_Hidden")) {
                        //alert("get subchecklist");
                        SubChecklist.removeClass("SCL_Hidden");
                        $(CurrentSubChecklist).removeClass("SCL_Hidden");
                    } else {
                        SubChecklist.addClass("SCL_Hidden");
                        $(CurrentSubChecklist).addClass("SCL_Hidden");
                    }
                }

            } else {
                
            }
        }

        Checklist.ShowSubChecklist = function(StepObject) {
            var SubChecklist = $(".SCL_SubChecklists:first div:first", StepObject);
            SubChecklist.removeClass("SCL_Hidden");
            $(".SCL_SubChecklists:first", StepObject).removeClass("SCL_Hidden");
        }

        Checklist.HideSubChecklist = function(StepObject) {
            var SubChecklist = $(".SCL_SubChecklists:first div:first", StepObject);
            SubChecklist.addClass("SCL_Hidden");
            $(".SCL_SubChecklists:first", StepObject).addClass("SCL_Hidden");
        }

        Checklist.HideAllSubChecklists = function() {
            $("#Checklist .SCL_Step").each(function(i) {
                Checklist.HideSubChecklist($(this));
            });
        }

        Checklist.ShowAttachment = function(ImageUrl, ImageLink, Title, Description) {
            jQuery.fancybox({
                type: 'image',
                href: ImageUrl,
                title: Title,
                transitionIn: 'none',
                transitionOut: 'none',
                autoDimensions: true,
                showNavArrows: true,
                cyclic: true,
                index: 5,
                onComplete: function() {
                    $("#fancybox-wrap").css("width", "auto");
                   //$("#fancybox-content").css("width", parseInt($("#fancybox-content").css("width")) + 10 + "px");
                   $("#fancybox-content").append("<div id='fancybox-description'>" + Description + "</div>");
                   $("#fancybox-content").append("<div id='fancybox-download'><a href='" + ImageLink + "' target='_self'>Download</a></div>");
                }
            });
        }

        // Events

        $(".SCL_Step").data("ShowDetails", false);

        $(".SCL_Step .SCL_ShowDetails").live("click", function(ev) {
            UserMayLeave = true;
            LastClickedStep = $(this).parents(".SCL_Step:first");
            ClickEvent = ev;
            ClickTimer = window.setTimeout(function() {
                if (ClickEvent) {
                    Checklist.SingleClickOnShowDetails(); 
                    clearTimeout(ClickTimer);
                    ClickEvent = null; 
                }
            }, SwissChecklist.ChecklistController.DoubleClickSpeed);
            return false;
        });

        $(".SCL_Step .SCL_ShowDetails").live("dblclick", function(ev) {
            UserMayLeave = true;
            window.clearTimeout(ClickTimer);
            var StepObject = $(this).parents(".SCL_Step:first");
            //if (ClickEvent != null)
            //{
                ClickEvent = null;
                Checklist.DoubleClickOnShowDetails(StepObject);
            //}
            return false;
        });

        $("#Checklist .SCL_Step").each(function(i) {
            var re = new RegExp("/my/microembed/([0-9]*)");
            var subchecklisturl = $(".SCL_SubChecklist:first", this).attr("subchecklisturl");

            if (subchecklisturl.match(re)) {
                $(".SubChecklistEmpty", this).addClass("SCL_Hidden");
                $(".SubChecklistFull", this).removeClass("SCL_Hidden");
            }
        });

        $(".SCL_SubChecklist").live("click", function() {
            var Step = $(this).parents(".SCL_Step:first");
            //var SubChecklistURL = $(this).attr("subchecklisturl");

            if (SwissChecklist.ChecklistController.Checklist.CurrentView.Name == "change")
            {
                SwissChecklist.ChecklistController.ShowSubChecklistWizard(Step);
            } else {
                Checklist.InsertSubChecklist(Step);
            }
            return false;
        });

        //$(".CategoryListEdit ul li input").click(function() {
        //    Checklist.ToggleCategoryAsTag($(this).attr("name"));
        //});
    }
});




/*
* Swisschecklist.ChangeChecklist Javascript
* Copyright (c) 2009 2sic internet solutions gmbh
* Author: Pascal Schweizer
*
* Requires jQuery 1.3.2
*
*/
$(function() {
    with (SwissChecklist.ChecklistController) {

        $("#ExtensionActions").click(function() {
            Steps.ToggleStepActions(this);
        });
        // Properties
        SwissChecklist.ChecklistController.IsChecklistInEditMode = false;
        SwissChecklist.ChecklistController.CurrentEditedStep = null;
        SwissChecklist.ChecklistController.ReCreateLastStep = false;
        SwissChecklist.ChecklistController.StepInEditMode = null;
        SwissChecklist.ChecklistController.LastChangedStep = null;
        SwissChecklist.ChecklistController.TempSubChecklistTitle = "";
        SwissChecklist.ChecklistController.TempSubChecklistChangeStep = null;
        SwissChecklist.ChecklistController.AddedSteps = 0;
        SwissChecklist.ChecklistController.TemporaryChecklistStepForSubChecklistURLUpdate = null;
        SwissChecklist.ChecklistController.ReEnableCurrentStep = false;
        SwissChecklist.ChecklistController.TempStep = null;
        SwissChecklist.ChecklistController.ChecklistCreated = false;
        SwissChecklist.ChecklistController.ChecklistCategorized = false;
        SwissChecklist.ChecklistController.ChecklistTagged = false;
        SwissChecklist.ChecklistController.InsertStepButtonTimer = null;
        SwissChecklist.ChecklistController.SubChecklistWebserviceURL = "/SwissChecklist/SwissChecklistServices.asmx/GetSubChecklistURL";

        // Functions
        Steps.InitStepRollover = function(StepObject) {
            $(StepObject).unbind("mouseenter").unbind("mouseleave");
            StepObject.bind("mouseenter", function() {
                //Steps.AddButtonsToStep(StepObject);
                Steps.AddAddStepButtons(StepObject);
            });
            StepObject.bind("mouseleave", function() {
                //Steps.RemoveButtonsFromStep(StepObject);
            });
        }

        Steps.ResetStepRollover = function(StepObject) {
            StepObject.unbind("mouseenter").unbind("mouseleave");
        }

        Steps.AddButtonsToStep = function(StepObject) {
            if (StepObject) {
                if (!Steps.IsStepInEditMode(StepObject)) {
                    $(".SCL_MouseoverButtons", StepObject).append($("#EditButtons"));
                }
            }
        }

        Steps.RemoveButtonsFromStep = function(StepObject) {
            $("#Templates").append($("#EditButtons", StepObject));
        }

        Steps.IsStepsInEditMode = function(StepObject) {
            if (CurrentEditedStep == null)
                return false
            else
                if (CurrentEditedStep.attr("id") == StepObject.attr("id"))
                return true;
            else
                return false;
        }

        Steps.InitStepClick = function(StepObject) {
            $(StepObject).click(function(event) {
                // Check that it's not a click from the action menu
                if ($(event.target)[0].tagName != "IMG" 
                && $(".SCL_MouseoverButtons").find(event.target).size() == 0 
                && $(event.target)[0].className.indexOf("ext_viewforms_wrapper") == -1 
                && $(event.target).parents("#EditButtonsContent").size() == 0
                && $(event.target)[0].className.indexOf("InsertStepBelow") == -1
                && $(event.target)[0].className.indexOf("InsertStepAbove") == -1
                && $(event.target).parents("#InsertStepButton").size() == 0) {
                    //if ($(event.target)[0].tagName != "IMG") {
                    if (CurrentEditedStep == null) {
                        Steps.ToggleStepMode(StepObject);
                    }
                    else if ($(this).attr("id") != CurrentEditedStep.attr("id")) {
                        Steps.ToggleStepMode(StepObject);
                    }

                    // Add Atribute
                    Steps.MarkStepAsChanged(StepObject, true);
                    ForbidUserToLeave();
                }
            });
        }

        Steps.InitStepClickUse = function(StepObject, IsPreview) {
            $(".SCL_StepLine:first", StepObject).live("click", function(event) {
                ClickEvent = event;
                var Element = $(this);
                ClickTimer = window.setTimeout(function() {
                    if (ClickEvent) {
                        // Check that it's not a click from the action menu or something else
                        if ($(event.target).parents(".custom-checkbox").size() == 0
                        && $(event.target).parents(".SortPanel").size() == 0
                        && $(event.target).parents(".SCL_ShowDetails").size() == 0
                        && $(event.target).parents(".SCL_SubChecklist").size() == 0
                        && $(event.target).parents(".SCL_MouseoverButtons").size() == 0
                        && $(event.target).parents(".ext_viewforms_wrapper").size() == 0
                        && $(event.target)[0].className.indexOf("ext_viewforms_wrapper") == -1) {
                    
                            // Check
//                            $(".custom-checkbox:first img", Element).click();
                            SwissChecklist.ChecklistController.Steps.ClickCheckbox(Element, IsPreview);
                            ClickEvent = null;
                        }
                    }
                }, SwissChecklist.ChecklistController.DoubleClickSpeed);
            });

            $(".SCL_StepLine:first", StepObject).live("dblclick", function(event) {
                window.clearTimeout(ClickTimer);
                if (ClickEvent != null)
                {
                    ClickEvent = null;

                    if ($(event.target).parents(".custom-checkbox").size() == 0
                            && $(event.target).parents(".SortPanel").size() == 0
                            && $(event.target).parents(".SCL_ShowDetails").size() == 0
                            && $(event.target).parents(".SCL_SubChecklist").size() == 0
                            && $(event.target).parents(".SCL_MouseoverButtons").size() == 0
                            && $(event.target).parents(".ext_viewforms_wrapper").size() == 0
                            && $(event.target)[0].className.indexOf("ext_viewforms_wrapper") == -1) 
                    {
                    
                        // Check
                        var StepObject = $(this).parents("li:first");
                        // Toggle Details

                        // Clear selection
                        if(document.selection && document.selection.empty) {         
                            document.selection.empty();     
                        } else if(window.getSelection) {         
                            var sel = window.getSelection();         
                            sel.removeAllRanges();     
                        } 

                        SwissChecklist.ChecklistController.Checklist.ToggleDetails(StepObject);
                    }
                }
            });
        }

        Steps.RemoveStepClickUse = function(StepObject) {
            $(".SCL_StepLine:first", StepObject).die("click");
            $(".SCL_StepLine:first", StepObject).die("dblclick");
        }

        Steps.ClickCheckbox = function(StepObject, IsPreview)
        {
            $(".custom-checkbox:first img", StepObject).click();
        }

        Steps.ToggleStepMode = function(StepObject) {
            if (CurrentEditedStep != null) {
                if (CurrentEditedStep.attr("id") != StepObject.attr("id")) {
                    Steps.ChangeStepToViewMode(CurrentEditedStep);
                    Steps.ChangeStepToEditMode(StepObject);
                    CurrentEditedStep = StepObject;
                } else {
                    Steps.ChangeStepToViewMode(CurrentEditedStep);
                    CurrentEditedStep = null;
                }
            } else {
                Steps.ChangeStepToEditMode(StepObject);
                CurrentEditedStep = StepObject;
            }
        }

        Steps.ChangeStepToEditMode = function(StepObject) {
            // This function contains every step to change a step to edit mode

            $(".AdditionalSaveAjaxOk").css("display", "none");
            StepObject.addClass("ActiveStep");
            StepObject.addClass("modify_step");

            $("#Templates").append($("#EditIcon"));

            //$(".ext_viewforms_wrapper", StepObject).hide();
            $(".SCL_StepLine", StepObject).css("height", "auto");

            // Remove delete button
            //Steps.RemoveButtonsFromStep(StepObject);

            // Change title tag to textfield
            var TitleTag = null;
            if ($(StepObject).hasClass("SCL_StepType_Task")) {
                TitleTag = $("p:first", StepObject)
            };
            if ($(StepObject).hasClass("SCL_StepType_Title")) {
                TitleTag = $("h2:first", StepObject)
            };
            if ($(StepObject).hasClass("SCL_StepType_Info")) {
                TitleTag = $("p:first", StepObject)
            };

            var TitleInput = $(".TitleInput");
            TitleInput.val($.trim(TitleTag.text()));
            TitleTag.after(TitleInput);
            TitleTag.css("display", "none");

            // select text

            TitleInput.focus();
            TitleInput.select();

            // Add editor elements
            StepObject.append($("#EditStep"));

            // Add subchecklist stuff

            var SubChecklistNamespace = $(".SCL_SubChecklist ", StepObject).attr("scl:subchecklistnamespace");
            var SubChecklistKey = $(".SCL_SubChecklist ", StepObject).attr("scl:subchecklistkey");
            var SubChecklistTitle = $(".SCL_SubChecklist ", StepObject).attr("scl:subchecklisttitle");
            if (typeof (SubChecklistNamespace) != "undefined") {
                TempSubChecklistTitle = SubChecklistTitle;
                $("#SubChecklistInput").val(SubChecklistTitle);
                if (SubChecklistNamespace == "") {
                    $("#ddlNamespaces").val("All");
                    if (SubChecklistKey != "") {
                        $("#ddlNamespaces").val("Public");
                    }
                } else if (SubChecklistNamespace.indexOf("User:") != "-1") {
                    $("#ddlNamespaces").val("My");
                } else {
                    $("#ddlNamespaces").val(SubChecklistNamespace);
                }
                $("#SubChecklistInputValue").val(SubChecklistKey);
            }


            // Config converterlinks visibility
            if (StepObject.hasClass("SCL_StepType_Title"))
                $("#ToTitle", StepObject).attr("checked", "checked");
            if (StepObject.hasClass("SCL_StepType_Task"))
                $("#ToTask", StepObject).attr("checked", "checked");

            // Config Editor
            //$("#EditorContent").val(UnEscapeWikiString($(".SCL_Details", StepObject).attr("scl:notes")));

            // Add "new" step below
            //StepObject.after($("#Step_NewStep").css("display", ""));

            $('#EditorButtons').css('display', 'none');

            //if (!$(".SCL_Details", StepObject).hasClass("SCL_Hidden"))
            $(".SCL_Details:first", StepObject).removeClass("SCL_Hidden");
            $(".SCL_ShowDetails", StepObject).addClass("SCL_Hidden");
            $(".SCL_SubChecklist", StepObject).addClass("SCL_Hidden");
            $(".SCL_ChangeDetails", StepObject).show();
            

            if ($.trim($(".SCL_Details:first", StepObject).attr("scl:notes")) == "")
            {
                $(".SCL_Details:first", StepObject).append($("#EmptyStepDescription").html());
            }

            $(".custom-checkbox", StepObject).hide();

            SwissChecklist.ChecklistController.Steps.AddButtonsToStep(StepObject);

            StepInEditMode = StepObject;
            LastChangedStep = StepObject;

            if (typeof (SwissChecklist.Extensions.ChangeStepToViewMode) != "undefined") {
                SwissChecklist.Extensions.ChangeStepToViewMode(StepObject);
            }

        }

        Steps.ChangeStepToViewMode = function(StepObject) {
            StepObject.removeClass("ActiveStep");
            StepObject.removeClass("modify_step");


            // Change textfield tag to titletag
            var TitleTag = null;
            if ($(StepObject).hasClass("SCL_StepType_Task")) {
                TitleTag = $("p:first", StepObject)
            };
            if ($(StepObject).hasClass("SCL_StepType_Title")) {
                TitleTag = $("h2:first", StepObject)
            };
            if ($(StepObject).hasClass("SCL_StepType_Info")) {
                TitleTag = $("p:first", StepObject)
            };

            var TitleInput = $(".TitleInput");
            $(TitleTag).text(TitleInput.val());
            $("#Templates").append(TitleInput);
            TitleTag.css("display", "");

            
            $(".ext_viewforms_wrapper", StepObject).show();

            var EditorContentValue2 = $(".EditorContent").val();
            EditorContentValue2 = EditorContentValue2.replace(/	/gi, "    ");

            var EncodedHtml = { EncodedHtml: EditorContentValue2 };

            // Make Description stuff
//            SwissChecklist.Ajax.AjaxRequest("/SwissChecklist/SwissChecklistServices.asmx/GetWikiHtml", JSON.stringify(EncodedHtml), function(msg) {
//                // Success
//                var AttachmentsDiv = $(".ext_attachments:first", StepObject);
//                $(".SCL_Details:first", StepObject).empty().append(AttachmentsDiv);
//                $(".SCL_Details:first", StepObject).prepend(msg.d);
//            }, function() {
//            });

            // Add subchecklist stuff

            var SubChecklistNamespace = $("#ddlNamespaces").val();
            if ($("#ddlNamespaces").val() == "All" || $("#ddlNamespaces").val() == "Public")
                SubChecklistNamespace = "";

            $(".SCL_SubChecklist", StepObject).attr("scl:SubChecklistKey", $("#SubChecklistInputValue").val());
            $(".SCL_SubChecklist", StepObject).attr("scl:SubChecklistNamespace", SubChecklistNamespace);
            $(".SCL_SubChecklist", StepObject).attr("scl:SubChecklistTitle", $("#SubChecklistInput").val());

            if (TempSubChecklistTitle != $("#SubChecklistInput").val()) {
                TempSubChecklistChangeStep = StepObject;
                Steps.ComputeSubChecklistUrlUpdate(TempSubChecklistChangeStep)
            }

            if ($(".SCL_SubChecklist:first", StepObject).attr("scl:subchecklistpermalinkid") != "") {
                $(".SCL_SubChecklist:first", StepObject).removeClass("SCL_Hidden");
            } else {
                if (!$(".SCL_SubChecklist:first", StepObject).hasClass("SCL_Hidden")) {
                    $(".SCL_SubChecklist:first", StepObject).addClass("SCL_Hidden");
                }
            }


            $(".SCL_Details:first .DescriptionDefaultValue", StepObject).remove();
            
            $(".SCL_ChangeDetails", StepObject).hide();
            if(StepObject.hasClass("SCL_StepType_Task")) {
                $(".custom-checkbox", StepObject).show();

                $(".ChecklistCheckbox", StepObject).removeClass("SCL_Hidden");
                $(".ChecklistCheckbox", StepObject).customCheckbox();
            }

            //$(".view_subchecklist", StepObject).attr("title", $("#SubChecklistInput").val());

            // Add editor content
            var DetailsValue = $(".SCL_Details:first", StepObject).text();
//            EditorContentValue = EditorContentValue.replace(/	/gi, "    ");
//            $(".SCL_Details:first", StepObject).attr("scl:notes", EscapeWikiString(EditorContentValue));
            if ($.trim(DetailsValue) == "") 
            {
                $(".SCL_Details", StepObject).addClass("SCL_Hidden");
                $(".SCL_ShowDetails:first", StepObject).addClass("SCL_Hidden");
                StepObject.data("ShowDetails", false);
            } else {
                $(".SCL_Details", StepObject).removeClass("SCL_Hidden");
                $(".SCL_ShowDetails:first", StepObject).removeClass("SCL_Hidden");
                StepObject.data("ShowDetails", true);
            }
            //$(".SCL_Details", StepObject).addClass("SCL_Hidden");

//            if ($("#EditorContent").val() != "" || $(".ext_attachmentitem", StepObject).length != 0) {
//                $(".SCL_ShowDetails:first", StepObject).removeClass("SCL_Hidden");
//            } else {
//                if (!$(".SCL_ShowDetails:first", StepObject).hasClass("SCL_Hidden")) {
//                    $(".SCL_ShowDetails:first", StepObject).addClass("SCL_Hidden");
//                }
//            }

            SwissChecklist.ChecklistController.Steps.RemoveButtonsFromStep(StepObject);

            // remove editor elements
            $("#Templates").append($("#EditStep"));
            // $("#Step_NewStep").css("display", "none");
            $('#EditorButtons').css('display', 'none');

//            if ($("#Checklist #Step_NewStep").size() == 0)
//                $("#Checklist").append($("#Step_NewStep"));

            if (typeof (SwissChecklist.Extensions.ChangeStepToViewMode) != "undefined") {
                SwissChecklist.Extensions.ChangeStepToViewMode(StepObject);
            }

            $("#Checklist").append($(".ChecklistTemplateStep"));

            StepInEditMode = null;
        }

        Steps.AddStep = function(StepObject) {
            if (typeof (StepObject) != "undefined" && StepObject != null) {
                // Count one
                AddedSteps++;

                // Add step
                StepObject.after($("#Step_0").clone().attr("id", "Step_0_" + AddedSteps).removeClass("TemplateStep").css("display", ""));

                // Get new StepObject
                StepObject = $("#Step_0_" + AddedSteps);

                // Guid
                var NewId = newGuid();
                StepObject.attr("scl:stepguid", NewId);

                // Init step functions
                Steps.InitStepClick(StepObject);
                Steps.InitStepRollover(StepObject);
                Steps.ToggleStepMode(StepObject);
                Steps.MarkStepAsChanged(StepObject, true);
            } else {
                // Checklist is empty add a step
                AddedSteps++;
                $("#Checklist").append($("#Step_0").clone().attr("id", "Step_0_" + AddedSteps).removeClass("TemplateStep").css("display", ""));
                // Get new StepObject
                StepObject = $("#Step_0_" + AddedSteps);

                // Guid
                var g = newGuid();
                StepObject.attr("scl:stepguid", g);


                // Init step functions
                Steps.InitStepClick(StepObject);
                Steps.InitStepRollover(StepObject);
                Steps.ToggleStepMode(StepObject);
                Steps.MarkStepAsChanged(StepObject, true);
            }

            SwissChecklist.ChecklistController.Steps.DisposeChangeIcon();
            SwissChecklist.ChecklistController.Steps.InitChangeIcon();
            SwissChecklist.ChecklistController.ForbidUserToLeave();
            $(".ChecklistCheckbox, .StepCheckbox").customCheckbox();
            
            $(".custom-checkbox", StepObject).hide();
        }

        Steps.AddStepAbove = function(StepObject) {
            if (typeof (StepObject) != "undefined" && StepObject != null) {
                // Count one
                AddedSteps++;

                // Add step
                StepObject.before($("#Step_0").clone().attr("id", "Step_0_" + AddedSteps).removeClass("TemplateStep").css("display", ""));

                // Get new StepObject
                StepObject = $("#Step_0_" + AddedSteps);

                // Guid
                var NewId = newGuid();
                StepObject.attr("scl:stepguid", NewId);

                // Init step functions
                Steps.InitStepClick(StepObject);
                Steps.InitStepRollover(StepObject);
                Steps.ToggleStepMode(StepObject);
                Steps.MarkStepAsChanged(StepObject, true);
            } else {
                // Checklist is empty add a step
                AddedSteps++;
                $("#Checklist").prepend($("#Step_0").clone().attr("id", "Step_0_" + AddedSteps).removeClass("TemplateStep").css("display", ""));
                // Get new StepObject
                StepObject = $("#Step_0_" + AddedSteps);

                // Guid
                var g = newGuid();
                StepObject.attr("scl:stepguid", g);


                // Init step functions
                Steps.InitStepClick(StepObject);
                Steps.InitStepRollover(StepObject);
                Steps.ToggleStepMode(StepObject);
                Steps.MarkStepAsChanged(StepObject, true);
            }
            
            SwissChecklist.ChecklistController.Steps.DisposeChangeIcon();
            SwissChecklist.ChecklistController.Steps.InitChangeIcon();
            $(".ChecklistCheckbox, .StepCheckbox").customCheckbox();
            SwissChecklist.ChecklistController.ForbidUserToLeave();
            $(".custom-checkbox", StepObject).hide();
        }

        Steps.AddStepWithoutEditing = function(StepObject, Title) {
            if (typeof (StepObject) != "undefined" && StepObject != null) {
                // Count one
                AddedSteps++;

                // Add step
                StepObject.after($("#Step_0").clone().attr("id", "Step_0_" + AddedSteps).removeClass("TemplateStep").css("display", ""));

                // Get new StepObject
                StepObject = $("#Step_0_" + AddedSteps);

                // Guid
                var NewId = newGuid();
                StepObject.attr("scl:stepguid", NewId);

                // Init step functions
                Steps.InitStepClick(StepObject);
                Steps.InitStepRollover(StepObject);

                //$("input:first", StepObject).show();
                $("p:first", StepObject).text(Title);

                //Steps.ToggleStepMode(StepObject);
                Steps.MarkStepAsChanged(StepObject, true);
            }
            SwissChecklist.ChecklistController.Steps.DisposeChangeIcon();
            SwissChecklist.ChecklistController.Steps.InitChangeIcon();
            $(".ChecklistCheckbox, .StepCheckbox").customCheckbox();
            SwissChecklist.ChecklistController.ForbidUserToLeave();
            //$(".custom-checkbox", StepObject).hide();
        }

        Steps.AddStepWithoutEditingAbove = function(StepObject, Title) {
            if (typeof (StepObject) != "undefined" && StepObject != null) {
                // Count one
                AddedSteps++;

                // Add step
                StepObject.before($("#Step_0").clone().attr("id", "Step_0_" + AddedSteps).removeClass("TemplateStep").css("display", ""));

                // Get new StepObject
                StepObject = $("#Step_0_" + AddedSteps);

                // Guid
                var NewId = newGuid();
                StepObject.attr("scl:stepguid", NewId);

                // Init step functions
                Steps.InitStepClick(StepObject);
                Steps.InitStepRollover(StepObject);

                //$("input:first", StepObject).show();
                $("p:first", StepObject).text(Title);

                //Steps.ToggleStepMode(StepObject);
                Steps.MarkStepAsChanged(StepObject, true);
            }
            SwissChecklist.ChecklistController.Steps.DisposeChangeIcon();
            SwissChecklist.ChecklistController.Steps.InitChangeIcon();
            $(".ChecklistCheckbox, .StepCheckbox").customCheckbox();
            SwissChecklist.ChecklistController.ForbidUserToLeave();
            //$(".custom-checkbox", StepObject).hide();
        }

        Steps.RemoveAddStepButtons = function() {
            $("#Templates").append($("#InsertStepButton"));
        };

        Steps.AddAddStepButtons = function(StepObject) {
            StepObject.append($("#InsertStepButton"));
            // ToDo: Reactivate this
            clearTimeout(InsertStepButtonTimer);
            InsertStepButtonTimer = setTimeout(function() {
                Steps.RemoveAddStepButtons();
            }, 6000);
        };


        Steps.ComputeSubChecklistUrlUpdate = function(StepObject) {
            var CurrentSubChecklist = $(".SCL_SubChecklist ", StepObject);
            var SubChecklistPermalinkID = CurrentSubChecklist.attr("scl:subchecklistpermalinkid");
            var SubChecklistLanguage = CurrentSubChecklist.attr("scl:subchecklistlanguage");

            var DTO = { 'ChecklistPermalinkID': SubChecklistPermalinkID, 'Language': SubChecklistLanguage };
            TemporaryChecklistStepForSubChecklistURLUpdate = StepObject;

            if (SubChecklistPermalinkID != "" && SubChecklistLanguage != "")
            {
            SwissChecklist.Ajax.AjaxRequest(SubChecklistWebserviceURL, JSON.stringify(DTO), function(msg) {
                  $(".SCL_SubChecklist:first", TemporaryChecklistStepForSubChecklistURLUpdate).attr("subchecklisturl", msg.d);
                Steps.MarkStepAsChanged(TemporaryChecklistStepForSubChecklistURLUpdate);
            }, function(xhr) {
                //alert(xhr.responseText);
                $("<span>", {
                    text: xhr.responseText
                }).dialog({ title: "AJAX Error" });
            });
            }
        }

        Steps.GetStepObjectFromParentStep = function(StepObject) {
            return $(StepObject).parents(".SCL_Step:first");
        }

        Steps.ConvertToTask = function(StepObject) {
            StepObject.removeClass("SCL_StepType_Title");
            StepObject.removeClass("SCL_StepType_Info");
            StepObject.addClass("SCL_StepType_Task");
            //$("input:first", StepObject).removeClass("SCL_Hidden");
            TitleTag = $("h2:first", StepObject);
            TitleTag.replaceWith("<p style='display: none;'>" + TitleTag.html() + "</p>");
            TitleTag.click(function() { ToggleStepMode(StepObject); });
            $("#TitleInput", StepObject).focus();
        }

        Steps.ConvertToTitle = function(StepObject) {
            StepObject.removeClass("SCL_StepType_Task");
            StepObject.removeClass("SCL_StepType_Info");
            StepObject.addClass("SCL_StepType_Title");
            //$("input:first", StepObject).addClass("SCL_Hidden");
            TitleTag = $("p:first", StepObject);
            TitleTag.replaceWith("<h2 style='display: none;'>" + TitleTag.html() + "</h2>");
            TitleTag.click(function() { ToggleStepMode(StepObject); });
            $("#TitleInput", StepObject).focus();
        }

        Steps.ConvertToInfo = function(StepObject) {
            Steps.ConvertToTask(StepObject);
            StepObject.removeClass("SCL_StepType_Task");
            StepObject.addClass("SCL_StepType_Info");
        }

        Steps.ResetButtons = function(StepObject) {
            $("#Templates").append($("#EditButtons", StepObject));
        }

        Steps.TryToRemoveStep = function(StepObject)
        {
            SwissChecklist.ChecklistController.Checklist.FancyConfirm(GetLocalizedText("ConfirmDeleteStep"), GetLocalizedText("Yes"), GetLocalizedText("No"), GetLocalizedText("DeleteStep"), function(IsOk) {
                if (IsOk)
                    SwissChecklist.ChecklistController.Steps.RemoveStep(StepObject);
            });     
        }

        Steps.RemoveStep = function(StepObject) {

            if (Steps.IsStepInEditMode(StepObject))
                    Steps.ChangeStepToViewMode(StepObject);
            Steps.MarkStepAsChanged(StepObject, true);
            Steps.RemoveAddStepButtons();

            Steps.ResetStepRollover(StepObject);
            Steps.ResetButtons(StepObject);

            setTimeout(function() {
                StepObject.remove();
                Steps.CheckChecklistSteps();
                UserMayLeave = false;
            }, 200);

//            var Buttons = {};
//            Buttons[GetLocalizedText("No")] = function() {
//                $(this).dialog('close');
//            };
//            Buttons[GetLocalizedText("Yes")] = function() {
//                if (Steps.IsStepInEditMode(StepObject))
//                    Steps.ChangeStepToViewMode(StepObject);
//                Steps.MarkStepAsChanged(StepObject, true);
//                Steps.RemoveAddStepButtons();

//                Steps.ResetStepRollover(StepObject);
//                Steps.ResetButtons(StepObject);

//                setTimeout(function() {
//                    StepObject.remove();
//                    Steps.CheckChecklistSteps();
//                    UserMayLeave = false;
//                }, 500);
//                $(this).dialog('close');
//            };


//            $("<span>", {
//                text: GetLocalizedText("ConfirmDeleteStep")
//            }).dialog({
//                title: GetLocalizedText("DeleteStep"),
//                resizable: false,
//                height: 140,
//                modal: true,
//                buttons: Buttons
//            });
        }

        Steps.CollapseActualStep = function() {
            if (CurrentEditedStep != null) {
                TempStep = CurrentEditedStep;
                Steps.ToggleStepMode(CurrentEditedStep);

                Steps.AddButtonsToStep(TempStep, false);
                TempStep = null;
            }
        }

        Steps.IsStepInEditMode = function(StepObject) {
            if (CurrentEditedStep == null)
                return false
            else
                if (CurrentEditedStep.attr("id") == StepObject.attr("id"))
                return true;
            else
                return false;
        }

        Steps.ChecklistKeyInsertNewStep = function(event) {
            var key;
            if (window.event)
                key = window.event.keyCode;     //IE
            else
                key = event.which;     //firefox
            if (key == 13) {
                $("#TitleInput").blur()
                Steps.AddStep(CurrentEditedStep);
                return false;
            }
            else
                return true;
        }

        Steps.CheckKeyAndInsertNewStep = function(event) {
            var key;
            if (window.event)
                key = window.event.keyCode;     //IE
            else
                key = event.which;     //firefox
            if (key == 13) {
                $("#TitleInput").blur()
                Steps.AddStep(CurrentEditedStep);
                return false;
            }
            else
                return true;

        }

        Steps.DisableEnterKey = function(event) {
            var key;
            if (window.event)
                key = window.event.keyCode;     //IE
            else
                key = event.which;     //firefox
            if (key == 13) {
                return false;
            }
            else
                return true;
        }

        Steps.ClearField = function(Element) {
            var Input = $(Element);
            if (Input.val() == Input.attr("alt"))
                Input.val("");
        }
        Steps.CheckField = function(Element) {
            var Input = $(Element);
            if (Input.val() == "")
                Input.val(Input.attr("alt"));
        }


        Steps.CheckApproach = function() {
            // Checklist change approach
            // This function checks following szenarios on the checklist and set ok symbols to the list on the right
            // 1. Do checklist not have the template title or note and are there other steps
            // 2. Has the checklist at least one or more categories
            // 3. Has the checklist at least three or more tags
            if ($(".ChecklistTitleTextBox").val() != $(".ChecklistTitleTextBox").attr("alt"))
                ChecklistCreated = true;
            if ($(".ChecklistNotesTextBox").val() != $(".ChecklistNotesTextBox").attr("alt"))
                ChecklistCreated = true;

            // Check categories
            if ($("#CategoryContainer").text() != "")
                ChecklistCategorized = true;
            else
                ChecklistCategorized = false;

            // check tags
            var Tagstring = $(".TagsChangeTextbox").val();
            if (Tagstring != GetLocalizedText("WriteTags")) {
                if (Tagstring.split(' ').length > 2)
                    ChecklistTagged = true;
                else
                    ChecklistTagged = false;
            } else {
                ChecklistTagged = false;
            }


            // show hide ok
            if ($(".DraftStatus:first").css("display") != "none") {
                $("#ddlStatus").val("draft");
                Checklist.ChecklistStatusChange();
            } else if ($(".DeletedStatus:first").css("display") != "none") {
                $("#ddlStatus").val("deleted");
                Checklist.ChecklistStatusChange();
            } else {
                $("#ddlStatus").val("normal");
                if (!$("#create_process_status").hasClass("StatusProcessOK"))
                    $("#create_process_status").addClass("StatusProcessOK");
            }


            // Checklist created
            if (ChecklistCreated)
                $("#create_process_make").addClass("CreateProcessOK");
            else
                $("#create_process_make").removeClass("CreateProcessOK");
            // Checklist categorized
            if (ChecklistCategorized)
                $("#create_process_category").addClass("CategorizeProcessOK");
            else
                $("#create_process_category").removeClass("CategorizeProcessOK");
            // Checklist tagged
            if (ChecklistTagged)
                $("#create_process_tag").addClass("TaggedProcessOK");
            else
                $("#create_process_tag").removeClass("TaggedProcessOK");

        }

        SwissChecklist.ChecklistController.CancelEditMode = function(URL) {
            document.location = URL;
        }

        Steps.CheckChecklistSteps = function() {
            if ($(".SCL_Step").length <= 1) {
                $("#Step_NewStep").css("display", "");
            }
        }

        SwissChecklist.ChecklistController.HideSavedStatus = function() {
            $(".AdditionalSaveAjaxOk").css("display", "none");
        }


        // Events
        /*if (IsChecklistInEditMode) {
            // Change current Viewmode to changemode
            Checklist.ChangeView("change");
            $("#actionslider_edit").slider('value', '1');

        }*/

        $(".delete_items").click(function() {
            Steps.TryToRemoveStep(Steps.GetStepObjectFromParentStep(this));
            return false;
        });

        $(".checklist_intro_changebutton").live("click", function() {
            Checklist.OpenChangeDescriptionForm();
            return false;
        });

        $(".SCL_ChangeDetails").live("click", function() {
            Steps.OpenChangeStepDescriptionForm();
            return false;
        });

        $(".checklist_template_empty, .checklist_template_exist").live("click", function() {
            $(".checklist_template_information_panel:first").toggle();
            return false;
        });


        //        $(".delete_allitems").click(function() {
        //            var Buttons = {};
        //            Buttons[GetLocalizedText("No")] = function() {
        //                $(this).dialog('close');
        //            };
        //            Buttons[GetLocalizedText("Yes")] = function() {
        //                $("#ChecklistContainer .SCL_Step").not("#Step_0").each(function() {
        //                    var StepObject = $(this);
        //                    if (Steps.IsStepInEditMode(StepObject))
        //                        Steps.ChangeStepToViewMode(StepObject);
        //                    Steps.MarkStepAsChanged(StepObject, true);
        //                    Steps.RemoveAddStepButtons();

        //                    Steps.ResetStepRollover(StepObject);
        //                    Steps.ResetButtons(StepObject);

        //                    StepObject.remove();
        //                    Steps.CheckChecklistSteps();
        //                    UserMayLeave = false;
        //                });
        //                $(this).dialog('close');
        //            };


        //            $("<span>", {
        //                text: GetLocalizedText("ConfirmDeleteStep")
        //            }).dialog({
        //                title: GetLocalizedText("DeleteStep"),
        //                resizable: false,
        //                height: 140,
        //                modal: true,
        //                buttons: Buttons
        //            });
        //        });

        $("#TitleInput").keypress(function(event) {
            return Steps.CheckKeyAndInsertNewStep(event);
        }).focus(function() {
            $('.EditorButtons:last').css('display', 'none'); $('#TitleButtons').css('display', 'block');
        });

        $(".ChecklistTitle.ChecklistInput").focus(function() {
            SwissChecklist.ChecklistController.HideSavedStatus();
            Steps.ClearField(this);
            $('.EditorButtons:first').css('display', 'none');
        }).blur(function() {
            Steps.CheckField(this);
        }).keypress(function(event) {
            return Steps.DisableEnterKey(event);
        });

        $(".ChecklistNotesTextBox.ChecklistInput").focus(function() {
            SwissChecklist.ChecklistController.HideSavedStatus();
            Steps.ClearField(this);
            $('.EditorButtons:first').css('display', 'block');
        }).blur(function() {
            Steps.CheckField(this);
        });

        $(".NewChecklistTitleBox.ChecklistInput").focus(function() {
            Steps.ClearField(this);
        }).blur(function() {
            Steps.CheckField(this);
        }).keyup(function(e) {
            if ($(".NewChecklistTitleBox").css("border-color") == "#ff0000") {
                $(".NewChecklistTitleBox").css("border-color", "#999999");
            }

            if (SwissChecklist.ChecklistController.NewChecklist.URLTextBoxCanChange) {
                SwissChecklist.ChecklistController.NewChecklist.ChecklistKey = SwissChecklist.ChecklistController.NewChecklist.GetEncodedURLString($(".NewChecklistTitleBox").val());
                SwissChecklist.ChecklistController.NewChecklist.UpdateURL();
            }

            //Check enter press
            if (e.which == 13) {
                NewChecklist.GoToChecklist();
                return false;
            }
            return true;
        });

        $(".TagsChangeTextbox.ChecklistInput").focus(function() {
            Steps.ClearField(this);
        }).blur(function() {
            Steps.CheckApproach();
            Steps.CheckField(this);
        });

        $(".ButtonTitle").click(function() {
            Steps.ConvertToTitle(Steps.GetStepObjectFromParentStep(this));
            return false;
        });

        $(".ButtonTask").click(function() {
            Steps.ConvertToTask(Steps.GetStepObjectFromParentStep(this)); 
            return false;
        });

        $(".ButtonInfo").click(function() {
            Steps.ConvertToInfo(Steps.GetStepObjectFromParentStep(this));
            return false;
        });

        $("#pnlUserChecklistTitle").attr("alt", $("#pnlUserChecklistTitle").text());
        if ($("#pnlUserChecklistTitle").attr("alt") == "...") {
            $("#pnlUserChecklistTitle").css("background-color", "#7E93E6");
        }
    }
});



var ChecklistURLInvalidSigns = new Array();
ChecklistURLInvalidSigns.push(new Array("\[", "(", "["));
ChecklistURLInvalidSigns.push(new Array("\]", ")", "]"));
ChecklistURLInvalidSigns.push(new Array("\{", "(", "{"));
ChecklistURLInvalidSigns.push(new Array("\}", ")", "}"));
ChecklistURLInvalidSigns.push(new Array("\<", "(", "<"));
ChecklistURLInvalidSigns.push(new Array("\>", ")", ">"));
ChecklistURLInvalidSigns.push(new Array("\%", "%25", "%"));
ChecklistURLInvalidSigns.push(new Array("\#", "", "#"));
ChecklistURLInvalidSigns.push(new Array("\?", "", "?"));
ChecklistURLInvalidSigns.push(new Array("\|", "", "|"));
ChecklistURLInvalidSigns.push(new Array("\"", "", "\""));
ChecklistURLInvalidSigns.push(new Array("\'", "", "\'"));
ChecklistURLInvalidSigns.push(new Array("\/{2,}", "/", "//"));
ChecklistURLInvalidSigns.push(new Array("\:", "", ":"));

function GetEncodedURLString(NonEncodedString) {
    //Replacing
    // Space
    NonEncodedString = NonEncodedString.replace(/\s+/g, "_");
    NonEncodedString = NonEncodedString.replace(/\_+/g, "_");
    NonEncodedString = trim(NonEncodedString)


    // Check the string
    var StringContainsNoInvalidElements = true;
    var InvalidSignsString = "";
    for (var i = 0; i < ChecklistURLInvalidSigns.length; i++) {
        if (NonEncodedString.search(new RegExp("\\" + ChecklistURLInvalidSigns[i][0], "g")) != -1) {
            InvalidSignsString += " " + ChecklistURLInvalidSigns[i][2] + ",";
            NonEncodedString = NonEncodedString.replace(new RegExp("\\" + ChecklistURLInvalidSigns[i][0], "g"), ChecklistURLInvalidSigns[i][1]);
            StringContainsNoInvalidElements = false;
        }
    }

    if (InvalidSignsString.length > 0)
        InvalidSignsString = InvalidSignsString.substring(0, InvalidSignsString.length - 1);

    $("#InvalidSigns").text(InvalidSignsString);

    if (!StringContainsNoInvalidElements)
        $("#NewChecklistErrorContainer").css("display", "block");
    else
        $("#NewChecklistErrorContainer").css("display", "none");

    // Namespace
    //    var Namespace = $("#NewChecklistNamespace").text();
    //    if (Namespace != "" && Namespace != " ")
    //        Namespace = Namespace + "//";

    return NonEncodedString;
}

function trim(String) {
    return $.trim(String);
}


function EscapeWikiString(WikiString) {
    if (!WikiString)
        WikiString = "";
    var RegExpr = new RegExp("'", "g");
    WikiString = WikiString.replace(RegExpr, "&apos;");

    return WikiString;
}

function UnEscapeWikiString(WikiString) {

    var RegExpr = new RegExp("&apos;", "g");
    WikiString = WikiString.replace(RegExpr, "'");



    return WikiString;
}





/* SwissChecklist
*  Viewmodes
*  2010-03-10 2dk
*  Requires: jQuery 1.4.2
*/



with (SwissChecklist.ChecklistController) {
    // Checklist Checkbox enable and disable
    Checklist.EnableCheckboxes = function() {
        // Enable Checkboxes
        /*$(".SCL_Step").each(function() {
            $("input:checkbox", $(this)).enable();
        });*/

        // Add click on steps
        // 2dk  2010-02-01:  Removed click on the whole LI element, because of the 
        // forms extension
        /*$(".SCL_StepLine :checkbox, .SCL_StepLine a, .SCL_StepLine p").live('click', function(e) {
            if ($(e.target).is("img") != true && $(e.target).is("input") != true) {
                if (ChecklistHasChange) ChecklistHasChange();
                SwissChecklist.ChecklistController.ForbidUserToLeave();
                var Checkbox = $("input:checkbox:first", $(this).parent());
                if (Checkbox.attr("checked") != false)
                    Checkbox.removeAttr("checked");
                else
                    Checkbox.attr("checked", "checked");
            }


        });*/
    }
    Checklist.DisableCheckboxes = function() {
        // Disable Checkboxes
//        $(".SCL_Step").each(function() {
//            $("input:checkbox", $(this)).not(".ext_viewforms_wrapper").disable();
//        });

        // Add click on steps
        // 2dk  2010-02-01:  Removed click on the whole LI element, because of the 
        // forms extension
        //$(".SCL_StepLine :checkbox, .SCL_StepLine a, .SCL_StepLine p").die('click');
    }


    Checklist.CreateView = function(Name, Initialize, Dispose) {
        var NewView = {
            Name: Name,
            Initialize: Initialize,
            Dispose: Dispose
        }
        return NewView;
    }

    // Viewmode to use the checklist
    Checklist.ViewModes["use"] = Checklist.CreateView("use", function() {
        $(".task_title:first, .checklist_template:first").show();
        $(".checklist_title:first").addClass("checklist_title_change");
        $(".ChecklistTitle:first").hide();
        // Enable SubChecklists
        SubChecklistsMayBeShowed = true;

        Checklist.EnableCheckboxes();
        $(".SCL_MouseoverButtons").show();

        // Init PostIts
        Steps.InitPostIt();
        /*$(".SCL_StepLine p").click(function(e) {
            // Fix bug for click on p element inside step
            return false;
        });*/

        $(".SCL_Step").not(".SCL_ChecklistCompleteTask").each(function(i) {
            Steps.InitStepClickUse($(this), false);
        });

        $(".ChecklistAdditionals").show();

        $("#TaskNotesWysiwyg").wysiwyg('grow');
        $("body").unbind("click");
        $("body").click(function(event) {
            if ($(event.target).parents(".checklist_template_information_panel").size() == 0)
            {
                $(".checklist_template_information_panel:first").hide();
            }
        });
        $("#slideoptions p").removeClass("slideactive");
        $("#slideoptions p:eq(1)").addClass("slideactive");
        $("#ChecklistManagement_Share").show();
        $(".ChecklistSaveAndCompleteButton").show();
        $(".TemplateSaveAndCompleteButton").show();
    }, function() {
        
        Checklist.DisableCheckboxes();
        $(".SCL_MouseoverButtons").hide();

        // Dispose PostIts
        Steps.DisposePostIt();
        $(".SCL_StepLine p").unbind("click");

        
        $(".ChecklistAdditionals").hide();
        $("body").unbind("click");

        $(".SCL_Step").not(".SCL_ChecklistCompleteTask").each(function(i) {
            Steps.RemoveStepClickUse($(this));
        });
        
        $("#ChecklistManagement_Share").hide();
        
        $(".ChecklistSaveAndCompleteButton").hide();
        $(".TemplateSaveAndCompleteButton").hide();
    });

    // Viewmode to change the Checklist
    Checklist.ViewModes["change"] = Checklist.CreateView("change", function() {
        $(".task_title:first, .checklist_template:first").show();
        $(".checklist_title:first").addClass("checklist_title_change");
        $(".ChecklistTitle:first").hide();
        $(".SCL_MouseoverButtons").show();
        // Give ChecklistContainer a class
        $("#ChecklistContainer").addClass("ViewMode_Change");
        // Disable SubChecklists
        Checklist.HideAllSubChecklists();
        SubChecklistsMayBeShowed = false;
        // Init steps
        $(".SCL_Step").not(".SCL_ChecklistCompleteTask").each(function(i) {
            Steps.InitStepRollover($(this));
            Steps.InitStepClick($(this));
            // Add Checklist Change
            $(this).click(function() {
                if (ChecklistHasChange)
                    ChecklistHasChange();
            });
        });

        // Show "new Step"
        //$("#Step_NewStep").show();

        $(".checklist_intro_changebutton").show();
        

        // Step close on stepoutsideclick
        $("body").unbind("click");
        $("body").click(function(event) {
            if ($(event.target).parents("#Checklist").size() == 0 
                && $(event.target).parents("#EditButtonsContent").size() == 0 
                && $(event.target).parents("#fancybox-overlay").size() == 0 
                && $(event.target).parents("#fancybox-wrap").size() == 0 
                && $(event.target).attr("id") != "fancybox-overlay"
                && $(event.target).attr("class") != "editicon") {
                if (CurrentEditedStep != null) {
                    Steps.ToggleStepMode(CurrentEditedStep);
                }
            }

            if ($(event.target).parents(".checklist_template_information_panel").size() == 0)
            {
                $(".checklist_template_information_panel:first").hide();
            }
        });


        
        Steps.InitChangeIcon();
        
        $("#slideoptions p").removeClass("slideactive");
        $("#slideoptions p:eq(2)").addClass("slideactive");

        // Disable Template deleting
        $("#Tab_Template").hide();
        $("#ChecklistManagement ul li:eq(1)").hide();

        SwissChecklist.ChecklistController.Steps.CheckChecklistSteps();
    }, function() {
        $("#Step_NewStep").hide();
        $(".SCL_MouseoverButtons").hide();
        
        $(".checklist_intro_changebutton").hide();
        // Remove indicator class from ChecklistContianer
        $("#ChecklistContainer").removeClass("ViewMode_Change");

        // Dispose step clicks
        $(".SCL_Step").not(".SCL_ChecklistCompleteTask").each(function(i) {
            Steps.ResetStepRollover($(this));
            $(this).unbind('click');
        });

        // Close Step edit mode if required
        if (CurrentEditedStep != null)
            Steps.ToggleStepMode(CurrentEditedStep);

        // Hide "new Step"
        //$("#Step_NewStep").hide();

        // Remove new Step Click

        $("body").unbind("click");
        $("body").click(function(event) {
            if ($(event.target).parents(".checklist_template_information_panel").size() == 0)
            {
                $(".checklist_template_information_panel:first").hide();
            }
        });
        
        Steps.DisposeChangeIcon();
        Steps.RemoveAddStepButtons();
    });

    Checklist.ViewModes["sort"] = Checklist.CreateView("sort", function() {
        $(".task_title:first, .checklist_template:first").show();
        $(".checklist_title:first").addClass("checklist_title_change");
        $(".ChecklistTitle:first").hide();
        $(".SCL_MouseoverButtons").show();
        // Give ChecklistContainer a class
        $("#ChecklistContainer").addClass("ViewMode_Sort");
        // Disable SubChecklists
        Checklist.HideAllSubChecklists();
        SubChecklistsMayBeShowed = false;
        // Remove and add sorting to Divs
        $("#Checklist").sortable('destroy');
        $("#Checklist").sortable({
            placeholder: "ChecklistSortPlaceholder",
            //handle: $(".SortPanel"),
            zIndex: 2000,
            axis: 'y',
            sort: function(event, ui) { },
            start: function(event, ui) {
                $(ui.placeholder).height($(ui.item).height());
                $(ui.item).addClass("Dragger");
                Steps.MarkStepAsChanged(ui.item, true);
                SwissChecklist.ChecklistController.ForbidUserToLeave();
            },
            stop: function(event, ui) {
                $(ui.item).removeClass("Dragger");
                $(".AdditionalSaveAjaxOk").css("display", "none");
                if (ChecklistHasChange) ChecklistHasChange();

                Steps.MarkStepAsChanged(ui.item, true);
            }
        });
        
        $("#slideoptions p").removeClass("slideactive");
        $("#slideoptions p:eq(3)").addClass("slideactive");
        
        // Disable Template deleting
        $("#Tab_Template").hide();
        $("#ChecklistManagement ul li:eq(1)").hide();
    }, function() {
        $(".SCL_MouseoverButtons").hide();
        // Remove indicator class from ChecklistContianer
        $("#ChecklistContainer").removeClass("ViewMode_Sort");

        // Remove sortable functions
        $("#Checklist").sortable('destroy');
    });

    Checklist.ViewModes["preview"] = Checklist.CreateView("preview", function() {
        if ($("#txtTaskTitle:first").val() == $("#txtTaskTitle:first").attr("scl:defaultvalue") 
        && $(".jq_datepicker:first").val() == ""
        && $.trim($(".UserChecklistID:first").text()) == "0") {
            $(".task_title:first, .checklist_template:first").hide();
            $(".checklist_title:first").removeClass("checklist_title_change");
            $(".ChecklistTitle:first").show();
        } else {
            $(".task_title:first, .checklist_template:first").show();
            $(".checklist_title:first").addClass("checklist_title_change");
            $(".ChecklistTitle:first").hide();
        }
        if($.trim($("#TaskNotesWysiwyg:first").text()) == $("#TaskNotesWysiwyg:first").attr("scl:defaultvalue"))
            $(".TaskNotes:first").hide();

        $(".SCL_Step").not(".SCL_ChecklistCompleteTask").each(function(i) {
            Steps.InitStepClickUse($(this), true);
        });
        

        $("#TaskNotesWysiwyg").wysiwyg('grow');
        $(".ChecklistNotes:first").show();
        $("body").unbind("click");
        $("body").click(function(event) {
            if ($(event.target).parents(".checklist_template_information_panel").size() == 0)
            {
                $(".checklist_template_information_panel:first").hide();
            }
        });
        
        $("#slideoptions p").removeClass("slideactive");
        $("#slideoptions p:eq(0)").addClass("slideactive");
        $("#ChecklistManagement_Print").show();
        
        $("#ChecklistManagement_Save").hide();
        $("#ChecklistManagement_Share").hide();

    }, function() {
        $(".task_title:first, .checklist_template:first").show();
        $(".checklist_title:first").addClass("checklist_title_change");
        $(".ChecklistTitle:first").hide();
        $(".TaskNotes:first").show();
        $(".ChecklistNotes:first").hide();
        $("body").unbind("click");
        $(".SCL_Step").not(".SCL_ChecklistCompleteTask").each(function(i) {
            Steps.RemoveStepClickUse($(this));
        });
        
        
        $("#ChecklistManagement_Print").hide();
        
        $("#ChecklistManagement_Save").show();

        
    });
}



// ### JSON2.js
eval(function (p, a, c, k, e, d) { e = function (c) { return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; if (!''.replace(/^/, String)) { while (c--) { d[e(c)] = k[c] || e(c) } k = [function (e) { return d[e] } ]; e = function () { return '\\w+' }; c = 1 }; while (c--) { if (k[c]) { p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]) } } return p } ('3(!o.p){p={}}(5(){5 f(n){7 n<10?\'0\'+n:n}3(6 1b.z.q!==\'5\'){1b.z.q=5(h){7 o.1C()+\'-\'+f(o.1T()+1)+\'-\'+f(o.1O())+\'T\'+f(o.1D())+\':\'+f(o.1M())+\':\'+f(o.1Q())+\'Z\'};X.z.q=1K.z.q=1I.z.q=5(h){7 o.1V()}}y L=/[\\1W\\13\\1o-\\1l\\1m\\1i\\1n\\1s-\\1p\\1j-\\15\\17-\\14\\18\\1f-\\19]/g,M=/[\\\\\\"\\1B-\\1z\\1w-\\1y\\13\\1o-\\1l\\1m\\1i\\1n\\1s-\\1p\\1j-\\15\\17-\\14\\18\\1f-\\19]/g,8,H,1e={\'\\b\':\'\\\\b\',\'\\t\':\'\\\\t\',\'\\n\':\'\\\\n\',\'\\f\':\'\\\\f\',\'\\r\':\'\\\\r\',\'"\':\'\\\\"\',\'\\\\\':\'\\\\\\\\\'},l;5 N(m){M.1h=0;7 M.11(m)?\'"\'+m.C(M,5(a){y c=1e[a];7 6 c===\'m\'?c:\'\\\\u\'+(\'1k\'+a.1r(0).12(16)).1g(-4)})+\'"\':\'"\'+m+\'"\'}5 E(h,w){y i,k,v,e,K=8,9,2=w[h];3(2&&6 2===\'x\'&&6 2.q===\'5\'){2=2.q(h)}3(6 l===\'5\'){2=l.P(w,h,2)}1u(6 2){J\'m\':7 N(2);J\'S\':7 1v(2)?X(2):\'D\';J\'1x\':J\'D\':7 X(2);J\'x\':3(!2){7\'D\'}8+=H;9=[];3(Q.z.12.1S(2)===\'[x 1R]\'){e=2.e;G(i=0;i<e;i+=1){9[i]=E(i,2)||\'D\'}v=9.e===0?\'[]\':8?\'[\\n\'+8+9.O(\',\\n\'+8)+\'\\n\'+K+\']\':\'[\'+9.O(\',\')+\']\';8=K;7 v}3(l&&6 l===\'x\'){e=l.e;G(i=0;i<e;i+=1){k=l[i];3(6 k===\'m\'){v=E(k,2);3(v){9.1c(N(k)+(8?\': \':\':\')+v)}}}}R{G(k 1t 2){3(Q.1q.P(2,k)){v=E(k,2);3(v){9.1c(N(k)+(8?\': \':\':\')+v)}}}}v=9.e===0?\'{}\':8?\'{\\n\'+8+9.O(\',\\n\'+8)+\'\\n\'+K+\'}\':\'{\'+9.O(\',\')+\'}\';8=K;7 v}}3(6 p.W!==\'5\'){p.W=5(2,A,I){y i;8=\'\';H=\'\';3(6 I===\'S\'){G(i=0;i<I;i+=1){H+=\' \'}}R 3(6 I===\'m\'){H=I}l=A;3(A&&6 A!==\'5\'&&(6 A!==\'x\'||6 A.e!==\'S\')){1a 1d 1E(\'p.W\')}7 E(\'\',{\'\':2})}}3(6 p.Y!==\'5\'){p.Y=5(B,U){y j;5 V(w,h){y k,v,2=w[h];3(2&&6 2===\'x\'){G(k 1t 2){3(Q.1q.P(2,k)){v=V(2,k);3(v!==1L){2[k]=v}R{1J 2[k]}}}}7 U.P(w,h,2)}L.1h=0;3(L.11(B)){B=B.C(L,5(a){7\'\\\\u\'+(\'1k\'+a.1r(0).12(16)).1g(-4)})}3(/^[\\],:{}\\s]*$/.11(B.C(/\\\\(?:["\\\\\\/1G]|u[0-1X-1U-F]{4})/g,\'@\').C(/"[^"\\\\\\n\\r]*"|1A|1P|D|-?\\d+(?:\\.\\d*)?(?:[1N][+\\-]?\\d+)?/g,\']\').C(/(?:^|:|,)(?:\\s*\\[)+/g,\'\'))){j=1F(\'(\'+B+\')\');7 6 U===\'5\'?V({\'\':j},\'\'):j}1a 1d 1H(\'p.Y\')}}})();', 62, 122, '||value|if||function|typeof|return|gap|partial|||||length|||key||||rep|string||this|JSON|toJSON||||||holder|object|var|prototype|replacer|text|replace|null|str||for|indent|space|case|mind|cx|escapable|quote|join|call|Object|else|number||reviver|walk|stringify|String|parse|||test|toString|u00ad|u206f|u202f||u2060|ufeff|uffff|throw|Date|push|new|meta|ufff0|slice|lastIndex|u17b4|u2028|0000|u0604|u070f|u17b5|u0600|u200f|hasOwnProperty|charCodeAt|u200c|in|switch|isFinite|x7f|boolean|x9f|x1f|true|x00|getUTCFullYear|getUTCHours|Error|eval|bfnrt|SyntaxError|Boolean|delete|Number|undefined|getUTCMinutes|eE|getUTCDate|false|getUTCSeconds|Array|apply|getUTCMonth|fA|valueOf|u0000|9a'.split('|'), 0, {}))


// ### SwissChecklist.Search.js
$(function() {
    var xhr = null;
    var searchdivgap = $("#searchcontainer").height() - $("#SearchColumn").height();
    $("#searchresultscontainer").css("padding-bottom", searchdivgap + "px");
    $("#expandfilter").click(function() {
        // Expand the Filters 
        $(".hiddenlist").slideToggle("fast");
        ToggleText();
    });

    // select the filters according to the querystring values!
    AppendQueryStringValues();

    // Autosuggest
    $(".SearchInputBox").keyup(function(e) {
        //if (e.keyCode == 97)

        var SuggestList = $("ul#TagSuggestions");

        // Allow selecting Results with up/down keys
        if (e.keyCode == 38 || e.keyCode == 40) {
            var CurrentSelection = $("li.active", SuggestList).index();
            if ($("li", SuggestList).size() == 0)
                CurrentSelection = -1;

            switch (e.keyCode) {
                case 38:
                    if (CurrentSelection > 0)
                        CurrentSelection--;
                    break;
                case 40:
                    if (CurrentSelection != $("li", SuggestList).size() - 1) {
                        CurrentSelection++;
                    }
                    break;
            }
            $("li", SuggestList).removeClass("active");
            $("li", SuggestList).eq(CurrentSelection).addClass("active");
        }
        // var SuggestList = $("#TagSuggestions");
        if (!$.browser.msie && (this.selectionStart != $(this).val().length))
            return false;

        if ((e.keyCode > 47 && e.keyCode < 90) || e.keyCode == 8) {
            if (xhr != null)
                xhr.abort();
            var TagInput = $(this);
            var Tags = TagInput.val().split(' ');
            var CurrentTag = Tags[Tags.length - 1];
            if (CurrentTag != null && CurrentTag != "") {
                Tags.pop();
                var DTO = {
                    TagStart: CurrentTag,
                    Language: SwissChecklist.Culture,
                    ParentTags: Tags,
                    Namespace: GetSelectedNamespace()
                };
                /*
                xhr = $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "/SwissChecklist/SwissChecklistServices.asmx/GetTagSuggestions",
                data: JSON.stringify(DTO),
                dataType: "json",
                success: function(msg) {
                SuggestList.empty();
                if (msg != null && msg.d != null) {
                var Results = msg.d.Values;
                if (Results.length > 0) {
                for (var i = 0; i < Results.length; i++) {
                var ListItem = $("<li>", {
                text: Results[i].Value,
                title: Results[i].Value,
                click: function() {
                var JoinedTags = Tags.join(" ");
                var NewTextBoxValue = (JoinedTags != "" ? JoinedTags + " " : "") + $(this).attr("title");
                var url = GetSearchUrl(NewTextBoxValue);
                window.location = url;
                }
                });
                SuggestList.append(ListItem).show();
                }
                }
                else {
                SuggestList.hide();
                }
                }
                $(".searchinputwrapper").append(SuggestList);
                },
                error: function() {
                $("#TagSuggestions").empty();
                // If it fails, unbind keyup event to prevent creating errors on the page and do unneeded requests
                TagInput.unbind("keyup");
                }
                });
                */
            }
            else if (e.keyCode == 27) {
                SuggestList.empty();
            }
        }
    }).focus(function() {
        if ($("#TagSuggestions li").size() > 0)
            $("#TagSuggestions").show();
    }).keypress(function(e) {
        if (e.keyCode == 13) {
            // When user hits enter key
            var value = RemoveDisabledChars(this.value);
            if ($("#TagSuggestions .active").size() > 0) {
                var splitted = value.split(' ');
                if (splitted.length == 1)
                    value = $.trim($("#TagSuggestions .active").text());
                else {
                    splitted.pop();
                    value = splitted.join(' ') + " ";
                    value = value + $.trim($("#TagSuggestions .active").text());
                }
            }
            window.location = GetSearchUrl(value);
            return false;
        } else 
        {
            if ($.browser.msie)
            { 
                if (IsValueInArray(e.keyCode == 0 ? e.charCode : e.keyCode, DisabledSearchCharCodes)) {
                    // If user hits a disabled char
                    $("#SearchDisabledChars").show();
                    return false;
                }
            } else {
                if (IsValueInArray(e.keyCode == 0 ? e.charCode : e.keyCode, DisabledSearchCharCodes) && e.keyCode != 37) {
                    // If user hits a disabled char
                    $("#SearchDisabledChars").show();
                    return false;
                }
            }
        }
    });

    $(document).bind("click", function(e) {
        var relatedobj = e.srcElement || e.target;
        if ($(relatedobj).closest("#searchinputcontainer").find("#TagSuggestions").size() === 0)
            $("#TagSuggestions").hide();
    });

    $(".logreq").click(function() {
        // TODO: Do something nice for unregistered/guest users
        $("<div>", {
            text: GetLocalizedText("NotLoggedInText")
        }).dialog({
            title: GetLocalizedText("NotLoggedIn"),
            resizable: false,
            draggable: false,
            modal: true
        });
        return false;
    });

    $(".SearchInputButton").click(function() {
        var Value = RemoveDisabledChars($(".SearchInputBox").val());
        window.location = GetSearchUrl(Value);
    });

});
// Disable following characters: /%&?:
var DisabledSearchCharCodes = new Array(47, 37, 38, 63, 58, 40, 41, 91, 93);

function RemoveDisabledChars(InputValue) {
    return InputValue.replace(/([/%&?:\(\)\[\]])/g, " ");
}   

function IsValueInArray(Value, Array) {
    for (var i = 0; i < Array.length; i++) {
        if (Array[i] == Value)
            return true;
    }
    return false;
}

function GetSelectedNamespace() {
    var ns = $("a.FilterItemSelected", ".ns").attr("lib");
    if (typeof (ns) == "undefined")
        return "";
    return ns;
}

function getQuerystring(key, default_) {
    if (default_ == null) default_ = "";
    key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regex = new RegExp("[\\?&]" + key + "=([^&#]*)");
    var qs = regex.exec(window.location.href);
    if (qs == null)
        return default_;
    else
        return qs[1];
}
function getQuerystringFromUrl(key, url, default_) {
    if (default_ == null) default_ = "";
    key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regex = new RegExp("[\\?&]" + key + "=([^&#]*)");
    var qs = regex.exec(url);
    if (qs == null)
        return default_;
    else
        return qs[1];
}
function ToggleOptions() {
    $(".hiddenlist").toggle();
    ToggleText();
}
function ToggleText() {
    var a = $("#expandfilter");
    setTimeout(function() {
        if (a.hasClass("ArrowDown")) {
            a.removeClass("ArrowDown").addClass("ArrowUp");
        }
        else {
            a.removeClass("ArrowUp").addClass("ArrowDown");
        }
        $("span", a).toggle();
    }, 100);
}

function GetSearchUrl(Keyword) {
    var ns = $(".FilterItemSelected", ".ns").attr("lib");
    if (typeof (ns) == "undefined")
        ns = "all";

    var Language = SwissChecklist.UICulture;
    if (window.location.href.indexOf("/**/") != -1)
        Language = "**";

    var url = "http://" + window.location.host + "/" + Language + "/Search/";
    if (ns != "" && ns != "all")
        url = url + ns + ":" + Keyword;
    else
        url = url + Keyword;
    var st = $.trim($("#SearchSubject").text()).replace("scl:", "");
    if (st != "")
        url = url + " scl:" + st;
    return url;
}

function AppendQueryStringValues() {
    var url = $("#Form").attr("action");
    $("#lang_" + SwissChecklist.UICulture).addClass("FilterItemSelected");
    var ns = $("#txtSearchNamespace").val();// getQuerystringFromUrl("ns", url, "").toLocaleLowerCase();
    var toggled = false;
    if (ns == "" || ns == "all")
        ns = "all";
    else {
        ToggleOptions();
        toggled = true;
    }
    $("a[lib='" + ns + "']", ".ns").addClass("FilterItemSelected");
    var st = $.trim($("#SearchSubject").text()).replace("scl:", "");
    if (st == "" || st == "all")
        st = "all";
    else if (!toggled)
        ToggleOptions();
    $("a[tag='" + st + "']", ".st").addClass("FilterItemSelected");
}
