Натяжные потолки в Добруше - выезд на замер бесплатно!


%

Акция в подарок светильники Акция действует до 08 11 2021

На замер натяжного потолка в Добруше компания Метр Плюс выезжает абсолютно бесплатно. После открытия филиала нашей компании в Гомеле появилась необходимость в доставке комплектующих и полотен, а также в решении других организационных вопросов.

В связи с этим в течение недели наши сотрудники не однократно выезжают в сторону Буда-Кошелево поэтому было принято решение организовать бесплатный выезд на район в данном направлении. Теперь жители Добруша и Добрушского района могут заказать натяжные потолки в нашей компании не переплачивая за транспортные расходы. Наша компания предлагает пожалуй самые низкие цены в Гомельской области сохраняя непревзойденное качество конечного продукта. На все полотна распространяется гарантия 25 лет. А также их можно приобрести в рассрочку беспроцетов от нашей компании без участия банка.

Виды потолков

Мы дорого ценим доверие клиентов нашей компании, поэтому регулярно пополняем представленный каталог натяжными полотнами от известных надежных производителей. Все они производятся из негорючих качественных материалов, что подтверждено наличием всех необходимых сертификатов. Здесь Вы в любой момент сможете приобрести полотна с такими видами фактур, как:

  1. Матовые, поверхность которых схожа с оштукатуренным идеально ровным покрытием, окрашенным в естественные приглушенные оттенки.
  2. Сатиновые, отличительной чертой которых является присутствие сияющего мягкого блеска, становящегося заметным при попадании на поверхность потолка света.
  3. Глянцевые, которые обладают зеркальными свойствами. Подобные отражающие свойства способствуют зрительному расширению помещения, что особенно актуально при оформлении комнат небольшой площади.

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


Прайс-лист: Цены на натяжные потолки в Добруше от 02 08 2021

Полотно Ед. измерения Цена (р.)
Глянцевое кв.м. от 14
Матовое кв.м. от 14
Сатин кв.м. от 14
Фактурное кв.м. от 38.88

Многоуровневые потолки в Добруше

Многоуровневый натяжной потолок поможет спрятать системы вентиляции и кондиционирования и скрыть дефекты базового потолка.

Подробнее
62.2р.
м.п.

Многоуровневые с подсветкой в Добруше

Один из самых популярных видов натяжных потолков. Большой выбор готовых конструкций, фактур и вариантов подсветки.

Подробнее
77.75р.
м.п.

Парящие линии в Добруше

Готовые конструкции из световых линий любой сложности. Парящие линии могут выступать как в роли декоративной подсветки так и послужить основным освещением.

Подробнее
38.88р.
м.п.

Фотопечать в Добруше

При нанесении на потолок, мы используем технологию экосольвентной печати. Её применение позволяет добиться максимально качества оттиска.

Подробнее
77.75р.
м.кв.

Резные потолки в Добруше

Натяжные потолки нового поколения с декоративными вырезами, которые могут быть в виде отдельных фигур и узоров либо распространяться на всю площадь полотна.

Подробнее
31.1р.
м.п.

С контурной подсветкой в Добруше

Контурные натяжные потолки представляют собой линию шириной 35 мм подсвечивающую периметр. При выключении светодиодной ленты она не видна.

Подробнее
31.1р.
м.п.

Парящий потолок в Добруше

Эффект «парящего» потолка создается с использованием светодиодной ленты, которая заправляется вместе с полотном в специальный профиль, подсвечивая потолок изнутри.

Подробнее
31.1р.
м.п.

Ниши для светильников в Добруше

В ниши можно монтировать светильники на штанге или трековые системы. Ширина ниши фиксированная – равна внутренней ширине самого профиля 8 см.

Заказать
93.3р.
м.п.

Тканевые потолки в Добруше

Установка тканевого натяжного потолка не чем не отличается от традиционного монтажа, единственная сложность правильно расчитать материал и равномерно его натянуть.

Подробнее
54.43р.
м.кв.

Комбинированные потолки в Добруше

Мечтаете о неповторимом сочетании вкуса, цвета и стиля в Вашем интерьере, предлагаем комбинацию цветов на натяжном потолке . Дайте свободу вашей фантазии.

Подробнее
23.33р.
м.п.

Звездное небо в Добруше

Хотите ложиться спать, наблюдая за звездами? Наша, компания поможет вам в этом. Натяжные потолки «Звездное небо» в точности воссоздают красоту ночного неба.

Подробнее
38.88р.
м.п.

С теневым профилем в Добруше

Потолки с теневым профилем не предусматривают декоративную вставку, вместо нее теневой профиль создает аккуратный зазор в 3 мм между стеной и натяжным потолком.

Подробнее
7.78р.
м.п.
Услуга Ед. Цена (р.)
Установка люстры ед. от 10.89
Установка люстры не в день монтажа ед. от 31.1
Установка точечного светильника ед. от 10.89
Окантовка труб ед. от 6.22
Вставка (цвет белый) м.п. 3.11
Вставка цветная ( 15 цветов ) м.п. 4.04
Установка вставки не в день монтажа м.п. 3.89
Монтаж потолочного карниза м.п. 15.55
Крепление бруса м.п. 15.55
Установка скрытого карниза м.п. 23.33
Установка вентиляционной решетки м.п. 7.78
Установка пожарных датчиков м.п. 15.55
Криволинейный участок м.п. 23.33
Внутренний вырез м.п. 23.33
Комбинирование цветов через криволинейный шов м.п. 40.43
Комбинирование цветов через прямой шов % 10
Сверление по плитке м.п. 4.67
Сверление по плитке ГРЭС м.п. 12.44
Монтаж потолка на высоте более 3м м.п. 4.67
Демонтаж потолка м.п. 15.55
Слив воды м.п. 54.43


