text:
/*
 * GLOBAL VARIABLES
 */

// these should match with the bootrstrap defined widths
window.xs_screen_max = 768;
window.sm_screen_max = 992;

/*
 * ================================================================
 * VIEWPORT
 *
 * get actual window width/height (to match with css media queries)
 */
function viewport() {
    var e = window, a = 'inner';
    if (!('innerWidth' in window )) {
        a = 'client';
        e = document.documentElement || document.body;
    }
    return { width : e[ a+'Width' ] , height : e[ a+'Height' ] };
}

/*
 * ================================================================
 * MAIN MENU - horizontal menu
 *
 * functionality / hover effects of horizontal menu & submenus
 */
function initialise_main_menu_horizontal_functionality()
{
    var main_menu_ul = $("#main-menu");

    // if main menu hor functionality has not been initialised yet, initialise functionality
    if (!main_menu_ul.hasClass("main_menu_horizontal_functionality"))
    {
        main_menu_ul.addClass("main_menu_horizontal_functionality").removeClass("main_menu_mobile_functionality");

        // reset styling
        $("#main-menu li.menu-item").removeClass("active");
        $("#main-menu li.menu-item .sub-menu:visible").hide();
        $("#main-menu").show();

        // reset scripts
        $("#main-menu li.menu-item > a").off();

        // level 0
        $("#main-menu > li.menu-item").hover(
          function()
          {
            $(this).addClass("active");
            $(this).children(".sub-menu").fadeIn();
          },
          function()
          {
            $(this).removeClass("active");
            $(this).children(".sub-menu").fadeOut("fast");
          }
        );

        // submenus
        $("#main-menu li.menu-item .sub-menu").hover(
          function()
          {
            var page_width = viewport().width;
            $(this).show();
            $(this).parent(".menu-item").addClass("active");

            // submenu menu items
            $(this).children(".menu-item").hover(
                function()
                {
                    var left_offset = $(this).offset().left + $(this).width() + $(this).width();
                    if (left_offset > page_width)
                    {
                        $(this).children(".sub-menu").removeClass("menu_on_the_right").addClass("menu_on_the_left");
                    }
                    else
                    {
                        $(this).children(".sub-menu").removeClass("menu_on_the_left").addClass("menu_on_the_right");
                    }
                    $(this).addClass("active");
                    $(this).children(".sub-menu").fadeIn().css({ "z-index":"105" });
                    $(this).parents(".sub-menu").css({ "z-index":"100" });
                },
                function()
                {
                    $(this).removeClass("active");
                    $(this).children(".sub-menu").fadeOut("fast");
                }
            );
            // end: submenu menu items
          },
          function()
          {
              $(this).parent(".menu-item").hover(
                function()
                {
                  $(this).addClass("active");
                  $(this).children(".sub-menu").fadeIn();
                },
                function()
                {
                  $(this).removeClass("active");
                  $(this).children(".sub-menu").fadeOut("fast");
                }
              );
          }
        );
        // end: submenus

    }
    // END: if main menu hor functionality has not been initialised yet, initialise functionality
}

/*
 * ================================================================
 * MAIN MENU - TABLET VIEWPORT FIX - opening submenus in main menu
 *
 * when on tablet viewport, when a user clicks on a main menu item which has a submenu which is hidden,
 * prevent click default action to link, and instead open submenu
 */
function initialise_tablet_mainmenu_submenu_fix()
{
    $("#main-menu li.menu-item > a").click(function(event)
    {
        // if on tablet viewport
        if ( jQuery.browser.mobile && viewport().width > window.xs_screen_max )
        {
            var menu_item_submenu = $(this).parent(".menu-item").find(".sub-menu");
            // if submenu exists and is hidden
            if (menu_item_submenu.length > 0 && !menu_item_submenu.hasClass("active"))
            {
                // stop default link action, in order for the submenu to appear
                event.preventDefault();
                return false;
            }
        }
        // end: if on tablet viewport
    });
}

/*
 * ================================================================
 * MAIN MENU - mobile menu
 *
 * functionality / hover effects of mobile menu * submenus
 */
function initialise_main_menu_mobile_functionality()
{
    var main_menu_ul = $("#main-menu");

    // if main menu mobile functionality has not been initialised yet, initialise functionality
    if (!main_menu_ul.hasClass("main_menu_mobile_functionality"))
    {
        main_menu_ul.addClass("main_menu_mobile_functionality").removeClass("main_menu_horizontal_functionality");

        // reset styles
        $("#main-menu li.menu-item").removeClass("active");
        $("#main-menu li.menu-item .sub-menu").hide();
        $("#main-menu").hide();
        $("#mobile-menu-icon").removeClass("active");
        $("#mobile-menu-icon span").removeClass("glyphicon-remove").addClass("glyphicon-th");

        // reset scripts
        $("#main-menu li.menu-item").off();
        $("#main-menu li.menu-item .sub-menu").off();
        $("#mobile-menu-icon").off();

        // on click of mobile menu icon
        $("#mobile-menu-icon").click(function(event)
        {
            // if submenu is visible, hide it
            if ($("#main-menu").is(':visible') && $(this).hasClass("active"))
            {
                $("#main-menu").slideUp("fast");
                $("#main-menu .sub-menu").slideUp("fast");
                $("#main-menu li.menu-item").removeClass("active")
                $(this).removeClass("active");
                $(this).removeClass("active").children("span").removeClass("glyphicon-remove").addClass("glyphicon-th");
                event.preventDefault();
                return false;
            }
            // if submenu is hidden, show it
            else
            {
                $(this).addClass("active").children("span").removeClass("glyphicon-th").addClass("glyphicon-remove");
                $("#main-menu").slideDown();
                event.preventDefault();
                return false;
            }
        });
        // end: on click of mobile menu icon

        // on click of menu item
        $("#main-menu li.menu-item > a").click(function(event)
        {
            var parent_menu_item = $(this).parent("li.menu-item");

            // if there is a submenu
            if (parent_menu_item.children(".sub-menu").length > 0)
            {
                // if submenu is visible
                if (parent_menu_item.children(".sub-menu").is(':visible'))
                {
                    // if link is empty, close submenus
                    if ($(this).attr("href") == "#")
                    {
                        parent_menu_item.find(".sub-menu:visible").slideUp("fast", function()
                        {
                            parent_menu_item.removeClass("active");
                            parent_menu_item.find(".sub-menu li.menu-item").removeClass("active");
                            event.preventDefault();
                            return false;
                        });
                        event.preventDefault();
                        return false;
                    }
                    // end: if link is empty, close submenu
                    else
                    {
                        // link href is not #, link acts normally
                    }
                }
                // end: if submenu is visible

                // if submenu is hidden, show it
                else
                {
                    parent_menu_item.children(".sub-menu").slideDown("", function()
                    {
                        parent_menu_item.addClass("active");
                        event.preventDefault();
                        return false;
                    });
                    event.preventDefault();
                    return false;
                }
                // end: if submenu is hidden, show it
            }
            // end: if there is a submenu

            // if there is NO submenu
            else {
                // link acts normally
            }
            // end: if there is NO submenu
        });
        // end: on click of menu item

    }
    // END: if main menu mobile functionality has not been initialised yet, initialise functionality
}

/*
 * ================================================================
 * SUBPAGE SUBMENU functionality
 *
 * functionality / hover effects of subpages sidebar submenus
 */
function initialise_submenu_functionality()
{
    // on click of menu item
    $(".sidebar-menu li.menu-item > a").click(function(event)
    {
        var parent_menu_item = $(this).parent("li.menu-item");

        // if there is a submenu
        if (parent_menu_item.children(".sub-menu").length > 0)
        {
            // if submenu is visible
            if (parent_menu_item.children(".sub-menu").is(':visible'))
            {
                // if link is empty, close submenus
                if ($(this).attr("href") == "#")
                {
                    parent_menu_item.find(".sub-menu:visible").slideUp("fast", function()
                    {
                        parent_menu_item.removeClass("active");
                        parent_menu_item.find(".sub-menu li.menu-item").removeClass("active");
                        event.preventDefault();
                        return false;
                    });
                    event.preventDefault();
                    return false;
                }
                // end: if link is empty, close submenu
                else
                {
                    // link href is not #, link acts normally
                }
            }
            // end: if submenu is visible

            // if submenu is hidden, show it
            else
            {
                parent_menu_item.children(".sub-menu").slideDown("", function()
                {
                    parent_menu_item.addClass("active");

                    // hide other open submenus
                    $(this).parent(".menu-item").siblings().find(".sub-menu:visible").slideUp("fast", function()
                    {
                        $(this).parent(".menu-item").removeClass("active");
                        event.preventDefault();
                        return false;
                    });

                    event.preventDefault();
                    return false;
                });

                event.preventDefault();
                return false;
            }
            // end: if submenu is hidden, show it
        }
        // end: if there is a submenu

        // if there is NO submenu
        else {
            // link acts normally
        }
        // end: if there is NO submenu
    });
}

/*
 * ================================================================
 * MAIN MENU - fixed at top of page
 *
 * when the user scrolls down the page, the main menu stays fixed at the top (and the logo hidden)
 * - for this function to work, the <header> needs to have the attribute: data-menu-fixed-at-top-on-scroll set to "true"
 *
 *
 * @param adjust_offset - if set to true, set the original top offset of the menu as an attribute, to calculate when the menu fixed action should switch on/off on scroll. This is set to true on page load and on window resize (when the menu top offset can change)
 */
function main_menu_fixed_at_top_on_scroll(adjust_offset)
{
    var header = $("header:first-of-type");
    if (header.length == 0) return false; // header has to exist for this function to work

    var fixed_at_top_attr = header.attr("data-menu-fixed-at-top-on-scroll");

    var main_menu_container = $("header #main-menu-container");
    if (main_menu_container.length == 0) return false; // main menu container has to exist as well for this function to work

    var scroll_from_top = $(document).scrollTop(); // current scroll top offset

    // check if original menu top offset and header original height were already set as attributes
    var original_menu_top_offset = header.attr("data-original-top-offset");
    var original_header_height = header.attr("data-original-header-height");
    // if top offset wasn't already calculated, or if function is set to adjust offset, first ensure that menu is not already fixed at top, calculate the offset, and set as an attribute
    if (original_menu_top_offset === undefined || isNaN(original_menu_top_offset)
        || original_header_height === undefined || isNaN(original_header_height)
        || adjust_offset == true)
    {
        header.removeClass("fixed-at-top");
        $(".outer-container").css({ "padding-top": "" });
        original_menu_top_offset = main_menu_container.offset().top;
        original_header_height = header.innerHeight();
        header.attr("data-original-top-offset", original_menu_top_offset);
        header.attr("data-original-header-height", original_header_height);
    }

    // if user scrolls down further than the menu, set the menu fixed at top
    if ( (fixed_at_top_attr == "true" && scroll_from_top > original_menu_top_offset) || viewport().width < window.xs_screen_max)
    {
        header.addClass("fixed-at-top");
        // add a padding to the outer container to compensate for the fixed header
        $(".outer-container").css({ "padding-top": original_header_height+"px" });

        // enable scroll functionality to mobile main menu (on small viewports only)
        if (viewport().width < window.xs_screen_max) { toggle_scroll_to_mobile_main_menu("enable"); }
        else { toggle_scroll_to_mobile_main_menu("disable"); }
    }
    // else: set the menu to default static position
    else
    {
        header.removeClass("fixed-at-top");

        // removepadding to the outer container since header is not fixed anymore
        $(".outer-container").css({ "padding-top": "" });

        // disable scroll functionality to mobile main menu
        toggle_scroll_to_mobile_main_menu("disable");
    }
}

