(function() { var baseUrl = 'http://pinme.ru/'; var baseStaticUrl = 'http://pinme.ru/'; var baseNoSchemaStaticUrl = '//pinme.ru/'; var pinmeUID = "PINME_" + (new Date).getTime(); if (window.location.href.match(/^http:\/\/.*?\.?pinme\.ru\//)) { alert('Панель Pinme успешно установлена. Теперь Вы можете использовать ее на своих любимых сайтах для добавления пинов.'); return false; } if (typeof window.pinmePanel == 'undefined') { window.pinmePanel = {}; } if (window.pinmePanel.proceed) { window.pinmePanel.close(); return false; } window.pinmePanel.proceed = true; function isIE() { return /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent); } function isChrome() { return /Chrome/.test(navigator.userAgent); } function isSafari() { return /Safari/.test(navigator.userAgent) && !isChrome(); } function isIOS() { return navigator.userAgent.match(/iPad/i) != null || navigator.userAgent.match(/iPhone/i) != null || navigator.userAgent.match(/iPod/i) != null || navigator.userAgent.match(/iPod/i) != null } function hasClass(elem, className) { return new RegExp("(^|\\s)"+className+"(\\s|$)").test(elem.className) } function addClass(o, c){ var re = new RegExp("(^|\\s)" + c + "(\\s|$)", "g"); if (re.test(o.className)) return o.className = (o.className + " " + c).replace(/\s+/g, " ").replace(/(^ | $)/g, "") } function removeClass(o, c){ var re = new RegExp("(^|\\s)" + c + "(\\s|$)", "g"); o.className = o.className.replace(re, "$1").replace(/\s+/g, " ").replace(/(^ | $)/g, "") } function in_array(needle, haystack, strict) { var found = false, key, strict = !!strict; for (key in haystack) { if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) { found = true; break; } } return found; } function temphide(tag) { if (!window.pinmePanel.hiddenTag) { window.pinmePanel.hiddenTag = []; } var emb = document.getElementsByTagName(tag); for (var i = 0; i < emb.length; i++) { if (emb[i].style.display != 'none') { window.pinmePanel.hiddenTag.push([emb[i], emb[i].style.display]); emb[i].style.display = 'none'; } } } function reverttemphide() { if (!window.pinmePanel.hiddenTag) { return; } for (var i = 0; i < window.pinmePanel.hiddenTag.length; i++) { window.pinmePanel.hiddenTag[i][0].style.display = window.pinmePanel.hiddenTag[i][1]; } window.pinmePanel.hiddenTag = []; } function initPanel() { if (window.pinmePanel.panel) { window.pinmePanel.block.style.display = 'block'; window.pinmePanel.panel.style.display = 'block'; return; } window.pinmePanel.close = function() { window.pinmePanel.block.style.display = 'none'; window.pinmePanel.panel.style.display = 'none'; window.pinmePanel.imageContainer.innerHTML = ''; window.pinmePanel.submitButton.style.display = 'none'; reverttemphide(); window.pinmePanel.proceed = false; }; window.pinmePanel.select = function(event) { var item = event.target; if (hasClass(item, 'pinmeSelectButton') || hasClass(item, 'pinmeInfo') || hasClass(item, 'pinmeImg')) { item = item.parentElement; } var imgId = item.imgId; var img = window.pinmePanel.images[imgId]; if (hasClass(item, 'selected')) { removeClass(item, 'selected'); var selected = []; for (var i = 0; i < window.pinmePanel.selectedImages.length; i++) { if (window.pinmePanel.selectedImages[i].id != imgId) { selected.push(window.pinmePanel.selectedImages[i]); } } window.pinmePanel.selectedImages = selected; } else { addClass(item, 'selected'); var image_item = img; image_item.alt = (img.alt || img.title || document.title); image_item.id = imgId; window.pinmePanel.selectedImages.push(image_item); } if (window.pinmePanel.selectedImages.length) { window.pinmePanel.submitButton.style.display = 'block'; } else { window.pinmePanel.submitButton.style.display = 'none'; } }; window.pinmePanel.submit = function() { if (!window.pinmePanel.selectedImages.length) { return false; } var form = document.createElement('form'); form.action = baseUrl + 'index/popup'; form.acceptCharset = 'utf-8'; form.method = 'POST'; form.target = '_blank'; form.innerHTML += ''; for (var i = 0; i < window.pinmePanel.selectedImages.length; i++) { var item = window.pinmePanel.selectedImages[i]; if (!item.isVideo){ form.innerHTML += ''; form.innerHTML += ''; } else { form.innerHTML += ''; for (prop in item) { form.innerHTML += ''; } } } window.pinmePanel.panel.appendChild(form); form.submit(); window.pinmePanel.close(); }; window.document.onkeydown = function (e) { if (!e) e = event; if (e.keyCode == 27) { window.pinmePanel.close(); } }; var css = []; css.push("div.pinmePanel {font-family: arial; font-size: 12px; color: #000; position: fixed; width: 100%; height: 100%; top: 0; left: 0; z-index: 10000000002; box-sizing: content-box; -moz-box-sizing: content-box; -ms-box-sizing: content-box; -webkit-box-sizing: content-box;}"); css.push("div.pinmePanel div { display: block; }"); css.push("div.pinmePanel div, div.pinmePanel a {box-sizing: content-box; -moz-box-sizing: content-box; -ms-box-sizing: content-box; -webkit-box-sizing: content-box;}"); css.push("div.pinmePanel a, div.pinmePanel a:hover {color: #000;}"); css.push("div.pinmePanel div.pinmeHeader {width: 95%; margin: 5px auto; text-align: center;}"); css.push("div.pinmePanel div.pinmeTitleHeader {font-size:16px; padding-top: 20px; text-align: center;}"); css.push("div.pinmePanel div.pinmeClose {background: #fff; text-align: center; cursor: pointer; margin-bottom: 30px; font-size: 14px; padding-top:12px; height:28px; font-weight: bold; border-bottom: 1px solid #ccc;}"); css.push("div.pinmePanel div.pinmeClose:hover {background: #fafafa; color: #fb5350}"); css.push("div.pinmePanel .pinmeImage {display: inline-block; cursor: pointer; position: relative; width: 120px; background: #ccc; height: 120px; overflow: hidden;margin:5px; border: 1px solid #000;}"); css.push("div.pinmePanel .pinmeIcoVideo {background: url('"+baseNoSchemaStaticUrl+"asset/rele/img/face/ico_video.png') no-repeat; width:26px;height:30px; position:absolute; z-index:2; right:3px;top:3px;}"); css.push("div.pinmePanel .pinmeSelectButton {background: url('"+baseNoSchemaStaticUrl+"asset/rele/img/widget/button_select.png') no-repeat; width:71px;height:25px; position:absolute; z-index:3; left:25px;top:45px; display:none;}"); css.push("div.pinmePanel .pinmeImage.selected .pinmeSelectButton {background: url('"+baseNoSchemaStaticUrl+"asset/rele/img/widget/button_deselect.png') no-repeat;}"); css.push("div.pinmePanel .pinmeImage:hover .pinmeSelectButton {display:block;}"); if (isChrome() || isSafari()) css.push("div.pinmePanel .pinmeImage {display: block; float: left;}"); css.push("div.pinmePanel .pinmeImage.selected {border: 1px solid #fc7573;}"); css.push("div.pinmePanel div.pinmeImageContainer {max-height: 50%; position: relative; background:#fff; overflow: auto; text-align: center; width: 94%; margin: 0px auto; border: 1px solid #ccc; padding: 10px;}"); css.push("div.pinmePanel .pinmeImage img {width: 120px; border: 0px;}"); css.push("div.pinmePanel .pinmeImage div.pinmeInfo {width: 112px; font-size: 11px; padding: 4px; position: absolute; bottom: 0px; left: 0px; color: #fff; text-align: center; background: #000;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=70);-khtml-opacity: 0.7;opacity: 0.7;}"); css.push("div.pinmePanel .pinmeImage.selected div.pinmeInfo {background: #fc7573;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);-khtml-opacity: 1;opacity: 1;}"); css.push("div.pinmeBlock {position:fixed;width:100%;height:100%;z-index: 10000000001;background:#fff;top: 0; left: 0;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=90);-khtml-opacity: 0.9;opacity: 0.9;}"); css.push("div.pinmePanel a.pinmeButton {display: none; background: #fc7573; color: #fff; margin: 20px auto 0px; padding: 15px 0px; font-size:16px; text-align: center; width: 200px; bottom: 5%; position: fixed; left: 50%; margin-left: -100px; text-decoration: none; border-radius: 4px;}"); css.push("div.pinmePanel a.pinmeButton:hover {text-decoration: none;}"); //ie quirkmode fix if (isIE() && document.compatMode != 'CSS1Compat') { css.push("div.pinmePanel, div.pinmeBlock {position: absolute;}"); css.push("div.pinmePanel div.pinmeClose {height:40px;}"); css.push("div.pinmePanel a.pinmeButton {height: 56px; margin-left:40%;}"); css.push("div.pinmePanel .pinmeImage div.pinmeInfo {width: 122px;}"); } css = css.join("\n"); window.pinmePanel.style = document.createElement("style"); window.pinmePanel.style.type = "text/css"; window.pinmePanel.style.media = "screen"; if (isIE()) { window.pinmePanel.style.styleSheet.cssText = css; document.getElementsByTagName("head")[0].appendChild(window.pinmePanel.style) } else { if (navigator.userAgent.lastIndexOf("Safari/") > 0 && parseInt(navigator.userAgent.substr(navigator.userAgent.lastIndexOf("Safari/") + 7, 7)) < 533) { window.pinmePanel.style.innerText = css; } else { window.pinmePanel.style.innerHTML = css; } document.body.appendChild(window.pinmePanel.style) } window.pinmePanel.block = document.createElement('div'); addClass(window.pinmePanel.block, 'pinmeBlock'); document.body.appendChild(window.pinmePanel.block); window.pinmePanel.panel = document.createElement('div'); addClass(window.pinmePanel.panel, 'pinmePanel'); document.body.appendChild(window.pinmePanel.panel); window.pinmePanel.panel.innerHTML += '
Отменить
'; window.pinmePanel.panel.innerHTML += '
Pinme.ru
Выберите картинки:
'; window.pinmePanel.imageContainer = document.createElement('div'); addClass(window.pinmePanel.imageContainer, 'pinmeImageContainer'); window.pinmePanel.panel.appendChild(window.pinmePanel.imageContainer); window.pinmePanel.submitButton = document.createElement('a'); window.pinmePanel.submitButton.href = '#'; window.pinmePanel.submitButton.innerHTML = 'Далее »'; addClass(window.pinmePanel.submitButton, 'pinmeButton'); window.pinmePanel.submitButton.onclick = function() { window.pinmePanel.submit(); return false; }; window.pinmePanel.panel.appendChild(window.pinmePanel.submitButton); window.document.getElementById(pinmeUID + '_pinmeClose').addEventListener('click', window.pinmePanel.close); } var imagesSrc = []; var videoId = null; window.pinmePanel.images = []; window.pinmePanel.selectedImages = []; var meta = document.getElementsByTagName('meta'); for (var i=0; i= 150 && (typeof image.src != 'undefined') && !in_array(image.src, imagesSrc) && image.src.indexOf('data:image') == -1) { window.pinmePanel.images.push(image); imagesSrc.push(image.src); } } // Youtube (iframe) var iframes = document.getElementsByTagName('iframe'); for (var i = 0; i < iframes.length; i++) { if ((videoId = /^https?:\/\/(www\.)?youtube\.com\/(embed|v)\/([a-zA-Z0-9\-_]+)/.exec(iframes[i].src)) && (videoId=videoId[3]) && !in_array(videoId, imagesSrc)) { window.pinmePanel.images.push({ isVideo: true, src: iframes[i].src, alt: 'Видео Youtube', thumb: 'http://img.youtube.com/vi/'+videoId+'/0.jpg', videoId: videoId, provider: 'youtube' }); imagesSrc.push(videoId); } } // Youtube/Rutube (embed) @todo проверить работает ли это var embeds = document.getElementsByTagName('embed'); for (var i = 0; i < embeds.length; i++) { if ((videoId = /^https?:\/\/(www\.)?youtube\.com\/(embed|v)\/([a-zA-Z0-9\-_]+)/.exec(embeds[i].src)) && (videoId=videoId[3]) && !in_array(videoId, imagesSrc)) { window.pinmePanel.images.push({ isVideo: true, src: embeds[i].src, alt: 'Видео Youtube', thumb: 'http://img.youtube.com/vi/'+videoId+'/0.jpg', videoId: videoId, provider: 'youtube' }); imagesSrc.push(videoId); } else if ((videoId = /^https?:\/\/(www\.)?video\.rutube\.ru\/([a-z0-9]+)/.exec(embeds[i].src)) && (videoId=videoId[2]) && !in_array(videoId, imagesSrc)) { window.pinmePanel.images.push({ isVideo: true, src: embeds[i].src, alt: 'Видео Rutube', thumb: 'http://tub.rutube.ru/thumbs/'+videoId.substr(0,2)+'/'+videoId.substr(2,2)+'/'+videoId+'-2.jpg', videoId: videoId, provider: 'rutube' }); imagesSrc.push(videoId); } } if (!window.pinmePanel.images.length) { var url = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'pinme.ru/pin/source_failed'; url += ('?url=' + encodeURIComponent(document.location.href)); url += ('&tool=' + encodeURIComponent('button')); var xhr = new XMLHttpRequest(); xhr.open('POST', url, true); xhr.send(); alert('К сожалению, подходящих фотографий не найдено'); window.pinmePanel.proceed = false; return false; } temphide('embed'); temphide('iframe'); temphide('object'); if (document.compatMode != 'CSS1Compat') document.body.scrollTop = 0; initPanel(); var imgHtml = ''; window.pinmePanel.images.sort(function(a,b) { if (a.isVideo && !b.isVideo) return -1; if (!a.isVideo && b.isVideo) return 1; if (a.isVideo && b.isVideo) return 0; if ((a.width*a.height) >= (b.width*b.height)) return -1; return 1; }); for (var i = 0; i < window.pinmePanel.images.length; i++) { var img = window.pinmePanel.images[i]; if (img.isVideo) { imgHtml += '
' + img.alt + '
'; } else { imgHtml += '' + img.alt + '
' + img.width + 'x' + img.height + '
'; } } window.pinmePanel.imageContainer.innerHTML = imgHtml; for (var i = 0; i < window.pinmePanel.images.length; i++) { var el = window.document.getElementById(pinmeUID + '_pinmeImage_' + i); el.imgId = i; el.addEventListener('click', window.pinmePanel.select); } })();