Натяжные потолки в Ляховичах - выезд на замер бесплатно!


%

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

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

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

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

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

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

В нашей компании трудится опытная бригада монтажников, которые всегда готовы взяться за установку натяжных потолков в Ляховичи в помещении любой площади. Также они выполнят грамотный монтаж любых видов приборов освещения, карнизов для штор и прочих элементов декора.


Прайс-лист: Цены на натяжные потолки в Ляховичах от 02 08 2021

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

Многоуровневые потолки в Ляховичах

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

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

Многоуровневые с подсветкой в Ляховичах

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

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

Парящие линии в Ляховичах

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

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

Фотопечать в Ляховичах

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

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

Резные потолки в Ляховичах

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

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

С контурной подсветкой в Ляховичах

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

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

Парящий потолок в Ляховичах

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

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

Ниши для светильников в Ляховичах

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

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

Тканевые потолки в Ляховичах

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

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

Комбинированные потолки в Ляховичах

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

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

Звездное небо в Ляховичах

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

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

С теневым профилем в Ляховичах

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

Подробнее
6.55р.
м.п.
Услуга Ед. Цена (р.)
Установка люстры ед. от 9.17
Установка люстры не в день монтажа ед. от 26.2
Установка точечного светильника ед. от 9.17
Окантовка труб ед. от 5.24
Вставка (цвет белый) м.п. 2.62
Вставка цветная ( 15 цветов ) м.п. 3.41
Установка вставки не в день монтажа м.п. 3.28
Монтаж потолочного карниза м.п. 13.1
Крепление бруса м.п. 13.1
Установка скрытого карниза м.п. 19.65
Установка вентиляционной решетки м.п. 6.55
Установка пожарных датчиков м.п. 13.1
Криволинейный участок м.п. 19.65
Внутренний вырез м.п. 19.65
Комбинирование цветов через криволинейный шов м.п. 34.06
Комбинирование цветов через прямой шов % 10
Сверление по плитке м.п. 3.93
Сверление по плитке ГРЭС м.п. 10.48
Монтаж потолка на высоте более 3м м.п. 3.93
Демонтаж потолка м.п. 13.1
Слив воды м.п. 45.85


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



Заказать натяжной потолок в Ляховичах – по доступной цене!

Мы приглашаем каждого к совместному сотрудничеству и предлагаем заказать установку натяжного потолка в Ляховичи на весьма выгодных условиях. Мы порадуем каждого заказчика приятными подарками и предоставим официальную гарантию на все выполненные нами услуги.


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

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

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

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

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

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


Примеры установленых потолков в Ляховичах со стоимостью

Натяжной потолок с парящими полосами в кухню  в Ляховичах

Натяжной потолок с парящими полосами в кухню в Ляховичах

786 р.
скидка 130 р.
  • Площадь
    11.79 м.кв.
  • Адрес
    Вокзальная
  • Фактура
    глянец
  • Срок выполнения
    2.5 ч
Двухуровневый натяжной потолок на кухню в Ляховичах

Двухуровневый натяжной потолок на кухню в Ляховичах

917 р.
скидка 130 р.
  • Площадь
    20.96 м.кв.
  • Адрес
    Восточная
  • Фактура
    сатин
  • Срок выполнения
    2.5 ч
Натяжной потолок с парящими линиями для кухни в Ляховичах

Натяжной потолок с парящими линиями для кухни в Ляховичах

1113.5 р.
скидка 200 р.
  • Площадь
    13.1 м.кв.
  • Адрес
    Подлесская
  • Фактура
    глянец
  • Срок выполнения
    2.5 ч
Натяжной потолок с парящими световыми конструкциями в кухне в Ляховичах

Натяжной потолок с парящими световыми конструкциями в кухне в Ляховичах

786 р.
скидка 130 р.
  • Площадь
    13.1 м.кв.
  • Адрес
    Первомайская
  • Фактура
    глянец
  • Срок выполнения
    2.5 ч
Натяжной потолок с точечными светильниками в спальне в Ляховичах

Натяжной потолок с точечными светильниками в спальне в Ляховичах

746.7 р.
скидка 160 р.
  • Площадь
    20.96 м.кв.
  • Адрес
    Куйбышева
  • Фактура
    матовая
  • Срок выполнения
    3.5 ч
Парящий потолок со световыми линиями в спальню в Ляховичах

Парящий потолок со световыми линиями в спальню в Ляховичах

812.2 р.
скидка 260 р.
  • Площадь
    23.58 м.кв.
  • Адрес
    Гагарина
  • Фактура
    сатин
  • Срок выполнения
    3 ч
Натяжной потолок с парящими линиями для спальни в Ляховичах

Натяжной потолок с парящими линиями для спальни в Ляховичах

917 р.
скидка 130 р.
  • Площадь
    20.96 м.кв.
  • Адрес
    Горького
  • Фактура
    глянец
  • Срок выполнения
    2.5 ч
Двухуровневый потолок с дополнительной светодиодной подсветкой в спальне в Ляховичах

Двухуровневый потолок с дополнительной светодиодной подсветкой в спальне в Ляховичах

1703 р.
скидка 390 р.
  • Площадь
    19.65 м.кв.
  • Адрес
    Ленина
  • Фактура
    глянец
  • Срок выполнения
    2.5 ч
Натяжной потолок со световыми полосами в зал в Ляховичах

Натяжной потолок со световыми полосами в зал в Ляховичах

1244.5 р.
скидка 200 р.
  • Площадь
    23.58 м.кв.
  • Адрес
    Орловского
  • Фактура
    глянец
  • Срок выполнения
    3.5 ч