Если Вы не нашли интересующую стоимость товаров или услуг, Вы всегда можете уточнить ее у менеджера нашей компании. Мы всегда рады Вас слышать!



Заказать натяжной потолок в Добруше – по выгодной стоимости!

На протяжении долгих лет своей деятельности, наша компания осуществляет установку натяжных конструкций в Добруше достойного качества. На все виды выполняемых услуг, мы предоставляем официальную гарантию и всегда готовы предложить наиболее выгодные условия сотрудничества.


Выбираем освещение

  1. Световые линии со светодиодной лентой, которые могут представлять собой как прямые или зигзагообразные линии, так и образовывать различные геометрические фигуры.
  2. Точечные встроенные или накладные светильники, которые широко используются не только с целью организации освещения, но и для реализации различных световых эффектов.
  3. Центральная люстра или настенные бра, выгодно дополняющие своим присутствием интерьер, который оформлен в любом классическом стиле.
  4. Ультрасовременные спот и трековые системы, удобство использования которых заключается в возможности самостоятельно изменять направление светового потока в нужную часть помещения.
  5. Контурная подсветка, размещение которой осуществляется по периметру всей комнаты на стыке, образующемся между поверхностями стен и потолка.

Почему стоит сотрудничать с нами?

  1. Официальная гарантия на все виды предоставленных услуг.
  2. Отсутствие строительного мусора и пыли в процессе выполнения работ.
  3. Использование в работе материалов исключительного высокого качества.
  4. Выгодные скидки для пенсионеров и новосёлов.
  5. Широкий выбор полотен различных фактур и расцветок.

Как мы работаем?

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


Примеры установленых потолков в Добруше со стоимостью

Натяжной потолок с парящими линиями в кухню в Добруше

Натяжной потолок с парящими линиями в кухню в Добруше

933 р.
скидка 160 р.
  • Площадь
    14 м.кв.
  • Адрес
    Вишнёвая
  • Фактура
    глянец
  • Срок выполнения
    2.5 ч
Двухуровневый цветной натяжной потолок на кухню в Добруше

Двухуровневый цветной натяжной потолок на кухню в Добруше

1088.5 р.
скидка 160 р.
  • Площадь
    24.88 м.кв.
  • Адрес
    Первомайская
  • Фактура
    сатин
  • Срок выполнения
    2.5 ч
Натяжной потолок с парящими полосами для кухни в Добруше

Натяжной потолок с парящими полосами для кухни в Добруше

1321.75 р.
скидка 230 р.
  • Площадь
    15.55 м.кв.
  • Адрес
    Северная
  • Фактура
    глянец
  • Срок выполнения
    2.5 ч
Натяжной потолок с парящими линиями в кухне в Добруше

Натяжной потолок с парящими линиями в кухне в Добруше

933 р.
скидка 160 р.
  • Площадь
    15.55 м.кв.
  • Адрес
    Московская
  • Фактура
    глянец
  • Срок выполнения
    2.5 ч
Натяжной потолок с точечными светильниками в спальню в Добруше

Натяжной потолок с точечными светильниками в спальню в Добруше

886.35 р.
скидка 190 р.
  • Площадь
    24.88 м.кв.
  • Адрес
    Минская
  • Фактура
    матовая
  • Срок выполнения
    3.5 ч
Парящий потолок со световыми линиями в спальне в Добруше

Парящий потолок со световыми линиями в спальне в Добруше

964.1 р.
скидка 310 р.
  • Площадь
    27.99 м.кв.
  • Адрес
    Заслонова
  • Фактура
    сатин
  • Срок выполнения
    3 ч
Натяжной потолок с парящими линиями для спальни в Добруше

Натяжной потолок с парящими линиями для спальни в Добруше

1088.5 р.
скидка 160 р.
  • Площадь
    24.88 м.кв.
  • Адрес
    Калинина
  • Фактура
    глянец
  • Срок выполнения
    2.5 ч
Двухуровневый потолок с декоративной подсветкой в спальню в Добруше

Двухуровневый потолок с декоративной подсветкой в спальню в Добруше

2021.5 р.
скидка 470 р.
  • Площадь
    23.33 м.кв.
  • Адрес
    Димитрова
  • Фактура
    глянец
  • Срок выполнения
    2.5 ч
Натяжной потолок со световыми линиями в Добруше

Натяжной потолок со световыми линиями в Добруше

1477.25 р.
скидка 230 р.
  • Площадь
    27.99 м.кв.
  • Адрес
    Карла Маркса
  • Фактура
    глянец
  • Срок выполнения
    3.5 ч
Натяжной потолок со световыми полосами в Добруше

Натяжной потолок со световыми полосами в Добруше

1710.5 р.
скидка 310 р.
  • Площадь
    31.1 м.кв.
  • Адрес
    Котовского
  • Фактура
    сатин
  • Срок выполнения
    3 ч
Теневой потолок с трековыми светильниками в Добруше

Теневой потолок с трековыми светильниками в Добруше

544.25 р.
скидка 310 р.
  • Площадь
    31.1 м.кв.
  • Адрес
    Чехова
  • Фактура
    сатин
  • Срок выполнения
    3.5 ч
Двухуровневый потолок с декоративной подсветкой в Добруше

Двухуровневый потолок с декоративной подсветкой в Добруше

1088.5 р.
скидка 160 р.
  • Площадь
    26.44 м.кв.
  • Адрес
    Плеханова
  • Фактура
    сатин
  • Срок выполнения
    2.5 ч
