﻿document.write("<script src='/ruukkiinternet/js/AC_OETags.js' type='text/javascript' language='javascript'></script>");

// item list functions
jQuery(function() {

    var itemList = jQuery('.itemList');
    var pageId = jQuery('.pageId').attr('content');
    var contentItemId = jQuery('meta[name=pageId]').attr('content'); 
    var itemsPerPage = jQuery('.itemCount').attr('content');
    var listType = jQuery('.listType').attr('content');
    var pagerLinkId = jQuery('.pagerLinkId').attr('content');


    // handle paging click
    jQuery('.' + pagerLinkId).click(function() {
        if (pagerLinkId != null) {
            var pageNumber = jQuery(this).attr('pageNumber');
            var filter = jQuery(this).attr('filterId');

            // make json request
            getItems(pageNumber, pageId, itemsPerPage, filter, listType);
        }
    });

    // handle filter removal ("all items")
    jQuery('#allItems').click(function() {
        var pageNumber = 0;
        var filter = "";

        // make json request
        getItems(pageNumber, pageId, itemsPerPage, filter, listType);

        // handle the css of the filter links
        jQuery('.navigation li').removeClass("selected");
        jQuery(this).parent().addClass("selected");
        return false;
    });

    // validator on change event
    jQuery('.form :text').change(function () {
        FormValidatorHandler();
    });
    jQuery('.form textarea').change(function () {
        FormValidatorHandler();
    });
    jQuery('.form select').change(function () {
        FormValidatorHandler();
    });

});

// set elements to equal height
function EqualHeight(group) {
    var tallest = 0;
    group.each(function () {
        var thisHeight = jQuery(this).height();
        if (thisHeight > tallest) {
            tallest = thisHeight;
        }
    });
    group.height(tallest);
}


function checkSoleDdl(ddl) {
    var ddlLength = ddl.find('option').length;
    if (ddlLength == 2) {
        ddl.find('option:last').attr("selected", "true");
    }
}


// get the item list through json request
function getReferenceCountries(pageId, filterId, ddl, userSelected) {
    jQuery.ajax({
        type: "POST",
        url: "/RuukkiInternet/layouts/ajax.aspx/GetFilteredReferenceCountries",
        contentType: "application/json; charset=utf-8",
        data: "{pageGuid:'" + pageId + "', filterGuid:'" + filterId + "'}",
        dataType: "json",
        success: function (msg) {
            var filters = (typeof msg.d) == 'string' ? eval('(' + msg.d + ')') : msg.d;
            RenderDropDownList(filters, filterId, ddl);
            if (!userSelected) {
                checkSoleDdl(ddl);
            }
        },
        error: AjaxFailed
    });

}

// get the item list through json request
function getReferenceProducts(pageId, filterId, ddl, userSelected) {
    jQuery.ajax({
        type: "POST",
        url: "/RuukkiInternet/layouts/ajax.aspx/GetFilteredReferenceProducts",
        contentType: "application/json; charset=utf-8",
        data: "{pageGuid:'" + pageId + "', filterGuid:'" + filterId + "'}",
        dataType: "json",
        success: function (msg) {
            var filters = (typeof msg.d) == 'string' ? eval('(' + msg.d + ')') : msg.d;
            RenderDropDownList(filters, filterId, ddl);
            if (!userSelected) {
                checkSoleDdl(ddl);
            }
        },
        error: AjaxFailed
    });
}

// Render dropdownlist
function RenderDropDownList(filters, filterId, ddl) {

    var check = IsGuidAllreadyInTheList(ddl.val(), filters, filterId);

    if (check == false) {
        ddl.find('option').remove();

        for (var i = 0; i < filters.length; i++) {
            ddl.append(jQuery('<option></option>').val(filters[i].ID).html(filters[i].Name));
        }

        //select if only one item (+ "select all")
       /*
       
        if (typeof (ddl.val(1)) != "undefined") {
            
            ddl.attr('selectedIndex', 1);
        }*/
    }
}