/*
 * ================================================================
 * Add scroll functionality to mobile main menu
 *
 * @action - "enable" or "disable"
 */
function toggle_scroll_to_mobile_main_menu(action)
{
    var main_menu = $("#main-menu");

    // first reset (disable)
    main_menu.css({
        'overflow-y':'visible',
        'height':'auto'
    });

    if (action == "enable")
    {
        var scroll_position = $(document).scrollTop();
        var menu_top_offset = $("#main-menu").offset().top;
        var menu_fixed_top_offset = menu_top_offset - scroll_position;
        if (menu_fixed_top_offset < 0 || isNaN(menu_fixed_top_offset)) menu_fixed_top_offset = 60;
        var maximum_menu_height = viewport().height - (menu_fixed_top_offset + 10);

        main_menu.css({
            'overflow-y':'auto',
            'max-height':maximum_menu_height+'px'
        });
    }
}

/*
 * ================================================================
 * SET EQUAL HEIGHTS TO LIST ITEMS
 *
 * when there is a horizontal list of items, their heights may differ (because of different content).
 * This function find the largest height among the group, and set it as height of all these items.
 *
 * This function is called on window.load and page-resize and searches for all the list parent
 * containers with class ".equal-height". It adjust the item's .item-content height
 *
 * This function only applies to non-mobile viewports
 */
function set_equal_heights_to_list_items()
{
    var list_parents = $(".equal-height");

    // for each list
    list_parents.each(function()
    {
        var list_items = $(this).find(".item");

        // first reset each item's height
        list_items.each(function()
        {
            $(this).find(".item-content").css({ "height":"auto" });
        });

        // if on non-mobile viewport
        if (viewport().width > window.xs_screen_max)
        {
            // get each item's height, and store in array
            var item_heights = [];
            list_items.each(function()
            {
                item_heights.push($(this).find(".item-content").height());
            });
            var largest_height = Math.max.apply(Math, item_heights); // get largest height

            // set each item's height to the largest height
            list_items.each(function()
            {
                $(this).find(".item-content").height(largest_height);
            });
        }
    });
}

/*
 * ================================================================
 * SECTION COLUMNS - Set equal heights
 *
 * When "isolated-sections" are enabled, make sure that each column in a horizontal section have equal
 * heights. This is in order to ensure that each section's right divider border is of full height
 *
 */
function set_equal_heights_to_section_columns()
{
    var horizontal_sections = $(".horizontal-section-container");

    // first reset heights of each column
    horizontal_sections.each(function()
    {
        $(this).find(".row").first().children("*[class*='col-']").not("*[class*='-12']").css({ "min-height":"1px" });
    });

    // if isolated sections enabled, and non-mobile viewport
    if ($("body").hasClass("isolated-sections") && viewport().width > window.xs_screen_max)
    {
        // for each horizontal section
        horizontal_sections.each(function()
        {
            var columns = $(this).find(".row").first().children("*[class*='col-']").not("*[class*='-12']");

            // if there are more than one columns
            if (columns.length > 1)
            {
                // get each column's height, and store in array
                var column_heights = [];
                columns.each(function()
                {
                    column_heights.push($(this).height());
                });
                var largest_height = Math.max.apply(Math, column_heights); // get largest height

                // set each item's height to the largest height
                columns.each(function()
                {
                    //$(this).height(largest_height);
                    $(this).css({ "min-height":largest_height+"px" });
                });
            }
        });
    }
}

/*
 * ================================================================
 * GALLERY - Fade In Images
 *
 * If .gallery-grid has attribute "data-gallery-hidden-on-page-load" to "true", before all images are loaded, show a loader.
 * Once they are loaded, fade in images and fade out loader.
 *
 */
function fade_in_gallery_images()
{
    var galleries = $(".gallery-grid");

    galleries.each(function()
    {
        var gallery = $(this);

        // if fading is activated
        if (gallery.attr("data-gallery-hidden-on-page-load") == "true")
        {
            // fade out loader
            gallery.find(".gallery-loader").fadeOut("fast");

            // fade in images
            gallery.find(".gallery-item").animate({opacity: 1}, 1000);
        }
    });
}

/*
 * ================================================================
 * Add Clear Items to Container Rows
 *
 * Add <hr class="clearfix_item clearfix" /> after each row of a provided items container
 *
 * @param container - the container which has child items (.item)
 * @columns_per_row - the number of columns per row
 */
function add_clear_items_to_container_rows(container, columns_per_row)
{
    if (container === undefined || container.length == 0 || columns_per_row === undefined) return false;

    // check for container's child items
    var items = container.children(".item");
    if (items.length == 0) return false;

    // first remove all clearfixes
    container.find(".clearfix_item").remove();

    // add clearfixes after every n (no. of columns) items
    var n = columns_per_row;
    container.find(".item:nth-of-type("+n+"n+"+n+")").after('<hr class="clearfix_item clearfix" />')
}

/*
 * ================================================================
 * Go To Top Icon Visibility
 *
 * - icon is hidden at the top of the page, shown when scrolling further down
 */
function go_to_top_visibility()
{
    var go_to_top_icon = $("#go-to-top");

    // if icon exists
    if (go_to_top_icon.length > 0)
    {
        var scroll_from_top = $(document).scrollTop();

        // if at the top section of the page, hide icon
        if (scroll_from_top < (viewport().height*0.5))
        {
            go_to_top_icon.removeClass("active");
        }

        // if further down the page, show icon
        else
        {
            go_to_top_icon.addClass("active");
        }
    }
}

/*
 * ================================================================
 * Scroll to Top of the Page
 *
 * - scrolls to top of the page (#outer-container)
 */
function scroll_to_top(event)
{
    if (event !== undefined) event.preventDefault();

    $('html, body').stop().animate({
        scrollTop: 0
    }, 1500,'easeInOutCubic', function(){
        $("#go-to-top").removeClass("active"); // deactive scroll to top icin
    });

    return false;
}

/*
 * ================================================================
 * Form validation and submit actions
 *
 * @param form_object - objects -  if set, validate and submit this form only. Otherwise search for all forms with class .validate-form
 */
function validate_and_submit_forms(form_object)
{
    var forms = (form_object !== undefined && form_object.length > 0) ? form_object : $("form.validate-form");

    // for each form
    forms.each(function(){

        var this_form = $(this);

        // -------------- onChange of each form field with validation enabled (with class .validate) --------------
        this_form.find(".validate-field").each(function()
        {
            $(this).change(function()
            {
                // first empty any error containers
                $(this).siblings(".alert").remove();

                // value is not empty, validate it
                if ($(this).val().trim() != "")
                {
                    var validation_message = validate_fields(this_form, $(this));
                    if (validation_message.length > 0)
                    {
                        // if there are errors (not successfull)
                        if (validation_message[0]["message"] !== undefined && validation_message[0]["message"] != "" && validation_message[0]["message"] != "success")
                        {
                            // create error field
                            var error_field_html = '<div class="alert">'+validation_message[0]["message"]+'</div>';
                            $(this).after(error_field_html);
                            $(this).siblings(".alert").fadeIn("fast");
                        }
                        // end: if there are errors
                    }
                }
                // end: if value is not empty
            });
        });
        // -------------- end: onChange of each form field --------------

        // -------------- reload captcha --------------
        this_form.find("#form-captcha-refresh").click(function() {
            var d = new Date().getTime();
            this_form.find("#form-captcha-img").replaceWith('<img id="form-captcha-img" src="php/form_captcha/captcha_img.php?t='+d+'" class="img-responsive" title="Reload" style="display:none">');
            this_form.find("#form-captcha").val("");
            setTimeout(function() { this_form.find("#form-captcha-img").show(); }, 500);
        });

        // -------------- on Submit of form --------------
        this_form.submit(function(event)
        {
            event.preventDefault(); // stop default action (will be handled via AJAX below)

            // show form loader
            $(this).find(".form-loader").fadeIn("fast");

            var form_action = $(this).attr("action");
            // if action is not set (URL to mail.php), stop form action
            if (form_action === undefined && form_action == "") return false;

            // clear all errors
            $(this).find(".alert").remove();
            $(this).find(".form-general-error-container").empty();

            var errors_found = false;

            // for each field with validation enabled (with class .validate)
            $(this).find(".validate-field").each(function()
            {
                var validation_message = validate_fields(this_form, $(this));
                if (validation_message.length > 0)
                {
                    // if there are errors (not successfull)
                    if (validation_message[0]["message"] !== undefined && validation_message[0]["message"] != "" && validation_message[0]["message"] != "success")
                    {
                        // create error field
                        var error_field_html = '<div class="alert">'+validation_message[0]["message"]+'</div>';
                        $(this).after(error_field_html);
                        $(this).siblings(".alert").fadeIn("fast");

                        errors_found = true;
                    }
                    // end: if there are errors
                }
            });
            // end: for each field

            // if errors were found, stop form from being submitted
            if (errors_found == true)
            {
                // hide loader
                $(this).find(".form-loader").fadeOut("fast");
                return false;
            }

            // submit form
            $.ajax({
                type: 'POST',
                url: form_action,
                data: $(this).serialize(),
                dataType: 'html',
                success: function (data)
                {
                    // if form submission was processed (successfully or not)

                    // hide loader
                    this_form.find(".form-loader").fadeOut("fast");

                    var submission_successful = (data == "success") ? true : false;
                    var captcha_success = (data == "captcha") ? false : true;

                    var message = "";
                    switch(data) {
                        case "success":
                            message = "Form submitted successfully.";
                            break;
                        case "captcha":
                            message = "Incorrect CAPTCHA.";
                            break;
                        case "incomplete":
                            message = "Please fill in all required fields.";
                            break;
                        case "error":
                            message = "An error occured. Please try again later.";
                            break;
                    }

                    // prepare message to show after form processed
                    var message_field_html = '<div class="alert ';
                    message_field_html += (submission_successful == true) ? 'success' : 'error';
                    message_field_html += '">'+message+'</div>';

                    // incorrect captcha
                    if (!captcha_success) {
                        this_form.find("#form-captcha").parents(".form-group").append(message_field_html);
                        this_form.find("#form-captcha").parents(".form-group").find(".alert").fadeIn("fast");
                    }
                    // general message
                    else {
                        this_form.find(".form-general-error-container").html(message_field_html).fadeIn("fast", function(){
                            // if submission was successful, hide message after some time
                            $(this).delay(10000).fadeOut("fast", function(){ $(this).html(""); });
                        });
                    }

                    // refresh captcha
                    var d = new Date().getTime();
                    this_form.find("#form-captcha-img").replaceWith('<img id="form-captcha-img" src="php/form_captcha/captcha_img.php?t='+d+'" class="img-responsive" title="Reload" style="display:none">');
                    this_form.find("#form-captcha").val("");
                    setTimeout(function() { this_form.find("#form-captcha-img").show(); }, 500);

                    // if form submitted successfully, empty fields
                    if (submission_successful == true) this_form.find(".form-control").val("");
                },
                error: function (data)
                {
                    // if form submission wasn't processed

                    // hide loader
                    this_form.find(".form-loader").fadeOut("fast");

                    // show error message
                    var error_field_html = '<div class="alert">An error occured. Please try again later.</div>';
                    this_form.find(".form-general-error-container").html(error_field_html).fadeIn("fast");

                }
            });
            // end: submit form
        });
        // -------------- end: on Submit of form --------------

    })
    // end: for each form
}