Натяжной потолок с круглым светильником  в Добруше

Натяжной потолок с круглым светильником в Добруше

342.1 р.
скидка 230 р.
  • Площадь
    26.44 м.кв.
  • Адрес
    Крылова
  • Фактура
    глянец
  • Срок выполнения
    3.5 ч
Двухуровневый потолок с подсветкой в Добруше

Двухуровневый потолок с подсветкой в Добруше

1399.5 р.
скидка 160 р.
  • Площадь
    21.77 м.кв.
  • Адрес
    Орджоникидзе
  • Фактура
    глянец
  • Срок выполнения
    3 ч
Двухуровневый потолок с дополнительной подсветкой в Добруше

Двухуровневый потолок с дополнительной подсветкой в Добруше

1166.25 р.
скидка 160 р.
  • Площадь
    24.88 м.кв.
  • Адрес
    Победы
  • Фактура
    глянец
  • Срок выполнения
    2.5 ч
Натяжной потолок с квадратным светильником в Добруше

Натяжной потолок с квадратным светильником в Добруше

311 р.
скидка 120 р.
  • Площадь
    24.88 м.кв.
  • Адрес
    Ульянова
  • Фактура
    матовая
  • Срок выполнения
    2.5 ч
Парящий натяжной потолок в Добруше

Парящий натяжной потолок в Добруше

388.75 р.
скидка 110 р.
  • Площадь
    4.67 м.кв.
  • Адрес
    мельницкого
  • Фактура
    глянец
  • Срок выполнения
    2 ч
Парящий потолок со световыми линиями в Добруше

Парящий потолок со световыми линиями в Добруше

466.5 р.
скидка 140 р.
  • Площадь
    6.22 м.кв.
  • Адрес
    Энгельса
  • Фактура
    сатин
  • Срок выполнения
    3 ч
Натяжной потолок со светильником в Добруше

Натяжной потолок со светильником в Добруше

139.95 р.
скидка 80 р.
  • Площадь
    6.22 м.кв.
  • Адрес
    Щорса
  • Фактура
    матовая
  • Срок выполнения
    1.5 ч
Двухуровневый потолок с подсветкой в Добруше

Двухуровневый потолок с подсветкой в Добруше

171.05 р.
скидка 120 р.
  • Площадь
    6.22 м.кв.
  • Адрес
    Куйбышева
  • Фактура
    матовая
  • Срок выполнения
    2.5 ч
Натяжной потолок со световыми линиями в прихожую в Добруше

Натяжной потолок со световыми линиями в прихожую в Добруше

933 р.
скидка 120 р.
  • Площадь
    15.55 м.кв.
  • Адрес
    Кутузова
  • Фактура
    сатин
  • Срок выполнения
    3.5 ч
Натяжной потолок со световыми полосами в прихожей в Добруше

Натяжной потолок со световыми полосами в прихожей в Добруше

777.5 р.
скидка 160 р.
  • Площадь
    12.44 м.кв.
  • Адрес
    Лазо
  • Фактура
    сатин
  • Срок выполнения
    3 ч
Натяжной потолок со светополосами в коридоре в Добруше

Натяжной потолок со светополосами в коридоре в Добруше

730.85 р.
скидка 160 р.
  • Площадь
    14 м.кв.
  • Адрес
    Некрасова
  • Фактура
    сатин
  • Срок выполнения
    2.5 ч
Натяжной потолок со светолиниями в коридор в Добруше

Натяжной потолок со светолиниями в коридор в Добруше

1010.75 р.
скидка 160 р.
  • Площадь
    15.55 м.кв.
  • Адрес
    Мичурина
  • Фактура
    сатин
  • Срок выполнения
    2.5 ч

О компании «Метр Плюс» в Добруше

Данная практика позволяет заказать натяжной потолок жителям небольших населенных пунктов без переплаты по максимально низкой цене. На весь ассортимент натяжных потолков мы предлагаем беспроцентную рассрочку платежа. Также вы можете оплатить натяжной потолок по картам "Халва" и "Карта покупок". Для того чтобы записаться на бесплатный замер достаточно просто позвонить или оставить заявку на сайте!

Рассчитать платежи Внутренняя рассрочка на 3 платежа
3 мес.
Рассрочка платежа на потолки! Без банка под 0%
Карта рассрочки черепаха на 8 месяцев на 8 месяцев
Карта рассрочки Карта покупок на 4 месяца на 4 месяца
Карта рассрочки Халва на 2 месяца на 2 месяца

Компания «Метр Плюс» предлагает своим клиентам воспользоваться рассрочкой платежа. Если вы решили установить натяжные потолки, но денежными средствами ограничены, можно воспользоваться уникальным предложением – рассрочкой платежа на любой вид изделий.

При заключении договора между сторонами, клиент оплачивает часть стоимости. Начиная со следующего месяца нудно будет платить равными долями до момента полного погашения за установку натяжного потолка. Рассрочка доступна на 2, 4 и 8 месяцев. Клиент может самостоятельно выбрать для себя определенный банк и приемлемые условия рассрочки.

кредит на потолки в кредит от 30 рублей в месяц

Скидка до 15 % на 2-хуровневые потолки

Закажите потолок через сайт и получите скидку!

Для получения скидки на двухуровневые потолки до 15% необходимо оформить заявку через официальный сайт компании. Компания «Метр Плюс» предлагает уникальные и эксклюзивные дизайны, разные фактуры и формы. Современные материалы, комбинирование изделий позволяет создать нестандартные формы и оригинальные двухуровневые конструкции. Опытные сотрудники компании помогут создать особенный и неповторимый интерьер.

Наши представительства