// Check if product guid is already in the dropdownlist
function IsGuidAllreadyInTheList(currentValue, filters, filterId) {

    var check = false;
    for (var q = 0; q < filters.length; q++) {
        // filter id is 'All' draw ddl
        if (filterId == 'All') {
            check = false;
            break;
        }
        // selected value founds in the filters array and selected value cannot be 'All'
        // true
        if (currentValue == filters[q].ID && currentValue != 'All') {
            check = true;
            break;
        }
    }
    return check;
}

// get the item list through json request
function getNewsItems(pageId, itemsPerPage, filter, listType, filterTemplateName) {
    jQuery.ajax({
        type: "POST",
        url: "/RuukkiInternet/layouts/ajax.aspx/getItemsByFilterAndTemplate",
        contentType: "application/json; charset=utf-8",
        data: "{pageGuid:'" + pageId + "', itemsPerPage:'" + itemsPerPage + "', filter:'" + filter + "', filterTemplateName:'" + filterTemplateName + "'}",
        dataType: "json",
        success: function (msg) {
            var items = (typeof msg.d) == 'string' ? eval('(' + msg.d + ')') : msg.d;

            jQuery('.itemList').html('<div class="itemList"></div>');
            var newHtml = getListHtml(items, listType);
            jQuery('.itemList').html(newHtml);

        },
        error: AjaxFailed
    });

}

// get the item list through json request
function getItems(pageNumber, pageId, itemsPerPage, filter, listType) {
    jQuery.ajax({
        type: "POST",
        url: "/RuukkiInternet/layouts/ajax.aspx/getPagedItemsByFilter",
        contentType: "application/json; charset=utf-8",
        data: "{pageNumber:'" + pageNumber + "', pageGuid:'" + pageId + "', itemsPerPage:'" + itemsPerPage + "', filter:'" + filter + "'}",
        dataType: "json",
        success: function (msg) {
            var items = (typeof msg.d) == 'string' ? eval('(' + msg.d + ')') : msg.d;
            jQuery('.itemList').html('<div class="itemList"></div>');
            var newHtml = getListHtml(items, listType);
            jQuery('.itemList').html(newHtml);
        },
        error: AjaxFailed
    });

}

String.prototype.startsWith = function (str)
{ return (this.match("^" + str) == str) }