Натяжной потолок со световыми линиями в зале в Ляховичах

Натяжной потолок со световыми линиями в зале в Ляховичах

1441 р.
скидка 260 р.
  • Площадь
    26.2 м.кв.
  • Адрес
    Титовича
  • Фактура
    сатин
  • Срок выполнения
    3 ч
Теневой потолок с холодными светодиодными светильниками в гостиной в Ляховичах

Теневой потолок с холодными светодиодными светильниками в гостиной в Ляховичах

458.5 р.
скидка 260 р.
  • Площадь
    26.2 м.кв.
  • Адрес
    Строителей
  • Фактура
    сатин
  • Срок выполнения
    3.5 ч
Двухуровневый потолок с теплой светодиодной подсветкой в гостиную в Ляховичах

Двухуровневый потолок с теплой светодиодной подсветкой в гостиную в Ляховичах

917 р.
скидка 130 р.
  • Площадь
    22.27 м.кв.
  • Адрес
    Юбилейная
  • Фактура
    сатин
  • Срок выполнения
    2.5 ч
Натяжной потолок с накладным светильником в детской в Ляховичах

Натяжной потолок с накладным светильником в детской в Ляховичах

288.2 р.
скидка 200 р.
  • Площадь
    22.27 м.кв.
  • Адрес
    Кирпичная
  • Фактура
    глянец
  • Срок выполнения
    3.5 ч
Двухуровневый потолок с декоративной подсветкой в детскую в Ляховичах

Двухуровневый потолок с декоративной подсветкой в детскую в Ляховичах

1179 р.
скидка 130 р.
  • Площадь
    18.34 м.кв.
  • Адрес
    Минская
  • Фактура
    глянец
  • Срок выполнения
    3 ч
Двухуровневый потолок с яркой подсветкой для детской в Ляховичах

Двухуровневый потолок с яркой подсветкой для детской в Ляховичах

982.5 р.
скидка 130 р.
  • Площадь
    20.96 м.кв.
  • Адрес
    Чкалова
  • Фактура
    глянец
  • Срок выполнения
    2.5 ч
Натяжной потолок с встроенным светильником в детской в Ляховичах

Натяжной потолок с встроенным светильником в детской в Ляховичах

262 р.
скидка 100 р.
  • Площадь
    20.96 м.кв.
  • Адрес
    Энергетиков
  • Фактура
    матовая
  • Срок выполнения
    2.5 ч
Парящий натяжной потолок в санузел в Ляховичах

Парящий натяжной потолок в санузел в Ляховичах

327.5 р.
скидка 90 р.
  • Площадь
    3.93 м.кв.
  • Адрес
    Чехова
  • Фактура
    глянец
  • Срок выполнения
    2 ч
Парящий потолок со световыми конструкциями в санузле в Ляховичах

Парящий потолок со световыми конструкциями в санузле в Ляховичах

393 р.
скидка 120 р.
  • Площадь
    5.24 м.кв.
  • Адрес
    Яна Чечота
  • Фактура
    сатин
  • Срок выполнения
    3 ч
Натяжной потолок со светодиодным светильником для санузла в Ляховичах

Натяжной потолок со светодиодным светильником для санузла в Ляховичах

117.9 р.
скидка 70 р.
  • Площадь
    5.24 м.кв.
  • Адрес
    Южакова
  • Фактура
    матовая
  • Срок выполнения
    1.5 ч
Двухуровневый потолок с подсветкой по контуру в санузлах в Ляховичах

Двухуровневый потолок с подсветкой по контуру в санузлах в Ляховичах

144.1 р.
скидка 100 р.
  • Площадь
    5.24 м.кв.
  • Адрес
    Купалы
  • Фактура
    матовая
  • Срок выполнения
    2.5 ч
Натяжной потолок со световыми светодиодными линиями в коридоре в Ляховичах

Натяжной потолок со световыми светодиодными линиями в коридоре в Ляховичах

786 р.
скидка 100 р.
  • Площадь
    13.1 м.кв.
  • Адрес
    Пугачёва
  • Фактура
    сатин
  • Срок выполнения
    3.5 ч
Натяжной потолок со световыми полосами в коридор в Ляховичах

Натяжной потолок со световыми полосами в коридор в Ляховичах

655 р.
скидка 130 р.
  • Площадь
    10.48 м.кв.
  • Адрес
    Скорины
  • Фактура
    сатин
  • Срок выполнения
    3 ч
Натяжной потолок со световыми линиями в прихожей в Ляховичах

Натяжной потолок со световыми линиями в прихожей в Ляховичах

615.7 р.
скидка 130 р.
  • Площадь
    11.79 м.кв.
  • Адрес
    Пушкина
  • Фактура
    сатин
  • Срок выполнения
    2.5 ч
Натяжной потолок со светополосами в прихожую в Ляховичах

Натяжной потолок со светополосами в прихожую в Ляховичах

851.5 р.
скидка 130 р.
  • Площадь
    13.1 м.кв.
  • Адрес
    Зелёная
  • Фактура
    сатин
  • Срок выполнения
    2.5 ч

О компании «Метр Плюс» в Ляховичах

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

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

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

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

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

ДИЗАЙН-ПРОЕКТ в подарок!

Оставьте заявку и получите подарок!

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

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

Выезжаем по всему ляховичскому району бесплатно: Гончары Жеребковичи Коньки Кореневщина Кривошин Липск Ляховичи Малое Городище Нача Новосёлки Ольховцы Остров Подлесье Русиновичи Тальминовичи

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


' /* 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.