Выезжаем по всему Добрушскому району бесплатно: Борщёвка Васильевка Добруш Жгунь Иваки Иговка Корма Красная Буда Красный Партизан Круговец-Калинино Крупец Кузьминичи Ленино Носовичи Перерост Тереховка Уть

Наши контакты


' /* html or false to disable */ }, pp_settings); // Global variables accessible only by prettyPhoto var matchedObjects = this, percentBased = false, pp_dimensions, pp_open, // prettyPhoto container specific pp_contentHeight, pp_contentWidth, pp_containerHeight, pp_containerWidth, // Window size windowHeight = $(window).height(), windowWidth = $(window).width(), // Global elements pp_slideshow; doresize = true, scroll_pos = _get_scroll(); // Window/Keyboard events $(window).unbind('resize.prettyphoto').bind('resize.prettyphoto',function(){ _center_overlay(); _resize_overlay(); }); if(pp_settings.keyboard_shortcuts) { $(document).unbind('keydown.prettyphoto').bind('keydown.prettyphoto',function(e){ if(typeof $pp_pic_holder != 'undefined'){ if($pp_pic_holder.is(':visible')){ switch(e.keyCode){ case 37: $.prettyPhoto.changePage('previous'); e.preventDefault(); break; case 39: $.prettyPhoto.changePage('next'); e.preventDefault(); break; case 27: if(!settings.modal) $.prettyPhoto.close(); e.preventDefault(); break; }; // return false; }; }; }); }; /** * Initialize prettyPhoto. */ $.prettyPhoto.initialize = function() { settings = pp_settings; if(settings.theme == 'pp_default') settings.horizontal_padding = 16; // Find out if the picture is part of a set theRel = $(this).attr(settings.hook); galleryRegExp = /\[(?:.*)\]/; isSet = (galleryRegExp.exec(theRel)) ? true : false; // Put the SRCs, TITLEs, ALTs into an array. pp_images = (isSet) ? jQuery.map(matchedObjects, function(n, i){ if($(n).attr(settings.hook).indexOf(theRel) != -1) return $(n).attr('href'); }) : $.makeArray($(this).attr('href')); pp_titles = (isSet) ? jQuery.map(matchedObjects, function(n, i){ if($(n).attr(settings.hook).indexOf(theRel) != -1) return ($(n).find('img').attr('alt')) ? $(n).find('img').attr('alt') : ""; }) : $.makeArray($(this).find('img').attr('alt')); pp_descriptions = (isSet) ? jQuery.map(matchedObjects, function(n, i){ if($(n).attr(settings.hook).indexOf(theRel) != -1) return ($(n).attr('title')) ? $(n).attr('title') : ""; }) : $.makeArray($(this).attr('title')); if(pp_images.length > settings.overlay_gallery_max) settings.overlay_gallery = false; set_position = jQuery.inArray($(this).attr('href'), pp_images); // Define where in the array the clicked item is positionned rel_index = (isSet) ? set_position : $("a["+settings.hook+"^='"+theRel+"']").index($(this)); _build_overlay(this); // Build the overlay {this} being the caller if(settings.allow_resize) $(window).bind('scroll.prettyphoto',function(){ _center_overlay(); }); $.prettyPhoto.open(); return false; } /** * Opens the prettyPhoto modal box. * @param image {String,Array} Full path to the image to be open, can also be an array containing full images paths. * @param title {String,Array} The title to be displayed with the picture, can also be an array containing all the titles. * @param description {String,Array} The description to be displayed with the picture, can also be an array containing all the descriptions. */ $.prettyPhoto.open = function(event) { if(typeof settings == "undefined"){ // Means it's an API call, need to manually get the settings and set the variables settings = pp_settings; pp_images = $.makeArray(arguments[0]); pp_titles = (arguments[1]) ? $.makeArray(arguments[1]) : $.makeArray(""); pp_descriptions = (arguments[2]) ? $.makeArray(arguments[2]) : $.makeArray(""); isSet = (pp_images.length > 1) ? true : false; set_position = (arguments[3])? arguments[3]: 0; _build_overlay(event.target); // Build the overlay {this} being the caller } if(settings.hideflash) $('object,embed,iframe[src*=youtube],iframe[src*=vimeo]').css('visibility','hidden'); // Hide the flash _checkPosition($(pp_images).size()); // Hide the next/previous links if on first or last images. $('.pp_loaderIcon').show(); if(settings.deeplinking) setHashtag(); // Rebuild Facebook Like Button with updated href if(settings.social_tools){ facebook_like_link = settings.social_tools.replace('{location_href}', encodeURIComponent(location.href)); $pp_pic_holder.find('.pp_social').html(facebook_like_link); } // Fade the content in if($ppt.is(':hidden')) $ppt.css('opacity',0).show(); $pp_overlay.show().fadeTo(settings.animation_speed,settings.opacity); // Display the current position $pp_pic_holder.find('.currentTextHolder').text((set_position+1) + settings.counter_separator_label + $(pp_images).size()); // Set the description if(typeof pp_descriptions[set_position] != 'undefined' && pp_descriptions[set_position] != ""){ $pp_pic_holder.find('.pp_description').show().html(unescape(pp_descriptions[set_position])); }else{ $pp_pic_holder.find('.pp_description').hide(); } // Get the dimensions movie_width = ( parseFloat(getParam('width',pp_images[set_position])) ) ? getParam('width',pp_images[set_position]) : settings.default_width.toString(); movie_height = ( parseFloat(getParam('height',pp_images[set_position])) ) ? getParam('height',pp_images[set_position]) : settings.default_height.toString(); // If the size is % based, calculate according to window dimensions percentBased=false; if(movie_height.indexOf('%') != -1) { movie_height = parseFloat(($(window).height() * parseFloat(movie_height) / 100) - 150); percentBased = true; } if(movie_width.indexOf('%') != -1) { movie_width = parseFloat(($(window).width() * parseFloat(movie_width) / 100) - 150); percentBased = true; } // Fade the holder $pp_pic_holder.fadeIn(function(){ // Set the title (settings.show_title && pp_titles[set_position] != "" && typeof pp_titles[set_position] != "undefined") ? $ppt.html(unescape(pp_titles[set_position])) : $ppt.html(' '); imgPreloader = ""; skipInjection = false; // Inject the proper content switch(_getFileType(pp_images[set_position])){ case 'image': imgPreloader = new Image(); // Preload the neighbour images nextImage = new Image(); if(isSet && set_position < $(pp_images).size() -1) nextImage.src = pp_images[set_position + 1]; prevImage = new Image(); if(isSet && pp_images[set_position - 1]) prevImage.src = pp_images[set_position - 1]; $pp_pic_holder.find('#pp_full_res')[0].innerHTML = settings.image_markup.replace(/{path}/g,pp_images[set_position]); imgPreloader.onload = function(){ // Fit item to viewport pp_dimensions = _fitToViewport(imgPreloader.width,imgPreloader.height); _showContent(); }; imgPreloader.onerror = function(){ alert('Image cannot be loaded. Make sure the path is correct and image exist.'); $.prettyPhoto.close(); }; imgPreloader.src = pp_images[set_position]; break; case 'youtube': pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport // Regular youtube link movie_id = getParam('v',pp_images[set_position]); // youtu.be link if(movie_id == ""){ movie_id = pp_images[set_position].split('youtu.be/'); movie_id = movie_id[1]; if(movie_id.indexOf('?') > 0) movie_id = movie_id.substr(0,movie_id.indexOf('?')); // Strip anything after the ? if(movie_id.indexOf('&') > 0) movie_id = movie_id.substr(0,movie_id.indexOf('&')); // Strip anything after the & } movie = 'http://www.youtube.com/embed/'+movie_id; (getParam('rel',pp_images[set_position])) ? movie+="?rel="+getParam('rel',pp_images[set_position]) : movie+="?rel=1"; if(settings.autoplay) movie += "&autoplay=1"; toInject = settings.iframe_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,movie); break; case 'vimeo': pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport movie_id = pp_images[set_position]; var regExp = /http(s?):\/\/(www\.)?vimeo.com\/(\d+)/; var match = movie_id.match(regExp); movie = 'http://player.vimeo.com/video/'+ match[3] +'?title=0&byline=0&portrait=0'; if(settings.autoplay) movie += "&autoplay=1;"; vimeo_width = pp_dimensions['width'] + '/embed/?moog_width='+ pp_dimensions['width']; toInject = settings.iframe_markup.replace(/{width}/g,vimeo_width).replace(/{height}/g,pp_dimensions['height']).replace(/{path}/g,movie); break; case 'quicktime': pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport pp_dimensions['height']+=15; pp_dimensions['contentHeight']+=15; pp_dimensions['containerHeight']+=15; // Add space for the control bar toInject = settings.quicktime_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,pp_images[set_position]).replace(/{autoplay}/g,settings.autoplay); break; case 'flash': pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport flash_vars = pp_images[set_position]; flash_vars = flash_vars.substring(pp_images[set_position].indexOf('flashvars') + 10,pp_images[set_position].length); filename = pp_images[set_position]; filename = filename.substring(0,filename.indexOf('?')); toInject = settings.flash_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,filename+'?'+flash_vars); break; case 'iframe': pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport frame_url = pp_images[set_position]; frame_url = frame_url.substr(0,frame_url.indexOf('iframe')-1); toInject = settings.iframe_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{path}/g,frame_url); break; case 'ajax': doresize = false; // Make sure the dimensions are not resized. pp_dimensions = _fitToViewport(movie_width,movie_height); doresize = true; // Reset the dimensions skipInjection = true; $.get(pp_images[set_position],function(responseHTML){ toInject = settings.inline_markup.replace(/{content}/g,responseHTML); $pp_pic_holder.find('#pp_full_res')[0].innerHTML = toInject; _showContent(); }); break; case 'custom': pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport toInject = settings.custom_markup; break; case 'inline': // to get the item height clone it, apply default width, wrap it in the prettyPhoto containers , then delete myClone = $(pp_images[set_position]).clone().append('
').css({'width':settings.default_width}).wrapInner('
').appendTo($('body')).show(); doresize = false; // Make sure the dimensions are not resized. pp_dimensions = _fitToViewport($(myClone).width(),$(myClone).height()); doresize = true; // Reset the dimensions $(myClone).remove(); toInject = settings.inline_markup.replace(/{content}/g,$(pp_images[set_position]).html()); break; }; if(!imgPreloader && !skipInjection){ $pp_pic_holder.find('#pp_full_res')[0].innerHTML = toInject; // Show content _showContent(); }; }); return false; }; /** * Change page in the prettyPhoto modal box * @param direction {String} Direction of the paging, previous or next. */ $.prettyPhoto.changePage = function(direction){ currentGalleryPage = 0; if(direction == 'previous') { set_position--; if (set_position < 0) set_position = $(pp_images).size()-1; }else if(direction == 'next'){ set_position++; if(set_position > $(pp_images).size()-1) set_position = 0; }else{ set_position=direction; }; rel_index = set_position; if(!doresize) doresize = true; // Allow the resizing of the images if(settings.allow_expand) { $('.pp_contract').removeClass('pp_contract').addClass('pp_expand'); } _hideContent(function(){ $.prettyPhoto.open(); }); }; /** * Change gallery page in the prettyPhoto modal box * @param direction {String} Direction of the paging, previous or next. */ $.prettyPhoto.changeGalleryPage = function(direction){ if(direction=='next'){ currentGalleryPage ++; if(currentGalleryPage > totalPage) currentGalleryPage = 0; }else if(direction=='previous'){ currentGalleryPage --; if(currentGalleryPage < 0) currentGalleryPage = totalPage; }else{ currentGalleryPage = direction; }; slide_speed = (direction == 'next' || direction == 'previous') ? settings.animation_speed : 0; slide_to = currentGalleryPage * (itemsPerPage * itemWidth); $pp_gallery.find('ul').animate({left:-slide_to},slide_speed); }; /** * Start the slideshow... */ $.prettyPhoto.startSlideshow = function(){ if(typeof pp_slideshow == 'undefined'){ $pp_pic_holder.find('.pp_play').unbind('click').removeClass('pp_play').addClass('pp_pause').click(function(){ $.prettyPhoto.stopSlideshow(); return false; }); pp_slideshow = setInterval($.prettyPhoto.startSlideshow,settings.slideshow); }else{ $.prettyPhoto.changePage('next'); }; } /** * Stop the slideshow... */ $.prettyPhoto.stopSlideshow = function(){ $pp_pic_holder.find('.pp_pause').unbind('click').removeClass('pp_pause').addClass('pp_play').click(function(){ $.prettyPhoto.startSlideshow(); return false; }); clearInterval(pp_slideshow); pp_slideshow=undefined; } /** * Closes prettyPhoto. */ $.prettyPhoto.close = function(){ if($pp_overlay.is(":animated")) return; $.prettyPhoto.stopSlideshow(); $pp_pic_holder.stop().find('object,embed').css('visibility','hidden'); $('div.pp_pic_holder,div.ppt,.pp_fade').fadeOut(settings.animation_speed,function(){ $(this).remove(); }); $pp_overlay.fadeOut(settings.animation_speed, function(){ if(settings.hideflash) $('object,embed,iframe[src*=youtube],iframe[src*=vimeo]').css('visibility','visible'); // Show the flash $(this).remove(); // No more need for the prettyPhoto markup $(window).unbind('scroll.prettyphoto'); clearHashtag(); settings.callback(); doresize = true; pp_open = false; delete settings; }); }; /** * Set the proper sizes on the containers and animate the content in. */ function _showContent(){ $('.pp_loaderIcon').hide(); // Calculate the opened top position of the pic holder projectedTop = scroll_pos['scrollTop'] + ((windowHeight/2) - (pp_dimensions['containerHeight']/2)); if(projectedTop < 0) projectedTop = 0; $ppt.fadeTo(settings.animation_speed,1); // Resize the content holder $pp_pic_holder.find('.pp_content') .animate({ height:pp_dimensions['contentHeight'], width:pp_dimensions['contentWidth'] },settings.animation_speed); // Resize picture the holder $pp_pic_holder.animate({ 'top': projectedTop, 'left': ((windowWidth/2) - (pp_dimensions['containerWidth']/2) < 0) ? 0 : (windowWidth/2) - (pp_dimensions['containerWidth']/2), width:pp_dimensions['containerWidth'] },settings.animation_speed,function(){ $pp_pic_holder.find('.pp_hoverContainer,#fullResImage').height(pp_dimensions['height']).width(pp_dimensions['width']); $pp_pic_holder.find('.pp_fade').fadeIn(settings.animation_speed); // Fade the new content // Show the nav if(isSet && _getFileType(pp_images[set_position])=="image") { $pp_pic_holder.find('.pp_hoverContainer').show(); }else{ $pp_pic_holder.find('.pp_hoverContainer').hide(); } if(settings.allow_expand) { if(pp_dimensions['resized']){ // Fade the resizing link if the image is resized $('a.pp_expand,a.pp_contract').show(); }else{ $('a.pp_expand').hide(); } } if(settings.autoplay_slideshow && !pp_slideshow && !pp_open) $.prettyPhoto.startSlideshow(); settings.changepicturecallback(); // Callback! pp_open = true; }); _insert_gallery(); pp_settings.ajaxcallback(); }; /** * Hide the content...DUH! */ function _hideContent(callback){ // Fade out the current picture $pp_pic_holder.find('#pp_full_res object,#pp_full_res embed').css('visibility','hidden'); $pp_pic_holder.find('.pp_fade').fadeOut(settings.animation_speed,function(){ $('.pp_loaderIcon').show(); callback(); }); }; /** * Check the item position in the gallery array, hide or show the navigation links * @param setCount {integer} The total number of items in the set */ function _checkPosition(setCount){ (setCount > 1) ? $('.pp_nav').show() : $('.pp_nav').hide(); // Hide the bottom nav if it's not a set. }; /** * Resize the item dimensions if it's bigger than the viewport * @param width {integer} Width of the item to be opened * @param height {integer} Height of the item to be opened * @return An array containin the "fitted" dimensions */ function _fitToViewport(width,height){ resized = false; _getDimensions(width,height); // Define them in case there's no resize needed imageWidth = width, imageHeight = height; if( ((pp_containerWidth > windowWidth) || (pp_containerHeight > windowHeight)) && doresize && settings.allow_resize && !percentBased) { resized = true, fitting = false; while (!fitting){ if(pp_containerWidth > windowWidth - 38){ imageWidth = (windowWidth - 38); imageHeight = (height/width) * imageWidth; } else if(pp_containerHeight > windowHeight - 100) { imageHeight = (windowHeight - 100); imageWidth = (width/height) * imageHeight; } else { fitting = true; }; pp_containerHeight = imageHeight, pp_containerWidth = imageWidth; }; if((pp_containerWidth > windowWidth) || (pp_containerHeight > windowHeight)){ _fitToViewport(pp_containerWidth,pp_containerHeight) }; _getDimensions(imageWidth,imageHeight); }; return { width:Math.floor(imageWidth), height:Math.floor(imageHeight), containerHeight:Math.floor(pp_containerHeight), containerWidth:Math.floor(pp_containerWidth) + (settings.horizontal_padding * 2), contentHeight:Math.floor(pp_contentHeight), contentWidth:Math.floor(pp_contentWidth), resized:resized }; }; /** * Get the containers dimensions according to the item size * @param width {integer} Width of the item to be opened * @param height {integer} Height of the item to be opened */ function _getDimensions(width,height){ width = parseFloat(width); height = parseFloat(height); // Get the details height, to do so, I need to clone it since it's invisible $pp_details = $pp_pic_holder.find('.pp_details'); $pp_details.width(width); detailsHeight = parseFloat($pp_details.css('marginTop')) + parseFloat($pp_details.css('marginBottom')); $pp_details = $pp_details.clone().addClass(settings.theme).width(width).appendTo($('body')).css({ 'position':'absolute', 'top':-10000 }); detailsHeight += $pp_details.height(); detailsHeight = (detailsHeight <= 34) ? 36 : detailsHeight; // Min-height for the details $pp_details.remove(); // Get the titles height, to do so, I need to clone it since it's invisible $pp_title = $pp_pic_holder.find('.ppt'); $pp_title.width(width); titleHeight = parseFloat($pp_title.css('marginTop')) + parseFloat($pp_title.css('marginBottom')); $pp_title = $pp_title.clone().appendTo($('body')).css({ 'position':'absolute', 'top':-10000 }); titleHeight += $pp_title.height(); $pp_title.remove(); // Get the container size, to resize the holder to the right dimensions pp_contentHeight = height + detailsHeight; pp_contentWidth = width; pp_containerHeight = pp_contentHeight + titleHeight + $pp_pic_holder.find('.pp_top').height() + $pp_pic_holder.find('.pp_bottom').height(); pp_containerWidth = width; } function _getFileType(itemSrc){ if (itemSrc.match(/youtube\.com\/watch/i) || itemSrc.match(/youtu\.be/i)) { return 'youtube'; }else if (itemSrc.match(/vimeo\.com/i)) { return 'vimeo'; }else if(itemSrc.match(/\b.mov\b/i)){ return 'quicktime'; }else if(itemSrc.match(/\b.swf\b/i)){ return 'flash'; }else if(itemSrc.match(/\biframe=true\b/i)){ return 'iframe'; }else if(itemSrc.match(/\bajax=true\b/i)){ return 'ajax'; }else if(itemSrc.match(/\bcustom=true\b/i)){ return 'custom'; }else if(itemSrc.substr(0,1) == '#'){ return 'inline'; }else{ return 'image'; }; }; function _center_overlay(){ if(doresize && typeof $pp_pic_holder != 'undefined') { scroll_pos = _get_scroll(); contentHeight = $pp_pic_holder.height(), contentwidth = $pp_pic_holder.width(); projectedTop = (windowHeight/2) + scroll_pos['scrollTop'] - (contentHeight/2); if(projectedTop < 0) projectedTop = 0; if(contentHeight > windowHeight) return; $pp_pic_holder.css({ 'top': projectedTop, 'left': (windowWidth/2) + scroll_pos['scrollLeft'] - (contentwidth/2) }); }; }; function _get_scroll(){ if (self.pageYOffset) { return {scrollTop:self.pageYOffset,scrollLeft:self.pageXOffset}; } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict return {scrollTop:document.documentElement.scrollTop,scrollLeft:document.documentElement.scrollLeft}; } else if (document.body) {// all other Explorers return {scrollTop:document.body.scrollTop,scrollLeft:document.body.scrollLeft}; }; }; function _resize_overlay() { windowHeight = $(window).height(), windowWidth = $(window).width(); if(typeof $pp_overlay != "undefined") $pp_overlay.height($(document).height()).width(windowWidth); }; function _insert_gallery(){ if(isSet && settings.overlay_gallery && _getFileType(pp_images[set_position])=="image") { itemWidth = 52+5; // 52 beign the thumb width, 5 being the right margin. navWidth = (settings.theme == "facebook" || settings.theme == "pp_default") ? 50 : 30; // Define the arrow width depending on the theme itemsPerPage = Math.floor((pp_dimensions['containerWidth'] - 100 - navWidth) / itemWidth); itemsPerPage = (itemsPerPage < pp_images.length) ? itemsPerPage : pp_images.length; totalPage = Math.ceil(pp_images.length / itemsPerPage) - 1; // Hide the nav in the case there's no need for links if(totalPage == 0){ navWidth = 0; // No nav means no width! $pp_gallery.find('.pp_arrow_next,.pp_arrow_previous').hide(); }else{ $pp_gallery.find('.pp_arrow_next,.pp_arrow_previous').show(); }; galleryWidth = itemsPerPage * itemWidth; fullGalleryWidth = pp_images.length * itemWidth; // Set the proper width to the gallery items $pp_gallery .css('margin-left',-((galleryWidth/2) + (navWidth/2))) .find('div:first').width(galleryWidth+5) .find('ul').width(fullGalleryWidth) .find('li.selected').removeClass('selected'); goToPage = (Math.floor(set_position/itemsPerPage) < totalPage) ? Math.floor(set_position/itemsPerPage) : totalPage; $.prettyPhoto.changeGalleryPage(goToPage); $pp_gallery_li.filter(':eq('+set_position+')').addClass('selected'); }else{ $pp_pic_holder.find('.pp_content').unbind('mouseenter mouseleave'); // $pp_gallery.hide(); } } function _build_overlay(caller){ // Inject Social Tool markup into General markup if(settings.social_tools) facebook_like_link = settings.social_tools.replace('{location_href}', encodeURIComponent(location.href)); settings.markup = settings.markup.replace('{pp_social}',''); $('body').append(settings.markup); // Inject the markup $pp_pic_holder = $('.pp_pic_holder') , $ppt = $('.ppt'), $pp_overlay = $('div.pp_overlay'); // Set my global selectors // Inject the inline gallery! if(isSet && settings.overlay_gallery) { currentGalleryPage = 0; toInject = ""; for (var i=0; i < pp_images.length; i++) { if(!pp_images[i].match(/\b(jpg|jpeg|png|gif)\b/gi)){ classname = 'default'; img_src = ''; }else{ classname = ''; img_src = pp_images[i]; } toInject += "
  • "; }; toInject = settings.gallery_markup.replace(/{gallery}/g,toInject); $pp_pic_holder.find('#pp_full_res').after(toInject); $pp_gallery = $('.pp_pic_holder .pp_gallery'), $pp_gallery_li = $pp_gallery.find('li'); // Set the gallery selectors $pp_gallery.find('.pp_arrow_next').click(function(){ $.prettyPhoto.changeGalleryPage('next'); $.prettyPhoto.stopSlideshow(); return false; }); $pp_gallery.find('.pp_arrow_previous').click(function(){ $.prettyPhoto.changeGalleryPage('previous'); $.prettyPhoto.stopSlideshow(); return false; }); $pp_pic_holder.find('.pp_content').hover( function(){ $pp_pic_holder.find('.pp_gallery:not(.disabled)').fadeIn(); }, function(){ $pp_pic_holder.find('.pp_gallery:not(.disabled)').fadeOut(); }); itemWidth = 52+5; // 52 beign the thumb width, 5 being the right margin. $pp_gallery_li.each(function(i){ $(this) .find('a') .click(function(){ $.prettyPhoto.changePage(i); $.prettyPhoto.stopSlideshow(); return false; }); }); }; // Inject the play/pause if it's a slideshow if(settings.slideshow){ $pp_pic_holder.find('.pp_nav').prepend('Play') $pp_pic_holder.find('.pp_nav .pp_play').click(function(){ $.prettyPhoto.startSlideshow(); return false; }); } $pp_pic_holder.attr('class','pp_pic_holder ' + settings.theme); // Set the proper theme $pp_overlay .css({ 'opacity':0, 'height':$(document).height(), 'width':$(window).width() }) .bind('click',function(){ if(!settings.modal) $.prettyPhoto.close(); }); $('a.pp_close').bind('click',function(){ $.prettyPhoto.close(); return false; }); if(settings.allow_expand) { $('a.pp_expand').bind('click',function(e){ // Expand the image if($(this).hasClass('pp_expand')){ $(this).removeClass('pp_expand').addClass('pp_contract'); doresize = false; }else{ $(this).removeClass('pp_contract').addClass('pp_expand'); doresize = true; }; _hideContent(function(){ $.prettyPhoto.open(); }); return false; }); } $pp_pic_holder.find('.pp_previous, .pp_nav .pp_arrow_previous').bind('click',function(){ $.prettyPhoto.changePage('previous'); $.prettyPhoto.stopSlideshow(); return false; }); $pp_pic_holder.find('.pp_next, .pp_nav .pp_arrow_next').bind('click',function(){ $.prettyPhoto.changePage('next'); $.prettyPhoto.stopSlideshow(); return false; }); _center_overlay(); // Center it }; if(!pp_alreadyInitialized && getHashtag()){ pp_alreadyInitialized = true; // Grab the rel index to trigger the click on the correct element hashIndex = getHashtag(); hashRel = hashIndex; hashIndex = hashIndex.substring(hashIndex.indexOf('/')+1,hashIndex.length-1); hashRel = hashRel.substring(0,hashRel.indexOf('/')); // Little timeout to make sure all the prettyPhoto initialize scripts has been run. // Useful in the event the page contain several init scripts. setTimeout(function(){ $("a["+pp_settings.hook+"^='"+hashRel+"']:eq("+hashIndex+")").trigger('click'); },50); } return this.unbind('click.prettyphoto').bind('click.prettyphoto',$.prettyPhoto.initialize); // Return the jQuery object for chaining. The unbind method is used to avoid click conflict when the plugin is called more than once }; function getHashtag(){ var url = location.href; hashtag = (url.indexOf('#prettyPhoto') !== -1) ? decodeURI(url.substring(url.indexOf('#prettyPhoto')+1,url.length)) : false; return hashtag; }; function setHashtag(){ if(typeof theRel == 'undefined') return; // theRel is set on normal calls, it's impossible to deeplink using the API location.hash = theRel + '/'+rel_index+'/'; }; function clearHashtag(){ if ( location.href.indexOf('#prettyPhoto') !== -1 ) location.hash = "prettyPhoto"; } function getParam(name,url){ name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); var regexS = "[\\?&]"+name+"=([^&#]*)"; var regex = new RegExp( regexS ); var results = regex.exec( url ); return ( results == null ) ? "" : results[1]; } })(jQuery); var pp_alreadyInitialized = false; // Used for the deep linking to make sure not to call the same function several times.