function getContacts(role, country, mainGroupId, subGroupId, mapText, phoneText, mobilePhoneText, notFoundText, language, itemId) {
    jQuery.ajax({
        type: "POST",
        url: "/RuukkiInternet/layouts/ajax.aspx/GetContacts",
        contentType: "application/json; charset=utf-8",
        data: "{role:'" + role + "', country:'" + country + "', mainGroupId:'" + mainGroupId + "', subGroupId:'" + subGroupId + "', itemId:'" + itemId + "'}",
        dataType: "json",
        success: function (msg) {
            var items = (typeof msg.d) == 'string' ? eval('(' + msg.d + ')') : msg.d;
            var newHtml = '';
            var colorBoxRel = "relMapLink";
            jQuery('#personResults').html('<div id="personResults"></div>');

            if (items.length == 1 && typeof (items[0].Freetext) != "undefined" && items[0].Freetext != null && items[0].Freetext != "") {
                newHtml += '<div class="contact"><p><strong>' + items[0].Freetext + '</strong></p></div>';
            }
            else {

                for (var i = 0; i < items.length; i++) {
                    var firstname = items[i].Fields["Firstname"];
                    var lastname = items[i].Fields["Lastname"];
                    var jobtitle = items[i].Fields["Job title"];
                    var image = items[i].Image;
                    var phone = items[i].Fields["Phone"];
                    var mobilephone = items[i].Fields["Mobile"];
                    var description = items[i].Fields["Description"];
                    var office = items[i].Office;
                    var showMap = items[i].ShowMap;

                    var streetAddress = "";
                    var city = "";
                    var country = "";
                    var postalCode = "";

                    var officePoBoxNumber = "";
                    var officePoBoxOfficeNumber = "";
                    var officePoBoxCity = "";

                    // check if office is selected, use office location if possible
                    if (typeof (office) != "undefined" && office != "") {
                        streetAddress = items[i].OfficeStreetAddress;
                        city = items[i].OfficeCity;
                        country = items[i].OfficeCountry;
                        postalCode = items[i].OfficePostalCode;
                        officePoBoxNumber = items[i].OfficePoBoxNumber;
                        officePoBoxOfficeNumber = items[i].OfficePoBoxOfficeNumber;
                        officePoBoxCity = items[i].OfficePoBoxCity;
                    }
                    else {
                        streetAddress = items[i].Fields["Street address"];
                        city = items[i].Fields["City"];
                        country = items[i].Country;
                        postalCode = items[i].Fields["Postal code"];
                    }

                    var addressstring = "";

                    if (typeof (streetAddress) != "undefined" && streetAddress != "") { addressstring += streetAddress; }
                    if (typeof (postalCode) != "undefined" && postalCode != "") { addressstring += ", " + postalCode; }
                    if (typeof (city) != "undefined" && city != "") { addressstring += ", " + city; }
                    if (typeof (country) != "undefined" && country != "") { addressstring += ", " + country; }

                    if (typeof (jobtitle) == "undefined") jobtitle = "";

                    // create google maps link
                    var googleMapsLink = items[i].Googlemapslink;

                    if (!(typeof (firstname) == "undefined" && typeof (lastname) == "undefined")) {
                        newHtml += '<div class="contact">';
                        if (typeof (image) != "undefined") { newHtml += image; }
                        newHtml += '<p><strong>' + firstname + ' ' + lastname + '</strong> ' + jobtitle + '<br/>';
                        if (typeof (description) != "undefined" && description != "") {
                            if (!(description.startsWith("<p>"))) {
                                description = "<p>" + description + "</p>";
                            }
                            newHtml += description;
                        }

                        if (addressstring != "") {
                            // create the google maps link opened to colorbox layer
                            newHtml += addressstring + " ";
                            if (typeof (showMap) != "undefined" && showMap != "") {
                                newHtml += ' <span>|</span> <a href="' + googleMapsLink + '" class="' + colorBoxRel + '">' + mapText + '</a>';
                            }
                            newHtml += '<br/>';
                        }
                        if (typeof (phone) != "undefined" && phone != "") { newHtml += phoneText + ' ' + phone + '<br />'; }
                        if (typeof (mobilephone) != "undefined" && mobilephone != "") { newHtml += mobilePhoneText + ' ' + mobilephone; }
                        newHtml += '</p></div>';
                    }
                }
            }
            jQuery('#personResults').html(newHtml);
        },
        error: AjaxFailed
    });
}

String.format = function (text) {
    //check if there are two arguments in the arguments list
    if (arguments.length <= 1) {
        //if there are not 2 or more arguments there’s nothing to replace
        //just return the original text
        return text;
    }

    //decrement to move to the second argument in the array
    var tokenCount = arguments.length - 2;
    for (var token = 0; token <= tokenCount; token++) {
        //iterate through the tokens and replace their placeholders from the original text in order
        text = text.replace(new RegExp("\\{" + token + "\\}", "gi"), arguments[token + 1]);
    }
    return text;
};

function getQuerystring(key, default_) {
    if (default_ == null) default_ = "";
    key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regex = new RegExp("[\\?&]" + key + "=([^&#]*)");
    var qs = regex.exec(window.location.href);
    if (qs == null)
        return default_;
    else
        return qs[1];
}