/*
 * ================================================================
 * Form validation - separate fields
 *
 * @param form_object - object - required - the form in which the fields relate to
 * @param single_field - object - if set, the function will validate only that particular field. Otherwise the function will validate all the fields with class .validate
 */
 function validate_fields(form_object, single_field)
 {
    // if form exists
    if (form_object !== undefined && form_object.length > 0)
    {
        var form_fields_to_validate = (single_field !== undefined && single_field.length > 0) ? single_field : form_object.find(".validate"); // if single field is set, the function will validate only that particular field. Otherwise the function will validate all the fields with class .validate

        var validation_messages = new Array();

        // for each field to validate
        form_fields_to_validate.each(function()
        {
            var validation_type = $(this).attr("data-validation-type");
            var field_required = $(this).hasClass("required");
            var field_value = $(this).val().trim();

            var single_field_error_details = new Array(); // will contain this field and its error
            single_field_error_details["field_object"] = $(this);

            single_field_error_details["message"] = "success"; // default is success. If the above tests fail, replace message with error

            // if field is required and value is empty
            if (field_required == true && (field_value == "" || field_value === null || field_value === undefined)) single_field_error_details["message"] = "This field is required";

            // string validation
            if (validation_type == "string" && (field_value != "" && field_value !== null && field_value !== undefined))
            {
                if (field_value.match(/^[a-z0-9 .\-]+$/i) == null) single_field_error_details["message"] = "Invalid characters found.";
            }

            // email validation
            else if (validation_type == "email" && (field_value != "" && field_value !== null && field_value !== undefined))
            {
                if (field_value.match(/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/) == null) single_field_error_details["message"] = "Please enter a valid email address.";
            }

            // phone validation
            else if (validation_type == "phone" && (field_value != "" && field_value !== null && field_value !== undefined))
            {
                if (field_value.match(/^\(?\+?[\d\(\-\s\)]+$/) == null) single_field_error_details["message"] = "Invalid characters found.";
            }

            validation_messages.push(single_field_error_details); // if none of the above fail, return validation successfull

        });
        // end: for each field to validate

        return validation_messages;
    }
    // end: if form exists
 }

 /*
 * ================================================================
 * Menu Search Icon Visiblity / Click actions
 *
 */
function mainmenu_search_icon()
{
    var search_container = $("#search-container");
    if (search_container.length == 0) return false;

    // add left-padding to main menu if search icon exists in main menu - layout purposes
    if ($("#main-menu-container #search-container").length == 1)
    {
        $("#main-menu-container #main-menu").addClass("search-icon-active");
    }

    var search_icon = $("#search-container #search-icon");
    var search_input_container = $("#search-container #search-input");
    var search_close_icon = $("#search-container #search-close");

    // clicking outside of the search box
    $('html').click(function()
    {
        var search_input = $("#search-container #search-input");
        // if search visible, hide it
        if (search_icon.hasClass("active") && search_input.is(":visible"))
        {
            search_input.slideUp("fast");
            search_icon.removeClass("active");
        }
    });

    // clicking on search icon
    search_icon.click(function(event)
    {
        event.preventDefault();
        event.stopPropagation();
        var search_input = $("#search-container #search-input");

        // if search visible, hide it
        if (search_icon.hasClass("active") && search_input.is(":visible"))
        {
            search_input.slideUp("fast");
            search_icon.removeClass("active");
        }

        // if search hidden, show it
        else
        {
            search_input.slideDown("fast");
            search_icon.addClass("active");
        }
    });

    // clicking on close icon
    search_close_icon.click(function(event)
    {
        event.preventDefault();
        event.stopPropagation();
        var search_input = $("#search-container #search-input");
        var search_icon = $("#search-container #search-icon");

        // if search visible, hide it
        if (search_icon.hasClass("active") && search_input.is(":visible"))
        {
            search_input.slideUp("fast");
            search_icon.removeClass("active");
        }
    });

    // clicking inside the search container doesn't close it
    $("#search-container #search-input").click(function(event)
    {
        event.stopPropagation();
    });
}


I just finished making this cake for Brad's birthday tomorrow. I usually make a carrot cake, but he wanted something a little different this year. He requested a coconut cake, and I couldn't think of a better place to find a good recipe than Southern Living. They seem to have the very best cakes. I can't wait to try this tomorrow! I'll post more pics once we cut it. I hope it tastes as good as it looks!
Beat butter at medium speed with an electric mixer until creamy; gradually add 2 cups sugar, beating well. Add eggs, one at a time, beating after each addition.
Combine flour and baking powder; add to butter mixture alternately with milk, beginning and ending with flour mixture. Mix at low speed after each addition until blended. Stir in flavorings. Pour batter into three greased and floured 9-inch round cakepans.
Bake at 350 degrees for 25 to 28 minutes or until a wooden pick inserted in center comes out clean. Cool in pans on wire racks 10 minutes; remove from pans, and cool completely on wire racks.
Combine water and 1 tbsp. sugar in a small saucepan; bring to a boil. Reduce heat, and simmer 3 minutes. Let it cool, and then spoon sugar mixture over cake layers.
Stack layers, spreading about 1 cup Coconut Frosting between layers, and sprinkling 1/2 cup coconut on frosting between layers. Spread remaining Coconut Frosting on top and sides of cake, and sprinkle with remaining coconut.
Combine all ingredients in a medium bowl; beat at medium speed with an electric mixer until a soft, creamy frosting forms. This process may take a while....don't give up! I added a little extra powdered sugar to make the frosting a tiny bit thicker.


text:
Q: How to use previous N values in pandas column to fill NaNs? Say I have a time series data as below.
 df
       priceA    priceB
  0     25.67    30.56
  1     34.12    28.43
  2     37.14    29.08
  3     Nan       34.23
  4     32          Nan
  5     18.75    41.1
  6     Nan       45.12
  7     23          39.67
  8     Nan       36.45
  9      36         Nan

Now I want to fill NaNs in column priceA by taking mean of previous N values in the column. In this case take N=3.
And for column priceB I have to fill Nan by value M rows above(current index-M).
I tried to write for loop for it which is not a good practice as my data is too large. Is there a better way to do this?
N=3
M=2
def fillPriceA( df,indexval,n):
      temp=[ ]
      for i in range(n):
          if i < 0:
                continue
          temp.append(df.loc[indexval-(i+1), 'priceA'])

      return np.nanmean(np.array(temp, dtype=np.float))

def fillPriceB(df,  indexval, m):
        return df.loc[indexval-m, 'priceB']

for idx, rows for df.iterrows():
         if idx< N:
               continue
         else:
                if rows['priceA']==None:
                     rows['priceA']= fillPriceA(df, idx,N)
                if rows['priceB']==None:
                     rows['priceB']=fillPrriceB(df,idx,M)

Expected output:
        priceA      priceB
0      25.67        30.56
1      34.12        28.43
2      37.14        29.08
3      32.31        34.23
4      32             29.08
5      18.75       41.1
6       27.68      45.12
7       23            39.67
8       23.14      36.45
9       36            39.67

A: A solution could be to only work with the nan index (see dataframe boolean indexing):
param = dict(priceA = 3, priceB = 2) #Number of previous values to consider

for col in df.columns:
    for i in df[np.isnan(df[col])].index: #Iterate over nan index
        _window = df.iloc[max(0,(i-param[col])):i][col] #get the nth expected elements
        df.loc[i][col] = _window.mean() if col == 'priceA' else _window.iloc[0] #Replace with right method

print(df)

Result:
      priceA  priceB
0  25.670000   30.56
1  34.120000   28.43
2  37.140000   29.08
3  32.310000   34.23
4  32.000000   29.08
5  18.750000   41.10
6  27.686667   45.12
7  23.000000   39.67
8  23.145556   36.45
9  36.000000   39.67

Note
1. Using np.isnan() implies that your columns are numeric. If not convert your columns before with pd.to_numeric():
...
for col in df.columns:
    df[col] = pd.to_numeric(df[col], errors = 'coerce')
    ...

Or use pd.isnull() instead (see example below). Be aware of the performances (numpy is faster):
from random import randint

#A sample with 10k elements and some np.nan
arr = np.random.rand(10000)
for i in range(100):
    arr[randint(0,9999)] = np.nan

#Performances
%timeit pd.isnull(arr)
10000 loops, best of 3: 24.8 µs per loop

%timeit np.isnan(arr)
100000 loops, best of 3: 5.6 µs per loop

2. A more generic alternative could be to define methods and window size to apply for each column in a dict:
import pandas as pd

param = {}
param['priceA'] = {'n':3,
                   'method':lambda x: pd.isnull(x)}

param['priceB'] = {'n':2,
                   'method':lambda x: x[0]}

param contains now n the number of elements and method a lambda expression. Accordingly rewrite your loops:
for col in df.columns:
    for i in df[np.isnan(df[col])].index: #Iterate over nan index
        _window = df.iloc[max(0,(i-param[col]['n'])):i][col] #get the nth expected elements
        df.loc[i][col] = param[col]['method'](_window.values) #Replace with right method

print(df)#This leads to a similar result.

A: You can use an NA mask to do what you need per column:
import pandas as pd
import numpy as np

df = pd.DataFrame({'a': [1,2,3,4, None, 5, 6], 'b': [1, None, 2, 3, 4, None, 7]})
df

#     a b
# 0 1.0 1.0
# 1 2.0 NaN
# 2 3.0 2.0
# 3 4.0 3.0
# 4 NaN 4.0
# 5 5.0 NaN
# 6 6.0 7.0

for col in df.columns:
    s = df[col]
    na_indices = s[s.isnull()].index.tolist()
    prev = 0
    for k in na_indices:
        s[k] = np.mean(s[prev:k])
        prev = k

    df[col] = s

print(df)

    a   b
# 0 1.0 1.0
# 1 2.0 1.0
# 2 3.0 2.0
# 3 4.0 3.0
# 4 2.5 4.0
# 5 5.0 2.5
# 6 6.0 7.0

While this is still a custom operation, I am pretty sure it will be slightly faster because it is not iterating over each row, just over the NA values, which I am assuming will be sparse compared to the actual data

A: To fill priceA use rolling, then shift and use this result in fillna,
# make some data
df = pd.DataFrame({'priceA': range(10)})

#make some rows missing
df.loc[[4, 6], 'priceA'] = np.nan

n = 3

df.priceA = df.priceA.fillna(df.priceA.rolling(n, min_periods=1).mean().shift(1))

The only edge case here is when two nans are within n of one another but it seems to handle this as in your question.
For priceB just use shift,
df = pd.DataFrame({'priceB': range(10)})
df.loc[[4, 8], 'priceB'] = np.nan

m = 2

df.priceB = df.priceB.fillna(df.priceB.shift(m))

Like before, there is the edge case where there is a nan exactly m before another nan.

redpajama_set_name: RedPajamaStackExchange


text:
By Streaming Media Editorial Staff
Video: SCTE 224 Primer, Part 2: Standardizing Linear Rights Metadata
Learn more about live linear channels at the next Live Streaming Summit.
Watch the complete video of this panel, LS105: Live Streaming Spotlight: Dead Air is Not an Option, in the Streaming Media Conference Video Portal.
Read the complete transcript of this clip:
Stuart Kurkowski: The advantages then of having this construct out there for content providers is now I can match program information to audiences, right? And I can give you those very specific policies. Because it's the full gamut? It could be verbs. It could be ZIP codes. It could be addresses. It could be a particular device type, like only iOS devices or, for example, the NFL games where the football games can only be on a Verizon phone. I can convey that information to you now. Secondly, I can standardize that metadata format. If you've worked in the alternate content space, historically we were getting CSV files, emails, saying, "This program is now cleared. Shut this program off." I know we talked with one distribution partner that hired like 20 people just to manage spreadsheets they could email on a weekly basis to set up the schedule.
They can standardize all that which, obviously, simplifies operations. Again, it's multi-platform. I can set up this feed one time as a content provider and then send it out to all my distribution partners. The big one there too is that it's machine-to-machine. We don't have humans going in and blocking things, setting up IRD, commanding, and all that kind of stuff. This is all machine-to-machine in an automated format. Then the bottom one there is another key one, is auditing. As much as this is a positive this is also kind of the holy grail yet in this space: How do I audit this kind of thing? In the traditional IRD sense, if I had an IRD that was in New York and I had another IRD in Boston and all that, I could put something behind that IRD, check the IRD that I got the right commanding information, put something behind it and audit it. Say, "Okay, it's switched." So I know the 10,000 houses that are hooked to it are all switched and everybody's good.
When I get to this world where we're OTT and TVE and all that information, it becomes a pretty intractable problem to try and figure out all the different device combinations, the ZIP combinations, and all that stuff. I can't just sample anymore and come up with anything constructive. So it helps with auditing in the fact that right now if you have a standardized feed, I can run a decision engine over that and I can even say, "Next Saturday at 2:00 this device in this ZIP code, if I ask my decision manager what it's going to do, it'll tell me, 'You're going to get this feed,' or 'You're going to be on this feed.'" I can test it. I can audit it. That's one level of reassurance for those content providers that are used to have all the control coming off the satellite.
But likewise on the distribution partner side, those that are getting your streams and executing, I can reduce the workflow. I don't have this army of people now managing spreadsheets and trying to work through that stuff. Also, as we mentioned earlier, I can do an accurate and dynamic EPG. I could take that same schedule you sent me with all the execution rights for audiences, viewing policies, all that. I could play that out as far as you give me data. So if you give me data for two weeks, I can make a nice, accurate program guide now two weeks out so I won't ever tease my users or viewers into seeing something that I think they're going to get excited about, but then when it shows it they don't get it. I can make it very accurate. Likewise, if I know there's alternate content coming and there's a section where they're not going to get something, I can substitute something in for that. Keep eyeballs on my stream so I can sell more ads and do that kind of stuff.
So the EPG data work's been really exciting in this space. Likewise, it's machine-to-machine so, again, I don't have to have an army of folks doing that. And the blackout management kind of goes both ways. I don't show them something in the EPG that they're not going to get, so they don't have a bad user experience. Likewise, because it's automated I don't have any "gotchas" where I started it for a short ways and then I realized it was blacked out and I pulled them away.
Then ad schedules we'll talk about in a coming side and the ADI files I mentioned earlier. As content providers get sharper on this they're saying, "Well, hey, I have your attention, right? I told you when the start of the program was and I was telling you what the alternate is. While I'm telling you that I can also give you instructions on, if you can capture this and convert it to VOD then I can also give you the ADI files. I can give you all that information that goes with it, and so now I have a live to VOD capture and I've totally taken out the delivery that needs to be done when I pitch VOD assets separately." So that's added there, and then also the boundary management piece as well is another one, again, that has been exciting, especially in the EU.
Video: SCTE 224 Primer, Part 4: What's Next
Comcast's Stuart Kurkowski completes his 4-part SCTE 224 Primer with a look ahead in this clip from Live Streaming Summit at Streaming Media East 2018.
Video: SCTE 224 Primer, Part 3: SCTE 224 In Action
In Part 3 of a 4-part series from Live Streaming Summit East 2018, Comcast's Stuart Kurkowski provides an introduction to the SCTE 224 spec and what live event streaming pros need to know about it.
Video: SCTE 224 Primer, Part 1: The Basics
Video: What Are the Key Challenges of Live Linear Video Delivery?
Comcast's Stuart Kurkowski discusses the UX challenges of live linear in this clip from Live Streaming Summit at Streaming Media East 2018.

redpajama_set_name: RedPajamaCommonCrawl


text:
Discourse, agency and the question of evil
Bert Olivier
South African Journal of Philosophy 22 (4):328-347 (2003)
This paper addresses the question of evil from an ethical and discourse-analytical perspective, taking Joan Copjec's commentary on Kant's notion of 'radical evil' and its relation to human freedom as its point of departure. Specifically, Copjec's argument, that for Kant (and, one may add, for Lacan) the subject is always 'in excess of itself', provides an important foil for, or corrective to what may seem to be the upshot of Foucault's notion of discourse (its heuristic value notwithstanding). The latter entails that, insofar as the subject is ineluctably discursively constructed, its actions could be understood as being 'determined' by the discursive structure of (its) subjectivity. That is, the subject as agent may seem to lack volitional freedom in the sense that it is merely an instrument of a certain discourse by which it is 'spoken'. However, Kant's idea of 'radical evil', it is further argued, presupposes that the subject is free, in other words, that it always exceeds itself. In Foucault's terms, this would mean that the subject of discourse is able to adopt a counter-discursive position – something Foucault sometimes seems to make room for. What Kant calls 'radical evil' may be understood as something that occurs in the world through human agency, in the face of the possibility of an alternative course of action; that is, it is chosen – even if we only know this in retrospect through the phenomenon of guilt. If, in contrast, it is understood as being 'diabolical' in the sense of being unavoidably and irresistibly part and parcel of human 'nature', no one could condemn it in moral terms. This line of thinking is fleshed out, or given concrete significance by means of a discourse-analysis of documents pertaining to the so-called 'ripper-rapist' (criminal) case in Port Elizabeth, South Africa, in the mid-1990s. S. Afr. J. Philos. Vol.22(4) 2003: 328-347
DOI 10.4314/sajpem.v22i4.31377
ajol.info (no proxy)
ajol.info [2] (no proxy)
tandfonline.com (no proxy)
Foucault, the Author, and the Discourse.Hans Sluga - 1985 - Inquiry: An Interdisciplinary Journal of Philosophy 28 (1-4):403 – 415.
Kant on Radical Evil and the Origin of Moral Responsibility.Irene McMullin - 2013 - Kantian Review 18 (1):49-72.
Kant on the Radical Evil of Human Nature.Paul Formosa - 2007 - Philosophical Forum 38 (3):221–245.
Original Sin and Radical Evil: Kierkegaard and Kant.Roe Fremstedal - 2012 - Kantian Review 17 (2):197-225.
Wickedness Redux.Peter Brian Barry - 2011 - Philo 14 (2):137-160.
The Contingency of Evil: Rethinking the Problem of Universal Evil in Kant's 'Religion'.Ryan Kemp - 2011 - In Oliver Thorndike (ed.), Rethinking Kant: Volume 3. Cambridge Scholars Press.
Radical Evil and the Invisibility of Moral Worth in Kant's Die Religion.Carlos Manrique - 2007 - Ideas Y Valores 56 (135):3-27.
Reconsidering Evil: Confronting Reflections with Confessions.Petruschka Schaafsma - 2006 - Peeters.
Heidegger and Foucault on the Subject, Agencycourses.Hubert Dreyfus - unknown
A Philosophy of Evil.Lars Fr H. Svendsen - 2010 - Dalkey Archive Press.
Kant on Human Nature and Radical Evil.Camille Atkinson - 2007 - Philosophy and Theology 19 (1/2):215-224.
Villalobos, J. (edt.), Radicalidad y episteme.Mª E. López Ortega - 1992 - Logos. Anales Del Seminario de Metafísica [Universidad Complutense de Madrid, España] 26:266.
Is Radical Evil Banal? Is Banal Evil Radical?Paul Formosa - 2007 - Philosophy and Social Criticism 33 (6):717-735.
Page generated Mon Jan 17 19:32:16 2022 on philpapers-web-79666d8574-k8hhk


text:
, , et EDTV sont des sigles du CEA pour certains formats et appareils vidéos.

Le sigle EDTV identifie les formats vidéo dépassant la norme SDTV (NTSC, PAL et SECAM), sans pour autant atteindre les normes HD.

Le format EDTV ne peut être véhiculé par les câbles composite et S-Vidéo, et donc implique obligatoirement l'utilisation de câbles RVB ou YUV, ou d'une Péritel utilisée en RVB.

Puisque le signal EDTV est progressif, il présente une résolution apparente plus forte que son équivalent SDTV, et il n'est pas sujet à des artéfacts de désentrelacement. Il donne de ce fait de bien meilleurs résultats lors de l'affichage sur un téléviseur HD.

Le format EDTV est utilisé par les lecteurs DVD qui se chargent du désentrelacement (scan progressif), et par les consoles de jeux récentes (à partir de l'année 2000). Attention, même si la console le permet et qu'elle est branchée et paramétrée correctement, tous les jeux ne supportent pas ce format.

Voir aussi
 Formats vidéo : 576p - 480p

redpajama_set_name: RedPajamaWikipedia


Behind the Headlines "Guide to the science that makes the news"
FREE resources for journalists reporting on clinical trials or trying to get to grips with issues in reporting new medical treatments. Many resources available in 23 EU languages: most available in 6 or more languages.
Delegates at First Do No Harm, an international conference in health journalism and PR held in Coventry last week, left with a determination to work towards better standards, training and networks for this vital specialist area – and a promise from the organisers.
As speakers from 4 continents charted the state of health journalism across the globe, looking at subjects as diverse as cancer reporting and PR ethics for health organisations, there was a discernible air of determination to take things forward. This reached one of the conference's aims with one stroke: to serve as the foundation for a wider campaign to protect, promote and develop health reporting and PR.
"We absolutely did not want this to be yet another academic conference, with prestigious academics emerging from their studies to tell other academics how important this all is – and being ignored by journalists", said Dr John Lister, one of the conference organisers and himself a world authority on the politics of health policy.
"We were determined to make this work for working journalists and PRs as well as stand on its academic research, which was in itself impressive, so we deliberately invited working journalists and PRs to speak and hear about the realities of what is threatening this area of journalism.
"This situation is genuinely alarming: we could be looking at a perfect storm for health journalism and healthcare, with pressures on journalists to cut corners and 'cover' health with little or no training, pressures on hospitals to cut services year on year, and pressures on health PRs to spin the truth and hide any embarrassment."
"PR in the NHS stands at a crossroads: will its political masters give it the means to be 'open' and 'transparent', or will the current culture of blame and obfuscation continue?
"It's the PR who has to live with that legacy – and forthcoming changes in the law could mean it's their neck on the line if the organisation misleads the public. There has never been a more important time to air this debate, and conferences like this which set out with a determination to yield ongoing practical solutions for the professionals are a very good start."
Alan was so convinced of the need to keep things moving that he promised all the delegates at the close of the conference that he would ensure all the speeches and debates were available within a month: "Yep, that was brave of me!
But if we don't put in the effort to make this work as the dedicated people who came to conference want it to, who will? The greatest ally of the growing threat to health journalism – and health services – is the easy complacency of conscientious silence. Good intent is not enough. We need more."
We are opening up an online blog for those wanting to join our new network and help support journalists trying to improve their coverage of health in the next few days: this will be publicised and promoted via @Healthjournos Twitter and e-mail, and we would be delighted if you can pass on the link to colleagues who may be interested.
See this Powerpoint presentation: Why Health Journalism Matters - the opening presentation at the conference by John Lister, Coventry University.
Reporting Statistics for Health Journalists – Dr David Schley (Royal Statistical Society).
The success of the project (key to the prospects of securing more funding to take the project further and developing more workshops on mental health, care of the elderly and other issues) depends upon registering 'hits' on the official HeaRT website at http://www.project-heart.eu – and in particular its e-learning tools.
These are free to use for anyone who simply logs in and secures a password.
Please log in to the site, and fill in the brief questionnaire.
Pass on the details to colleagues.
The presentations and discussions from First Do No Harm, a major international conference on health journalism and PR, held in Coventry University May 14-16 2014 are now available to download and use.
They are organised into several main themes. Summaries and the main documents are available.
We welcome your feedback and comments on the issues raised, or on other ongoing issues of interest to health journalists and journalists coming to health reporting for the first time.
Please log in or register – free of charge – to access our interactive blog and other resources on this website.


Neonatal Liver Failure and Congenital Cirrhosis due to Gestational Alloimmune Liver Disease: A Case Report and Literature Review.
Roos Mariano da Rocha C, Rostirola Guedes R, Kieling CO et al.
Medical School, Universidade Federal do Rio Grande do Sul, Porto Alegre, RS, Brazil.
Case reports in pediatrics. 2017.
Neonatal liver failure (NLF) is a major cause of neonatal morbidity and mortality, presenting as acute liver failure and/or congenital cirrhosis. Many affected patients show antenatal signs of fetal injury. There are several causes of NLF and early diagnosis is mandatory to elucidate the etiology and determine a specific treatment or the best management strategy. Gestational alloimmune liver disease associated with neonatal hemochromatosis (GALD-NH) is a rare but potentially treatable cause of NLF. It should be considered in any neonate with fetal signs of disease and postnatal signs of liver failure with no other identifiable causes. GALD-NH is often diagnosed late and patients are therefore referred late to specialized centers, delaying treatment. This case highlights the consequences of late diagnosis and treatment of GALD-NH and emphasizes the importance of a high grade of suspicion of this disease in order to refer the patient to a specialized center soon enough to perform the appropriate treatment.
Previous Previous post: Solid Organ Infections: Rare Complications After Laparoscopic Sleeve Gastrectomy: a Report of Four Cases.
Next Next post: Extended Abstract: Deficiency of Sodium Taurocholate Cotransporting Polypeptide (SLC10A1): A New Inborn Error of Metabolism with an Attenuated Phenotype.


The report said all but one of those producers had supplied palm oil to consumer companies that are household names around the world in the past year. They include giants such as Nestle, PepsiCo, Unilever and Colgate-Palmolive.
Palm oil, mainly produced in Indonesia and Malaysia, is used in a slew of consumer products from snacks to cosmetics.
Some 16 major consumer goods companies made a joint commitment in 2010 to end the buying of palm oil from producers who are destroying forests and committing human rights abuses but have been repeatedly criticized for lack of progress.
Greenpeace said the commitments on paper had frequently been used to create the appearance of taking action without making real changes.
Years after adopting conservation policies, "brands and traders are still unable to monitor the producer groups in their supply chains," the group said.
The Greenpeace report also mentions evidence of child and other forced labor in Indonesia's palm oil industry but mainly focuses on the environmental problems. It singled out palm oil giant Wilmar as the biggest offender among the 25 groups it investigated.
Rapid forest loss and greenhouse gas emissions have made Indonesia the fourth biggest contributor to global warming after China, the U.S. and India.
"The palm oil industry's failure to address deforestation and other notorious practices is putting its long term future in doubt," said Greenpeace. "Public opinion in many major markets is already turning against palm oil."
The influential International Union for Conservation of Nature earlier this year said bans on palm oil are not a solution because other sources of plant oil require as much as nine times more land.
It said a ban would likely only "displace" forest and species destruction to other areas. Concerted action is needed to make the palm oil a responsible and "sustainable" industry, it said.


text:
Written by Pam Tipa
Michelle Thompson.
So says Michelle Thompson, chief executive of Rural Health Alliance Aotearoa New Zealand (RHANZ).
"Maybe we are moving into a new norm -- financial shocks, global shocks, weather bombs, earthquakes; it is one after the other and people often haven't got over the first one," she told Rural News.
"Unusual right now is the cumulative impact of adverse events facing rural families, particularly those deriving a income from the land.
"Most people can deal with one or two major events, but when they are all back to back that is where pressure is building."
Thompson says it is impossible to get a good overall picture of this until there are better official definitions of rural and rural facilities.
"What is a rural health service as opposed to an urban health service for instance? And then if we start comparing rural health outcomes against urban health outcomes we might start seeing the difference we believe exists."
An example is that Ministry of Health figures on rural suicides compared to urban suicides run three years behind.
RHANZ works with the Rural Support Trust. Neil Bateup, chair of the Waikato trust and the national network, reported to the board before Christmas an increase in calls to the trust of a "wellness" nature – a shift from the usual onfarm or financial calls.
"He commented that quite a few men have picked the phone up and said they are generally not in a good place and they are feeling a bit overwhelmed," she says.
"That is a really good thing: we have been trying to get people under pressure to pick up the phone and talk about it.
"It looks like that is happening; our problem is if they need clinical intervention do we have the clinical workforce to help? We are trying to upskill even though we know we haven't got enough bodies in the workforce, but those we have we are trying to upskill in suicide prevention strategies."
Under contract to the Ministry of Health, RHANZ is funded to run advanced suicide prevention training programmes for rural health and social service professionals.
Feedback from earlier programmes showed more training was needed on how to manage a patient who could be at risk of suicide. RHANZ is now halfway through providing 20 workshops offering that training.
"We have been inundated; we're oversubscribed for these workshops. We aim to have about 30-40 people in these workshops and for some we've had 70 or 80 people register and we haven't been able to meet that demand."
Thompson says they still hear that people are having trouble accessing health services, particularly counselling.
"We don't have any hard data on this because of issues we've raised before about who is a rural person or what is a rural health facility.
"A lot of our evidence is anecdotal but I would say access to counselling same day or next day in rural NZ is pretty difficult.
"From what I hear about what is happening in urban centres, it is the same there as well."
NZ has fundamental problems with mental health and addiction services, she says. This is why the government is commissioning the Mental Health and Addiction Services Inquiry, with a panel of five due to report back late 2018.
"I hope rural is considered. I think we will be seeing a whole lot of gaps and issues and we need policies to stem those gaps."
RURAL HEALTH ALLIANCE
This old mutt notes that millionaire Hollywood producer and advocate for mung bean farming James Cameron is happy to fly…
Showing the way
A mate of the Hound reckons some major agricultural companies wanting to promote their ideas and services could learn from…
» Connect with Rural News


KAMLOOPS — Jim Cotter and Sarah Wark will represent B.C. at the Brier and Scotties.
Cotter won his 8th provincial championship, defeating Victoria's Jason Montgomery 9-4 in the men's final in Quesnel.
The Cotter rink, from Vernon and Kelowna, went through the week undefeated at 5-and-0 and will carry B.C.'s flag to the Brandon Brier.
Sarah Wark, from Abbotsford, took the women's B.C. title with a 7-4 win over Corryn Brown of Kamloops.
The Wark rink will go on to represent B.C. at the Scotties Tournament of Hearts in Sydney, Nova Scotia.


text:
Suzanne Owen
Dr Suzanne Owen
s.owen@leedstrinity.ac.uk
Phone: +44 (0)113 283 7100 ext.678
Master of Arts, Leeds Trinity University
Doctor of Philosophy, University of Edinburgh
Master of Science, University of Edinburgh
PGCE, Bath Spa University
Master of Arts, University of Edinburgh
Fellow of the Higher Education Academy,
University of Leeds Teaching Award - 2,
Suzanne Owen received her PhD in Religious Studies from the University of Edinburgh in 2007, where she also received her undergraduate MA (mainly specialising in South Asian religion and philosophy). She also completed a PGCE in Religious Education at Bath Spa. For her PhD, she studied the significance of protocols in the sharing of Native American ceremonies, which included fieldwork among Mi'kmaq in Newfoundland, and debates on non-native 'appropriations'. She continues to research issues of indigeneity in Newfoundland and, in addition, contemporary forms of British Druidry.
She was Co-Chair of the Indigenous Religious Traditions Group at the American Academy of Religion (2009-2015) and has been the Coordinating Editor of the Journal of the British Association for the Study of Religions (formerly Diskus), since 2012.
Indigeneity and the category 'indigenous religion'; contemporary Native North American and First Nations traditions; representation and memory of the Beothuk in Newfoundland; contemporary paganism and shamanism; appropriation and inculturation; religious/cultural boundaries; methodological and theoretical issues in the study of religion, including the critical study of 'religion' and related categories ('spirituality' and 'sacred') amd social formations.
Teaching and Administration
Studying Religion (TRS4002)
Rituals, Rites and Religious Quests (TRS5472)
Sociology and Anthropology of Religion (TRS5912)
Religions in Leeds Bradford (TRS6922)
Religions, Cultures and Complexities (TRS6802)
Programme Coordinator for Theology and Religious Studies
Willingness to take PhD students


Boat and sports equipment rental business and adventure tours operating for only 6 months per year in the BC Interior. This is turn-key business and is ready for someone to take this business to the next level of profitability. All equipment is well maintained and in great shape. Don't miss this opportunity to own, operate, and grow this business while only working 6 months a year!
Operated successfully by current owners since 2005. High traffic and popular waterfront location with lease in place.
Additional boats, bikes, and other rental equipment. Add tour routes.


Yesterday I went to the Bowers Museum in Orange County, CA to see the Benjamin Franklin Exhibit. On display are 75 artifacts from Franklin's life, in honor of what would be his 300th birthday. I went with my parents as part of a Christmas present to my dad, and while there, I discovered some interesting facts about one of the all-time most accomplished men.
First, he invented an instrument called the glass armonica. It was similar to a piano, in that it had pedals to push and you used both hands. But, it was basically a chain of glass bowls, and it mimicked the sound of a wet finger rubbing the rim of a glass. Over 5,000 were made during Franklin's lifetime, and Beethoven and Mozart even composed music especially for it.
Next, and much more importantly (in my opinion at least), of all his accomplishments, Franklin was most proud of his being a publisher. He owned a printing press, through which he was able to widely disseminate his views and he made enough money to retire at age 42. Because he was so proud of being a tradesman, he wanted people to remember him as B. Franklin, printer–which is pretty much the same thing as a publisher.
Franklin wrote short stories and he published the second magazine ever in the colonies. He was also known for his humor. My favorite example of this was when he wrote a declaration in London's The Public Advertiser, pretending to be King Frederick II of Prussia. In this declaration, King Frederick II told Britain that because they were originally conquered by the Germans, and protected by them in a recent war, they owed a lot of money; and, if the Brits were looking for a precedent to this declaration, they should look to the way they treated the American colonies. Ha ha, oh that tickles me.
Additionally, Ben Franklin's autobiography is the most widely read memoir of all time, and it has never gone out of print. The book started as a letter to his son, and Franklin actually never finished writing it.
Lastly, I admire the way Ben Franklin viewed his inventions. He never patented them because he believed that scientific knowledge should directly benefit society. That is amazing, and a great way to promote progress.


in health, even as thy soul prospereth." This is God's wish for you and me.
will to us and our loved ones.
there is an end; and thine expectation shall not be cut off.
shall be thy rear guard.
saved: for thou art my praise.


text:
Q: How to wget with pics on www.x.org/yy/index.php I have an unusual case. I want to use wget to download all pictures on http://www.indyprojectseed.org/2011/index.php and all the other years. How can I do this, with a loop maybe?
I am currently doing
cd Downloads

wget -r -P /download/location -A jpg,jpeg,gif,png http://www.indyprojectseed.org/2011/index.php

However. I want to do with all the years. Idea?

A: How about a bash loop, e.g.:
for year in {06..15}; do wget -r -P /download/location -A jpg,jpeg,gif,png http://www.indyprojectseed.org/20${year}/index.php; done


text:
1978 Lincoln Continental Town Car: Proudly Nimitz Class!
Thomas Klockau
For some, the 1970s are less than happy times. Oil crisis, big bumpers, highly questionable fashion. But I love that decade, because some of the Broughamiest, most majestic domestic luxury cars were built during that 10-year period.
Right now I know some of you are saying, "Hey! Wait a minute! There were some even more fantastic luxury cars during the classic period! Duesenberg! Packard! Cadillac V16!" And yes, I wholeheartedly agree. But I just love those '70s land yachts. There was just something about them. As you know, our love for cars can be very subjective. And subject to our individual history.
For instance, when I was a little kid, our neighbor across the alley, Bill Yokas, had a majestic, white 1979 Lincoln Continental Collectors Series. White vinyl coach roof, turbine alloy wheels, and many square feet of Kasmin II cloth in midnight blue inside. I loved that car. At that time Bill was in probably his mid 50s, but was very tolerant of me and my brother coming over and visiting when he was puttering around in the yard and the garage.
I loved that Continental. It was so huge, especially since I was about four-feet tall at the time. Although I never rode in it, I got to sit behind the wheel once and it was wonderful. It had been his brother's car, and when he passed away, Bill got it. It was the "garage queen," only driven on weekends, usually to services at the local Greek Orthodox church.
So, I have a history with these. And my grandfather had a midnight blue 1977 Continental Mark V, so I had already been predisposed to American luxury yachts. Unbeknownst to me at that time, though, these Lincolns were the last gasp of truly uncompromising size, space, and silence.
As I've previously discussed, Cadillac, Lincoln's arch rival, had downsized its cars in 1977. It was partly a reaction to the first gas crisis of 1973–74 and partly due to deciding its cars were just too big anyway. While I love those '77–79 Caddys too, they were not quite as impressive, at first blush, when compared to, say, a '76 Fleetwood Talisman. But they still had room and space and still looked like a Cadillac, despite a decidedly smaller footprint.
Meanwhile at Lincoln, there were some changes starting in 1978, but they were not immediately apparent to the casual observer. While the Cadillacs were clearly a clean-sheet design, the Continentals were approximately the same when seen from a distance. The most obvious differences were the smaller rear fender skirts (some say the 1978–79s don't have skirts at all, but they do, they're just very narrow) and the all-new dash.
That new instrument panel was essentially a gilded Marquis/LTD dash. Apparently it was a slightly lighter assembly, and collectively, certain components on the '78s were replaced with lighter elements here and there, without compromising that true American space and size Lincoln owners were accustomed to.
Not that it was played up in showroom literature. As the '78 Continental brochure assured, "Lincoln Continental is truly a standard by which other luxury cars are judged. Whether it's for roominess, comfort, styling, overall quality, or value, Lincoln Continental owners have their own reasons for owning Lincoln Continental; they've got their standards." A not-too-subtle dig at shrunken Cadillac owners, perhaps?
And so did the Continental and the flossier Town Car/Town Coupé and the personal luxury Mark V carry on—until 1980. Then, despite all the large-car bluster, Lincoln downsized its cars as well. But for those last two years of the '70s, you could still get a really big, imposing Lincoln, if you felt the need! This particular car was like new, finished in Champagne with matching crushed velour and coach roof. I photographed it and gawked at it at the cruise night in downtown Mt. Carroll, Illinois, back in the summer of 2015. It's always been a great event and has resulted in a couple other columns of mine, notably the '79 Cordoba and '76 Marquis Brougham.
Look at these cars and marvel, for we'll never see their like again. So keep calm, Brougham on, and always tip your bartender!
Klockau Classics 1974 Cadillac Eldorado Convertible: Cranberry Firemist for the win!
Klockau Classics 1986 Oldsmobile Cutlass Supreme Brougham: Intermediate Luxury
Read next Up next: Piston Slap: A positive outlook on starting troubles?


* Last admission 30 min before closing.
Seodaemun Prison History Hall is a special museum located at Seodaemun Independence Park. It was built near the end of the Joseon Dynasty (~1910), and was where Japanese soldiers tortured and later executed Korean Independence Movement followers. Seodaemun Prison History Hall was built in remembrance of Seodaemun Prison, and to salute the Korean patriots. There you'll find seven jail cells, a historical exhibition hall, an execution room, watchtowers and a basement jail cell where Yu Gwan-sun an historic figure during the independence movement died. The 1st floor is "A Place of Reverence," where you can learn about Seodaemun Prison through a video. A large screen shows the background of its founding and the transition periods in its history. The Reference Room has displays and information on Korea's history. The museum also holds special exhibits. The 2nd floor is "A Place of History," where you can view the "National Resistance Room," "Prison History Room" and the "In Prison Life Room." This floor shows examples of how the people fought through this dark chapter in history continuing to hold on to their hopes and resolve for freedom. "A Place of Experience" is the most horrifying and dreadful place in the prison. In the "Temporary Detention Room" and "Torture Room" you will see recreated torture scenes that are frighteningly realistic. At the Seodamun Independence Park nearby you can visit the Independence Hall, the Patriotic Martyr Monument, the March 1st Declaration of Independence Monument, relic no. 32 and no. 33.
※ Free: Children under 6, Seniors over 65, people with disabilities.
- Call the museum one week before your visit to give the docent enough time to prepare the schedule.
- Limited to 30 participants.
Daejungjip has specialized in Dogani tang (ox knee joint soup) for 60 years. Customers can feel a simple and familiar ambience at the restaurant.
Dongnimmun Station (Seoul Subway Line 3), Exit 5.


Cocktail necromancers are reviving zombie ingredients and reanimating classic drinks.
Ken Walczak has a mini-fridge for his vermouth collection.
Grace Danico is a Brooklyn-based illustrator who loves fried chicken.
Many languages link drinking with vitality: Whiskey (uisge beatha in Gaelic), eau de vie, and aquavit all translate to "water of life." English is more ambivalent, though. We call our most potent potables "spirits," as though they were either brimming with pep-rally fervor or haunting our belfries from the shadows of the afterlife.
For some spirits, the macabre connotation is especially apt. Take crème de cacao. This noble liqueur was once crafted with pride by dozens of artisan distillers. The best of their output became a key component of classic cocktails like the Grasshopper and the Florida Daiquiri.
But the more folks thirsted for Grasshoppers (the chocolate martinis of their day), the more incentive they gave industrial producers to crank out cheap crèmes de cacao based on neutral alcohol with added oils and flavorings. Corner-cutting bars increasingly stocked these substitutes, driving the higher-quality crèmes out of the market. By the late 20th century, the Grasshopper had become a sickly sweet chemical aberration, a historical footnote for cocktail connoisseurs. The few cacao brands that remained on shelves were ghoulish remnants, capable of devouring your liver but only superficially resembling the vibrant liqueurs of the past.
John Troia is no fan of zombies. As the cofounder of Tempus Fugit Spirits in Petaluma, Calif., he's made it his mission to improve tomorrow's cocktails by connecting today's bartenders to yesterday's ingredients. With extensive research, Troia says he can identify a spirit's "Golden Age"—usually sometime between the mid-1800s and early 1900s, when the ingredient enjoyed its highest level of innovation. Then he executes the best Golden Age recipe he can find with high-quality ingredients to make a revitalized product that both "tastes and is made to the same protocols" as in its glory days.
For crème de cacao, this meant unearthing ancient bottles from the collectors' market, tasting their contents, performing gas chromatography to verify the composition of decades-old hooch, and contracting with a distillery equipped to facilitate Fugit's boozy necromancy. Troia and his partners settled on a 19th-century formula calling for pure Venezuelan cocoa beans and Mexican vanilla (never Tahitian).
The results are magical. Tempus Fugit crème de cacao will make you forget every "chocolate" cocktail you've ever had. It smells of baking chocolate and tastes of pure cocoa powder, followed quickly by cinnamon, a hint of cardamom, and that beautiful vanilla. It's everything you ever loved in a mug of hot cocoa, presented as a sweet, viscous, low-proof liqueur. And it's delicious enough to rehabilitate disfigured cocktails like the Grasshopper. "When you work with those ingredients the way they used to be, you really start to recognize how balanced and how delicious [the classic] cocktails are," Troia says.
That makes access to extinct and endangered spirits more important than ever, as Ellestad learned firsthand in 2009 while blogging his efforts to make every cocktail in the Savoy Cocktail Book, a classic British guide from 1930.
Fittingly, the best showcase of two Tempus Fugit products is the 20th-Century Cocktail, first published in W.J. Tarling's 1937 Café Royale Cocktail Book: two parts gin to one part each crème de cacao, Kina Lillet (i.e., Kina l'Avion d'Or), and lemon juice, shaken and served up. With Troia's resurrected constituents, the 20th Century is a masterpiece: by turns strong, sweet, herbaceous, and tangy. It absolutely pummels a version made with cheap cacao and quinine-free Lillet.
Start with a new-style gin like St. George's Terroir, and you've got a 20th-century recipe that blends 19th-century liqueurs into a 21st-century base—a potent little reminder that eternal slumber is overrated.
Pour all ingredients into an ice-filled shaker. Shake. Double-strain into a chilled cocktail glass. Garnish with a lime squeeze.
Combine everything but the brandy in a pot. Heat to 160 degrees. Filter through chinois and add brandy. Let stand for at least a day and then enjoy chilled or use wherever "Hercules" is called for.


text:
2015/03 Monumental controversy
Originally published in Centretown Buzz and Spacing Ottawa
by Sarah Gelbard
Markers of history and memorials to the tragedies of the past are part of how we imagine ourselves, both individually and collectively. It is no accident that these monuments are so often supported by arguments for their importance to our national identity (for better or worse).
As residents of Ottawa, these monuments punctuate our daily lives in a way that the majority of the Canadians they represent never experience. Since many Canadians may never see these monuments in person, the decision to place them in the national capital is obviously intended to carry significant symbolic power and meaning. The symbolic gesture, however, is still tied to the reality of the physical site. And so, the question of which site deserves particular attention.
In Ottawa, we are also familiar with the controversies over many of the decisions and interventions of the National Capital Commission over its 50+ year history. I personally believe many of the great contributions of the NCC are frequently overshadowed by some of its questionable actions. While it is a complex issue and debate, the mandate to direct and maintain a long-term vision and plan for the physical manifestation of our capital is not an easy task.
There is an exception to this regular controversy. I think that the intentions that underlie the Parliamentary Precinct and Confederation Boulevard are intentions that most Canadians, understand, respect, and wish to protect. Because of the politically charged nature of the precinct and its symbolic meaning, its design and programming must be vigilant in maintaining the impartial, just, and nonpartisan aspirations in order to represent all Canadians.
It is this statement of values that has led to an important dispute over the approved plans for the National Memorial to Victims of Communism.
source: http://tributetoliberty.ca/memorial-design-gallery
In a public statement on the issue, the Royal Architectural Institute of Canada explains: "The Long Term Vision and Plan (LTVP) for the Parliamentary Precinct and Judicial Precinct evolved through decades of consultations with leading architects, urban designers and landscape architects." The statement continues: "We support the intention for the 'Capital Plateau' and believe it is rooted in enduring ideas about urban design and building a capital city."
The approved plans for the memorial reportedly disregard the recommendations and advice of the National Capital Commission's Advisory Committee on Planning, Design, and Realty. According to an article published by MacLean's, the committee found the site "totally inappropriate". The inappropriateness of the site is a question of both the surrounding context and scale of the memorial.
Located on a lot west of Parliament, between the Supreme Court of Canada, Justice building, and the Library and Archives of Canada building, the site had been earmarked for a future federal building to complete the "judicial triad". In terms of scale, the proposed monument is nearly equal in size to the War Memorial plaza on Elgin, and almost three times the size of the Peacekeeping Memorial on Sussex. While the proposed memorial would almost certainly capitalize on the weight of its surroundings and imposing scale, a respectful public work should not unduly detract meaning and significance in return.
In a letter to deputy minister of Public Works, Chief Justice McLachlin expresses her concerns: "Regrettably, some of the proposed designs for the memorial could send the wrong message within the judicial precinct, unintentionally conveying a sense of bleakness and brutalism that is inconsistent with a space dedicated to the administration of justice". The Chief Justice's comments reflect key architectural design considerations; scale, context, and materiality.
Though it was not the NCC committee's role to select the design, members of the committee have also made public comments that they were not in favour of the selected design. Their statements echo those of members of the jury whose role it was. Shirley Blumberg, a founding partner of KPMB Architects and member of the selection jury, has spoken out against the design, its technical and economic feasibility, and appropriateness to the site.
Architect Barry Padolsky has also been leading local public awareness on this issue. Padolsky has been involved in many local heritage projects, including partnering with KPMB on the restoration of the Museum of Nature. Padolsky has added to his list of concerns the value of the land. The donation of the government land has been announced as a $1 million contribution. Padolsky argues that the land is worth significantly more—anywhere from $16-30 million according to a private evaluation.
Last month, mayor Jim Watson voiced his concerns over the lack of consultation with the city, underlining a common thread among most critics—the lack of transparency, consultation, or meaningful response from the government on this issue.
Toon Dreessen, president of the Ontario Association of Architects, adds: "The irony is that the outcry against this memorial is consistent with democratic ideals and expectations in a free and open society like Canada. The lack of discourse on the location, despite the protests, is antithetical to the democratic process."
For followers of UrbSanity and for people who know me, you know I usually come to the passionate defence of public art, public places, and the sculptural formal beauty of concrete—even when, maybe even especially when, popularly criticized. Yet, these elements are not sufficient on their own. Public design must be respectful and responsible to both the intended users and the community.
The controversy surrounding this site and design demonstrate an inappropriateness that will do disservice to the memory of those meant to be memorialized and the Canadian values meant to be represented.
Construction is scheduled to begin soon with major elements of the memorial to be completed in time for the fall election.
Posted in UrbSanityTagged monument to the victims of communism, NCC, Public Consultation, UrbSanity
2015/01 Brutal heritage
2015/05 Shhh!!! A loud vision for the Central Library


text:
Ко́йккюла (), на местном наречии Ко́йккюля, исторически также  Ко́овакюля — деревня в волости Валга уезда Валгамаа, Эстония.

До реформы местных самоуправлений Эстонии 2017 года входила в состав волости Тахева.

География
Расположена в южной части Эстонии, в 15 километрах к юго-востоку от уездного и волостного центра — города Валга, у шоссе Выру—Мынисте—Валга. Высота над уровнем моря — 78 метров.

В южной части деревни расположено озеро Пюгери, на северо-востоке — часть озера Ахеру-Мудаярв, там же деревня имеет границу с озером Ахеру протяжённостью около полукилометра.

Ранее в деревне работала станция железной дороги Валга—Мынисте—Апе—Алуксне—Гулбене.

Население
По данным переписи населения 2011 года, в деревне проживали 165 человек, из них 149 (90,3 %) — эстонцы.

По состоянию на 1 января 2020 года в деревне насчитывалось 129 жителей: 56 женщин и 73 мужчины; 86 человек трудоспособного возраста (15–64 года), 15 детей в возрасте до 15 лет и 28 человек пенсионного возраста (65 лет и старше).

Численность населения деревни Койккюла:

История
В письменных источниках 1541 года упоминается Koyuenkul ( — податная единица), 1582 года — Koiwekilla, 1627 года — Koywa, 1688 года — Koikyllhoff, 1716 года — Kowa Külla wallast, 1798 года —  Koikül, Kowakülla M.

В 16-ом столетии была основана мыза Койккюла (Koyenkul, , ). В немецком и русскоязычном названиях всегда добавлялось Adsel-, чтобы отличить её от мызы Вана-Койола (Vana-Koiola, Kirrumpäh-Koiküll).

В 1920-х годах, после национализации мызы Койккюла, на её землях возникло поселение, которое в 1977 году получило статус деревни.

В 1922 году в господском особняке мызы была открыта библиотека.

Двухэтажный господский особняк мызы в стиле историзма был разрушен в ходе Второй мировой войны. От мызного комплекса сохранилось несколько хозяйственных построек, в их числе построенная в 18-ом столетии лавка, и богатый различными видами деревьев парк. В нём встречаются пихта сибирская, лиственница европейская, гордовина обыкновенная, большие липы (охват 3,3 метра). Красивы здешние аллеи берёзы бородавчатой. Кленовая и лиственничная аллеи охраняются государством.

В 1977 году, в период кампании по укрупнению деревень, с Койккюла была объединена часть деревни Пюгери.

В годы советской власти Койккюла входила в состав Тахеваского сельсовета. Работали начальная школа-детсад и почтовое отделение (в настоящее время их нет). В деревне находился центр совхоза «Тахе». Его общий земельный фонд составлял 9,8 тысяч гектаров, в том числе сельскохозяйственных угодий (без приусадебных участков) 5,34 тысяч гектаров, средняя численность работников в 1978 году — 335 человек.

Инфраструктура
В деревне есть уличное освещение. Работает продовольственный магазин. Системы центрального теплоснабжения, центрального водоснабжения и канализации отсутствуют.

Услуги медицинской помощи первого уровня, услуги врачей-специалистов и стационарное лечение предоставляет больница города Валга.

В здании бывшей школы-детсада работает Сельский центр Койккюла. В нем есть просторные помещения для проведения различных мероприятий, спортзал, столы для игр в настольный теннис, бильярд, корону, комната рукоделия, где имеются швейные, вышивальные и валяльные машинки и другой инвентарь. В том же здании работает библиотека — филиал Валгаской центральной библиотеки.

Примечания

Населённые пункты Эстонии
Валгамаа


1دانشجوی دکتری علوم و مهندسی آبخیز، دانشکده منابع طبیعی، دانشگاه تهران، ایران.
2دانش آموخته کارشناسی ارشد سنجش ازدور و سیستم اطلاعات جغرافیایی، گرروه سرنجش ازدور و سیستم اطلاعات جغرافیایی، دانشگاه آزاد اسلامی واحد یزد، ایران.
3استادیار گروه مرتع و آبخیزداری، دانشکده کشاورزی و منابع طبیعی، دانشگاه تربت حیدریه، ایران.
یکی از انواع فرآیندهای دامنه‌ای که هرساله موجب خسارات جانی و مالی فراوان در بسیاری از نقاط ایران و جهان می‌شود، پدیده زمین‌لغزش است. تهیه نقشه پهنه‌بندی زمین‌لغزش امکان شناسایی مناطق آسیب پذیر را فرآهم کرده و در برنامه‌های محیطی مدنظر قرار می‌دهد. هدف از این پژوهش پهنه‌بندی خطر زمین‌لغزش در حوزه آبخیز هفشجان واقع در استان چهارمحال و بختیاری با به‌کارگیری روش ارزیابی چندمعیاره مکانی با استفاده از سامانه اطلاعات جغرافیایی (GIS)، نرم‌افزار ILWIS و تکنیک AHP می‌باشد. در این راستا ابتدا با توجه به موقعیت زمین‌لغزش‌های به وقوع پیوسته، مطالعات تطبیقی و نتایج سایر محققان، هشت لایه اطلاعاتی برای این مهم شناسایی شد. سپس درخت‌واره عوامل و محدودیت‌ها در نرم‌افزار ILWIS طراحی گردید، تمامی لایه‌ها استاندارد سازی شده و با استفاده از مدل AHP عوامل مربوطه ارزیابی و تعیین وزن گردید. نهایتاً مدل و نقشه پهنه‌بندی خطر زمین‌لغزش منطقه تهیه و ارائه شد. نتایج نشان می‌دهد که در بین عوامل مؤثر، فاکتورهای فاصله از جاده، فاصله از گسل و فاصله از آبراهه به ترتیب با وزن های 4047/0، 2239/0 و 1302/0 به‌عنوان مهم‌ترین عوامل در ایجاد زمین‌لغزش در منطقه مطالعاتی شناسایی شدند. بر اساس مدل ارائه شده، حدود 32/1 درصد از مساحت حوضه (1013900 مترمربع) دارای خطر وقوع بسیار زیاد و 9 درصد (6909800 مترمربع) دارای خطر وقوع زیاد است. نتایج حاصل از ارزیابی دقت و صحت مدل ارائه شده، روند صعودی شاخص زمین‌لغزش را از پهنه خطر خیلی کم به سمت پهنه خیلی زیاد ترسیم می‌کند و نشان‌دهنده دقت لازم جهت مدل مذکور می‌باشد.
 Ahmadi, H. and Mohamadkhan, S.H. (2001). Investigation of Some Mass Movements in Taleghan Basin, Natural Resources of Iran, 4, 455-464.
 Alijani, B., Ghahroodi, M. and Amir Ahmadi, A. (2007). Landslide Hazard Zonation in north Hillsides Shah Jahan Using GIS (Case Study: Estarkhi Watershed, Shirvan), Journal of Geographical Research, 84, 116-131.
 Alimohamadi, S., Pashaee aval, A., Shataee Joybari, Sh. and Parsaee, L. (2009). Performance Evaluation of Landslide Hazard Models in Syed Kalate Ramian watershed, Journal of Soil and Water Conservation Research, 16(1), 59-78.
 Cimren, E., Catay, B. and Budak, E. (2007). Development of a machine tool selection system using AHP. International Journal of Advanced Manufacturing Technology, 35, 363–376.
 Dey, P.K. and Ramcharan, E.K. (2000). Analytic hierarchy process helps select site for limestone quarry expansion in Barbados, Journal of Environmental Management. 88, 1384–1395.
 Emami, S. N. and Ghayomian, J. (2003). Research on the Mechanism of Landslides on Hillside Debris (Case Study: Afsarabad Landslide, Chaharmahal-o-Bakhtiari). 3th Conference on Engineering Geology and Environment,Hamedan, Iran, 26-33.
 Esmali, A. and Ahmadi, H. (2003). Using GIS & RS in Mass Movements Hazard Zonation -A Case Study in Germichay Watershed, Ardebil, Iran. Map India Conference Disaster Management.1-5.
 Feiznia, S., Kalarostaghi, A., Ahmadi, H. and Safaee, M. (2004). Checking effective Factors to the occurrence of landslides and landslide hazard zonation (Case Study: Shirinrood Watershed), Iranian Journal of Natural Resources, 57(1), 3-22.
 Ghanbarzade, H. and Behniafar, A. (2009). Landslide hazard zonation in the Calshoor catchment Heights (Neishaboor City), Journal of Geographical Space, 28, 103-123.
 Ghodsipoor, S. H. (2009). Analytical Hierarchy Process, 7th Edition, University of AmirKabir press, Tehran. September 9-11. 224 Pages.
 Hattanji, T. and Moriwaki, H. (2009). Morphometric analysis of relic landslides using detailed landslide distribution maps: Implications for forecasting travel distance of future landslides, Journal of Geomorphology, 103, 447-454.
 Lopez H.J. and Zink J.A. (1991). GIS-assisted modelling of soil-induced mass movement hazards: a case study of the upper Coello river basin, Tolima, Colombia. ITC Journal. 4, 202–220.
 Moghimi, E., Alavi Panah, S.K. and Jafari, T. (2008). Assessment and zonation effective Factors to the occurrence of landslides for Aladagh northern slopes (Case Study: Chenaran watershed, North Khorasan), Journal of Geographical Research, 64, 53-75.
 Mosaffaee, J., Onagh, M., Mesdaghi, M. and Shariat Jafari, M. (2009). Performance comparison of experimental and statistical modeling of landslide hazard zonation (Case Study: Alamootrood watershed), Journal of Soil and Water Conservation, 4, 43-61.
 Nefeslioglu, H.A., Duman, T.Y. and Durmaz, S. (2008). Landslide susceptibility mapping for a part of tectonic Kelkit Valley (Eastern Black Sea region of Turkey), Journal of Geomorphology, 94, 401-418.
 Ownegh, M. (2004). Assessing the Application of Australian Landslide databases for hazard management, 13th International Soil Conservation Organization Conference - Brisbane, July, 1-5.
 Pradhan, B. (2011). An Assessment of the Use of an Advanced Neural Network Model with Five Different Training Strategies for the Preparation of Landslide Susceptibility Maps, Journal of Data Science. 9, 65-81.
 Ramesht, M. S. (1996). Application of Geomorphology in National Regional Economic Planning, 1st Edition, University of Esfahan press. 392 Pages.
 Saaty, T.L. (1986). Axiomatic foundation of analytical hierarchy process, Journal of Management science. 31, 841-855.
 Shadfar, S., Yamani, M., Ghodosi, J. and Ghayomian, J. (2007). Landslide Hazard Zonation Using Analytical Hierarchy Process (Case Study: Chalekrood Watershed, Tonekabon), Journal of Research and Construction in Natural Resources, 75, 117-126.
 Vahidnia, M. H., Alesheikh, A. A., Alimohammadi, A. and Hosseinali, F. (2009). Landslide Hazard Zonation Using Quantitative Methods in GIS, International Journal of Civil Engineering, 7, 176-189.
 Van Westen, C.J., Rengers, N., Terline, M.T.J., and Soeters, R. (1997). Predication of the Occurrence of slope Instability Phenomena through GIS-Based Zonation, Journal of Geologisches Rundschau, 86, 404-414.
 Yalcin, A. (2008). GIS-based landslide susceptibility mapping using analytical hierarchy Process and bivariate statistics in Ardesen (Turkey): Comparisons of results and confirmations, Journal of Catena, 72, 1-12.
 Yoshimatsu, H. and Abe, S. (2006). A review of landslide hazards in Japan and assessment of their Susceptibility using an analytical hierarchic process (AHP) method, Journal of Landslides, 3, 149-158.


I'm a passionate music enthusiast pursuing a long term career in music production. Every one has that moment in life where they decide to chase their dreams or let them slip away, I decided to start chasing. I know it may be a long journey but I am prepared for every obstacle that might stand in my way. Being a father of 3 amazing boys I have to show them that if you try and put the effort forth you can accomplish your dreams. Creating my own music thus far has been an amazing experience. Its given me a boost of confidents allowing me to just flow with the sounds that play in my mind, Random moments I start taping on things can actually become a reality. I won't stop till I reach my goals! Join me on my journey and follow the progress hard work, dedication and a good team can lead to greatness.
My goal is to make enough money to purchase new equipment for my instrumentals.


Lil and I went out to the cabin to spend Valentine's Day together. In the almost 6 years we have been together she had never gone out. She really enjoyed it. Here are some pictures she took of me bringing in my very first Black Drum. Measured about 40 inches and fought with me for about 45 minutes.