// ==UserScript==
// @name Automatic copying the photo URL to clipboard in PhotoBucket album
// @name:zh-TW 自動複製PhotoBucket圖片URL至剪貼板
// @namespace http://WWW.NTRSN.CN/
// @version 0.2
// @description If the result is not complete, please increase the Delay time。
// @description:zh-tw 若是結果不完整請提高延時
// @note I'm sorry.I took a lot of times.But The function of save as TXT just not work :( Can you tell me what's the wrong???
// @author WWW.NTRSN.CN
// @match http://s50.photobucket.com/*/library/*
// @require https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.3/FileSaver.min.js
// @supportURL 873248164@qq.com
// @contributionURL https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=873248164@qq.com&item_name=Greasy+Fork+donation
// @grant GM_addStyle
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_listValues
// @grant GM_deleteValue
// @grant GM_registerMenuCommand
// @grant GM_setClipboard
// @compatible chrome
// @compatible firefox
// @compatible opera 未測試not test
// @compatible safari 未測試not test
// ==/UserScript==
(function() {
'use strict';
// Your code here...
/*jshint multistr: true */
var tipStyle = "\
#dashboard {position:fixed;top:20px;right:20px;width:440px;height:auto;background-color:#fff;border:1px solid #000;padding:0px 30px 0px 30px;z-index:999}\
#dashboard h1{height:52px;line-height:52px;text-align:center;}\
#dashboard div{font-size:14px;}\
#dashboard fieldset{border:1px solid #ccc;padding:8px 12px;line-height:32px;}\
#dashboard fieldset legend{font-weight:700}\
#dashboard label{width:50px;text-align:left;display:inline;}\
#dashboard input{width:80px;margin-top:10px;}\
";
GM_addStyle(tipStyle);
function Setting()
{
var d = document;
var div = d.createElement('div');
div.id = 'dashboard';
div.innerHTML = "\
<h1>設定Setting</h1>\
<ol id='dol'>\
</ol>\
<fieldset>\
<center><legend>設定複製類型Setting the copy type</legend></center>\
<label for='Direct'>Direct</label> <input id='Direct' type='checkbox' value='Direct'>\
<label for='HTML '>HTML</label> <input id='HTML' type='checkbox' value='HTML'>\
<label for='IMG'>IMG codes</label> <input id='IMG' type='checkbox' value='IMG'><br />\
<center><label>類型是:Type is:</label> <input id='Type' type='text'></center>\
</fieldset>\
<fieldset>\
<center><legend>設定延時時間Setting the Delay time</legend></center>\
   <label for='RunningDelay'>加載腳本Load script</label> <input id='RunningDelay' type='text'> <label for='RunningDelay'>毫秒 millisecond</label><br />\
   <label for='organizerHandleDelay'>點擊圖片First Image</label> <input id='organizerHandleDelay' type='text'> <label for='organizerHandleDelay'>毫秒 millisecond</label><br />\
   <label for='selectallButtonDelay'>點擊全選Full Select</label> <input id='selectallButtonDelay' type='text'> <label for='selectallButtonDelay'>毫秒 millisecond</label><br />\
   <label for='iconlinkDelay'>點擊連結Link Button</label> <input id='iconlinkDelay' type='text'> <label for='iconlinkDelay'>毫秒 millisecond</label><br />\
   <label for='CopyDelay'>複製連結Copy Links</label> <input id='CopyDelay' type='text'> <label for='CopyDelay'>毫秒 millisecond</label><br />\
<center><input id='SetDelay' type='button' value='確定OK'></center>\
</fieldset>\
<input id='clos' type='button' value='關閉Close' onclick=\"document.body.removeChild(document.getElementById('dashboard'))\">  <label for='TXT'>是否下載TXT檔案Whether save as TXT</label><input id='TXT' type='checkbox'>\
";
d.body.appendChild(div);
if(GM_getValue('TYPE')!==undefined)
{
document.getElementById('Type').value=GM_getValue('TYPE');
document.getElementById(GM_getValue('TYPE')).checked=true;
}
document.getElementById('RunningDelay').value=GM_getValue('RunningDelay');
document.getElementById('organizerHandleDelay').value=GM_getValue('organizerHandleDelay');
document.getElementById('selectallButtonDelay').value=GM_getValue('selectallButtonDelay');
document.getElementById('iconlinkDelay').value=GM_getValue('iconlinkDelay');
document.getElementById('CopyDelay').value=GM_getValue('CopyDelay');
if(GM_getValue('TXT')==true)//**************It's not work*******************
{
document.getElementById('TXT').checked='true';
}
document.getElementById('SetDelay').addEventListener('click',function(){
var RunningDelay=document.getElementById('RunningDelay').value;
var organizerHandleDelay=document.getElementById('organizerHandleDelay').value;
var selectallButtonDelay=document.getElementById('selectallButtonDelay').value;
var iconlinkDelay=document.getElementById('iconlinkDelay').value;
var CopyDelay=document.getElementById('CopyDelay').value;
if(!isNaN(RunningDelay)&&RunningDelay!==''&&!isNaN(organizerHandleDelay)&&organizerHandleDelay!==''&&!isNaN(selectallButtonDelay)&&selectallButtonDelay!==''&&!isNaN(iconlinkDelay)&&iconlinkDelay!==''&&!isNaN(CopyDelay)&&CopyDelay!=='')
{
GM_setValue('RunningDelay',RunningDelay);
GM_setValue('organizerHandleDelay',organizerHandleDelay);
GM_setValue('selectallButtonDelay',selectallButtonDelay);
GM_setValue('iconlinkDelay',iconlinkDelay);
GM_setValue('CopyDelay',CopyDelay);
alert('設定成功哦 Set up success!');
}
else
{
alert('您沒有設定延遲時間哦 You are not yet setting delay time!');
}
},false);
document.getElementById('RunningDelay').addEventListener('click',function(){
var RunningDelay=document.getElementById('RunningDelay').value;
if(RunningDelay=='undefined')
{
document.getElementById('RunningDelay').value='';
}
},false);
document.getElementById('organizerHandleDelay').addEventListener('click',function(){
var organizerHandleDelay=document.getElementById('organizerHandleDelay').value;
if(organizerHandleDelay=='undefined')
{
document.getElementById('organizerHandleDelay').value='';
}
},false);
document.getElementById('selectallButtonDelay').addEventListener('click',function(){
var selectallButtonDelay=document.getElementById('selectallButtonDelay').value;
if(selectallButtonDelay=='undefined')
{
document.getElementById('selectallButtonDelay').value='';
}
},false);
document.getElementById('iconlinkDelay').addEventListener('click',function(){
var iconlinkDelay=document.getElementById('iconlinkDelay').value;
if(iconlinkDelay=='undefined')
{
document.getElementById('iconlinkDelay').value='';
}
},false);
document.getElementById('TXT').addEventListener('click',function(){//**************It's not work*******************
var TXT= document.getElementById('TXT');
if(TXT.checked!=='true')
{
GM_setValue('TXT',true);
}
else
{
GM_setValue('TXT',false);
}
},false);
document.getElementById('CopyDelay').addEventListener('click',function(){
var CopyDelay=document.getElementById('CopyDelay').value;
if(CopyDelay=='undefined')
{
document.getElementById('CopyDelay').value='';
}
},false);
document.getElementById('Direct').addEventListener('click',function() {
Event('Direct');
},true);
document.getElementById('HTML').addEventListener('click',function(){
Event('HTML');
},false);
document.getElementById('IMG').addEventListener('click',function(){
Event('IMG');
},false);
function Event(id)
{
if(GM_getValue('TYPE')==undefined )
{
GM_setValue('TYPE',id);
}
else if(GM_getValue('TYPE')!==undefined && GM_getValue('TYPE')!==id)
{
document.getElementById(GM_getValue('TYPE')).checked=false;
GM_setValue('TYPE',id);
/* GM_setValue('Direct','Direct');GM_setValue('HTML','HTML');GM_setValue('IMG','IMG');**************It's an old approach*******************
var list=GM_listValues();
GM_deleteValue(id);
for(var i in list)
{
if(list[i]==GM_getValue('TYPE')||list[i]==GM_getValue('Delay'))
{
continue;
}
else
{
document.getElementById(GM_getValue(list[i])).checked=false;
}
}*/
}
else
{
document.getElementById(id).checked=false;
GM_setValue('TYPE','undefined');
}
document.getElementById('Type').value=GM_getValue('TYPE');
}
/* Array.prototype.removeByValue = function(val) {**************It's an old approach and not work*******************
for(var i=0; i<this.length; i++) {
if(this[i] == val) {
this.splice(i, 1);
break;
}
}
};var type=new Array('Direct','HTML','IMG');type.RemoveByValue(id);*/
}
function GetType()
{
var Type;
if(typeof(GM_getValue('TYPE'))!==undefined)
{
Type=GM_getValue('TYPE');
}
else{
alert('您沒有設定複製類型哦You are not yet set the copy type!');
}
return Type;
}
function AUTOCOPY(organizerHandle,selectallButton,iconlink)
{
setTimeout(function(){
//for(var i in organizerHandle)
//{
organizerHandle[0].click();
//}
},GM_getValue('organizerHandleDelay'));
setTimeout(function(){
selectallButton.click();
},GM_getValue('selectallButtonDelay'));
setTimeout(function(){
iconlink.click();
},GM_getValue('iconlinkDelay'));
setTimeout(function(){
var Type =GetType();
var lable='bulk_link_modal_ccinput_';
var Values;
switch (Type)
{
case 'Direct':
Values=document.getElementById(lable+'0').value;
break;
case 'HTML':
Values=document.getElementById(lable+'1').value;
break;
case 'IMG':
Values=document.getElementById(lable+'2').value;
break;
}
GM_setClipboard(Values);
if(typeof(Values)!=='undefined'|| Values !== null || Values !== ""){
alert('複製成功。值為Copy successful!The data is:\n\n'+Values);
if(GM_getValue('TXT')==true)//**************It's not work:(*******************
{
SaveToTXT(Values);
}
}
else
{
alert('複製失敗哦Copy failed!\n'+Values);
}
document.getElementById('bulkLinkModal').style.visibility='hidden';
},GM_getValue('CopyDelay'));
}
function Click()
{
window.onload=function(){
var organizerHandle=document.getElementsByClassName('organizerHandle');
var selectallButton=document.getElementById('selectallButton');
var iconlink=document.getElementsByClassName('icon-link')[0];
do{
AUTOCOPY(organizerHandle,selectallButton,iconlink);
}
while(typeof(typeof(organizerHandle)=='undefined'||selectallButton)=='undefined'||typeof(iconlink)=='undefined');
};
}
function SaveToTXT(values)
{
var title=document.getElementsByClassName('rw editable-field')[1];
if(title!==undefined){
title=title.innerHTML.replace(/^\s*|\s*$/g, "");
}
else{
title=document.title;
}
var blob = new Blob([values], {type: "text/plain;charset=utf-8"});
saveAs(blob,title+".txt");
document.querySelector("#bulkLinkModal").style.display='none';
document.querySelector(".modal-backdrop").style.display='none';
}
GM_registerMenuCommand('設定複製類型 Setting the copy type',Setting,"s");
setTimeout(function(){
Click();
},GM_getValue('RunningDelay'));
})();