// get the item list through json request
function getContent(pageId) {
    jQuery.ajax({
        type: "POST",
        url: "/RuukkiInternet/layouts/ajax.aspx/GetContent",
        contentType: "application/json; charset=utf-8",
        data: "{pageGuid:'" + pageId + "'}",
        dataType: "json",
        success: function(msg) {
            var item = (typeof msg.d) == 'string' ? eval('(' + msg.d + ')') : msg.d;

            jQuery('.contentDiv').html('<div class="contentDiv"></div>');
            var newHtml = getHtml(item);
            jQuery('.contentDiv').html(newHtml);


        },
        error: AjaxFailed
    });

}
// Modify this function to set correct presentation to the item list
// <remarks>Some of the fields of item are exposed as their own properties,
// but you can access all the fields of the item by item.Fields['FieldName']</remarks>
function getListHtml(items, listType) {

    var newHtml = '';
    switch (listType) {
        case 'latest':
            for (var i = 0; i < items.length; i++) {
                newHtml += '<p class="news-item">' + items[i].PublicationDate + '<br/><a href="' + items[i].Url + '">' + items[i].Title + '</a></p>';
            }
            break;

        case 'news':
            newHtml += '<div class="news">';
            if (items != null) {
                for (var i = 0; i < items.length; i++) {
                    newHtml += '<ul>';
                    newHtml += '<li class="date">' + items[i].PublicationDate + '</li>';
                    newHtml += '<li><a href="' + items[i].Url + '">' + items[i].Title + '</a></li>';
                    newHtml += '</ul>';
                }
            }
            newHtml += '</div>';
            break;
    }

    return newHtml;

}

// Modify this function to set correct presentation to the item
// <remarks>Some of the fields of item are exposed as their own properties,
// but you can access all the fields of the item by item.Fields['FieldName']</remarks>
function getHtml(item) {
    var newHtml = '';
    newHtml += '<h1>' + item.Title + '</h1>';
    newHtml += '<p>' + item.Content + '</p>';
    return newHtml;
}

function getProductsDropdown(pageId, ddl) {
    jQuery.ajax({
        type: "POST",
        url: "/RuukkiInternet/layouts/ajax.aspx/getProducts",
        contentType: "application/json; charset=utf-8",
        data: "{pageGuid:'" + pageId + "'}",
        dataType: "json",
        success: function (msg) {
            var items = (typeof msg.d) == 'string' ? eval('(' + msg.d + ')') : msg.d;
            ddl.find('option').remove();

            for (var i = 0; i < items.length; i++) {
                ddl.append(jQuery('<option></option>').val(items[i].ID).html(items[i].Name));
            }
            //select if only one item (+ "select all")
            if (items.length == 2) {

             
                if (typeof (ddl.val(1)) != "undefined") {
                  
                    ddl.attr('selectedIndex', 1);
                }
            }

        },
        error: AjaxFailed
    });
}

// handles the paging buttons
function getPager(pageNumber, pageId, itemsPerPage, filter) {
    jQuery.ajax({
        type: "POST",
        url: "/RuukkiInternet/layouts/ajax.aspx/getPagerSetup",
        contentType: "application/json; charset=utf-8",
        data: "{pageNumber:'" + pageNumber + "', pageGuid:'" + pageId + "', itemsPerPage:'" + itemsPerPage + "', filter:'" + filter + "'}",
        dataType: "json",
        success: function(msg) {
            var settings = (typeof msg.d) == 'string' ? eval('(' + msg.d + ')') : msg.d;

            var isFirst = settings[0];
            var isLast = settings[1];
            var usePaging = settings[2]

            var currentPrevImgSrc = jQuery('#previousImg').attr('src');
            var currentNextImgSrc = jQuery('#nextImg').attr('src');
            var newPrevImgSrc = '';
            var newNextImgSrc = '';

            var currentPreviousPageNumber = jQuery('#previousNews').attr('pageNumber');
            var previousPageNumber = --pageNumber;
            jQuery('#previousNews').attr('pageNumber', previousPageNumber);
            var currentNextPageNumber = jQuery('#nextNews').attr('pageNumber');
            var nextPageNumber = ++pageNumber + 1;
            jQuery('#nextNews').attr('pageNumber', nextPageNumber);

            // set filter if available
            jQuery('#previousNews').attr('filterId', filter);
            jQuery('#nextNews').attr('filterId', filter);

            // set both buttons active first
            newPrevImgSrc = currentPrevImgSrc.replace('disabled', 'active');
            jQuery('#previousImg').attr({ src: newPrevImgSrc });
            newNextImgSrc = currentNextImgSrc.replace('disabled', 'active');
            jQuery('#nextImg').attr({ src: newNextImgSrc });

            // set previous or next button disabled if we're on first or last page
            if (isFirst) {
                newPrevImgSrc = currentPrevImgSrc.replace('active', 'disabled');
                jQuery('#previousImg').attr({ src: newPrevImgSrc });
                jQuery('#previousNews').attr({ 'pageNumber': currentPreviousPageNumber });
            }
            if (isLast) {
                newNextImgSrc = currentNextImgSrc.replace('active', 'disabled');
                jQuery('#nextImg').attr({ src: newNextImgSrc });
                jQuery('#nextNews').attr({ 'pageNumber': currentNextPageNumber });
                if (!usePaging) {
                    // disable the link by giving it the page number of the previous page
                    jQuery('#nextNews').attr({ 'pageNumber': currentPreviousPageNumber });
                }
            }

        },
        error: AjaxFailed
    });
};


function loginUser(username, password, persists, errorText) {
    jQuery.ajax({
        type: "POST",
        url: "/RuukkiInternet/layouts/ajax.aspx/LoginUser",
        contentType: "application/json; charset=utf-8",
        data: "{username:'" + username + "', password:'" + password + "', persists:'" + persists + "'}",
        dataType: "json",
        success: function (msg) {
            if (msg.d == true) {
                location.reload(true);
            }
            else {
                jQuery('#loadingpic').html("<div id=\"loadingpic\">");
                jQuery('#loadingpic').html('<span style="color:red;">' + errorText + '</span>');
            }
        },
        error: AjaxFailed
    });
}

// get the News article through json request
function getBoardMember(personID) {


    jQuery.ajax({
        type: "POST",
        url: "/RuukkiInternet/layouts/ajax.aspx/GetContent",
        contentType: "application/json; charset=utf-8",
        data: "{pageGuid:'" + personID + "'}",
        dataType: "json",
        success: function (msg) {
            var item = (typeof msg.d) == 'string' ? eval('(' + msg.d + ')') : msg.d;

            var newHtml = '';
            if (item != null) {

                newHtml += '<div class="person-layer">';
                if (typeof (item.Fields) != "undefined") {

                    if (typeof (item.Fields['Person large image']) != "undefined") {
                        newHtml += '<div class="person-image">';
                        newHtml += item.Fields['Person large image'];
                        newHtml += "</div>"
                    }

                    newHtml += '<div class="person-text">';

                    if (typeof (item.Fields['Name']) != "undefined") {
                        newHtml += '<h2>';
                        newHtml += item.Fields['Name'];
                        newHtml += '</h2>';
                    }

                    if (typeof (item.Fields['CV data']) != "undefined") {
                        newHtml += '<p>';
                        newHtml += item.Fields['CV data'];
                        newHtml += '</p>';
                    }
                    newHtml += '</div>';
                }
                newHtml += '</div>';

            }

            jQuery('#cvdata').html(newHtml);

        },
        error: AjaxFailed
    });
}
// 
function AjaxFailed(result) {
    alert('AJAX REQUEST FAILED: ' + result.status + ' ' + result.statusText + ' ' + result.d);
}

// end item list functions



function renderFlash(swfPath, swfWidth, swfHeight, swfMajorVersion, swfMinorVersion, swfRevision, swfFlashvars, isEditMode, flashInstance, swfBgColor) {
    var hasRequestedVersion = DetectFlashVer(swfMajorVersion, swfMinorVersion, swfRevision);

    if (hasRequestedVersion) {
        var runFlash = AC_FL_RunContent(
        "src", swfPath,
        "width", swfWidth,
        "height", swfHeight,
        "menu", "false",
        "align", "middle",
        "id", ("teaserFlash" + flashInstance++),
        "quality", "high",
        "bgcolor", swfBgColor,
        "name", ("teaserFlash" + flashInstance++),
        "allowScriptAccess", "always",
        "wmode", "opaque",
        "type", "application/x-shockwave-flash",
        'codebase', 'http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab',
        "pluginspage", "http://www.adobe.com/go/getflashplayer",
        'FlashVars', swfFlashvars
        );

        var layer = jQuery('#imagecontent' + flashInstance);

        if (isEditMode == '1') {
            layer.show();
        } else {
            layer.hide();
        }
    }
    else {
        var layer = jQuery('#imagecontent' + flashInstance);
        layer.show();
    }
}

function renderConfiguratorFlash(swfPath, swfWidth, swfHeight, swfMajorVersion, swfMinorVersion, swfRevision, swfFlashvars, isEditMode, flashInstance, swfBgColor) {
    var hasRequestedVersion = DetectFlashVer(swfMajorVersion, swfMinorVersion, swfRevision);

    if (hasRequestedVersion) {
        var runFlash = AC_FL_RunContent(
        "src", swfPath,
        "width", swfWidth,
        "height", swfHeight,
        "menu", "false",
        "align", "middle",
        "id", ("teaserFlash" + flashInstance++),
        "quality", "high",
        "bgcolor", swfBgColor,
        "name", ("teaserFlash" + flashInstance++),
        "allowScriptAccess", "always",
        "wmode", "window",
        "type", "application/x-shockwave-flash",
        'codebase', 'http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab',
        "pluginspage", "http://www.adobe.com/go/getflashplayer",
        'FlashVars', swfFlashvars
        );

        var layer = jQuery('#imagecontent' + flashInstance);

        if (isEditMode == '1') {
            layer.show();
        } else {
            layer.hide();
        }
    }
    else {
        var layer = jQuery('#imagecontent' + flashInstance);
        layer.show();
    }
}

function FormValidatorHandler() {
    jQuery('.error').html('<p class="error"></p>').empty();
    var comparedID;
    for (i = 0; i < Page_Validators.length; i++) {
        var inputControl = document.getElementById(Page_Validators[i].controltovalidate);
        var inputID = inputControl.id;
        var inputType = inputControl.type;
        var errorMessage = Page_Validators[i].errormessage;

        if (!Page_Validators[i].isvalid) {
            comparedID = inputID;

            if (Page_Validators[i].errormessage != undefined) {
                jQuery('.error').append(errorMessage).append(' ');
            }
            switch (inputType) {
                case 'text':
                    jQuery(inputControl).parent().parent().parent().prev().css('color', 'red');
                case 'textarea':
                    jQuery(inputControl).parent().parent().prev().css('color', 'red');
                case 'select-one':
                    if (jQuery(inputControl).hasClass('combobox')) {
                        jQuery(inputControl).parent().parent().parent().prev().css('color', 'red');
                    }
                    else {
                        jQuery(inputControl).parent().prev().css('color', 'red');
                    }
            }
        }
        // Do not change styles if mentioned control is already flagged as invalid
        else if (inputID != comparedID) {
            switch (inputType) {
                case 'text':
                    jQuery(inputControl).parent().parent().parent().prev().css('color', '');
                case 'textarea':
                    jQuery(inputControl).parent().parent().prev().css('color', '');
                case 'select-one':
                    if (jQuery(inputControl).hasClass('combobox')) {
                        jQuery(inputControl).parent().parent().parent().prev().css('color', '');
                    }
                    else {
                        jQuery(inputControl).parent().prev().css('color', '');
                    }
            }
        }
    }
}

// content blocks
function accordion(id, openText, closeText) {

    jQuery('#' + id + ' div.content').hide();
    jQuery("#" + id + " div.title").click(function () {

        if (!jQuery(this).next('div.content').is(':visible')) {
            jQuery('#' + id + ' div.content').slideUp(300);
            jQuery('#' + id).find('a#accordion').addClass('close').removeClass('open').text(openText);
        }
        jQuery(this).next('div.content').animate({ opacity: 'toggle', height: 'toggle' }, "fast");
        jQuery(this).find('a#accordion').text(jQuery(this).find('a#accordion').text() == openText ? closeText : openText);
        jQuery(this).find('a#accordion').is('.close') ? jQuery(this).find('a#accordion').addClass('open').removeClass('close') : jQuery(this).find('a#accordion').addClass('close').removeClass('open')
        return false;
    });
}

