Automatic copying the photo URL to clipboard in PhotoBucket album

If the result is not complete, please increase the Delay time。

// ==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>&nbsp;<input id='Type' type='text'></center>\
</fieldset>\
<fieldset>\
<center><legend>設定延時時間Setting the Delay time</legend></center>\
&emsp;&emsp;&emsp;<label for='RunningDelay'>加載腳本Load script</label>&nbsp;<input id='RunningDelay' type='text'>&nbsp;<label for='RunningDelay'>毫秒 millisecond</label><br />\
&emsp;&emsp;&emsp;<label for='organizerHandleDelay'>點擊圖片First Image</label>&nbsp;<input id='organizerHandleDelay' type='text'>&nbsp;<label for='organizerHandleDelay'>毫秒 millisecond</label><br />\
&emsp;&emsp;&emsp;<label for='selectallButtonDelay'>點擊全選Full Select</label>&nbsp;<input id='selectallButtonDelay' type='text'>&nbsp;<label for='selectallButtonDelay'>毫秒 millisecond</label><br />\
&emsp;&emsp;&emsp;<label for='iconlinkDelay'>點擊連結Link Button</label>&nbsp;<input id='iconlinkDelay' type='text'>&nbsp;<label for='iconlinkDelay'>毫秒 millisecond</label><br />\
&emsp;&emsp;&emsp;<label for='CopyDelay'>複製連結Copy Links</label>&nbsp;<input id='CopyDelay' type='text'>&nbsp;<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'))\">&emsp;&emsp;<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'));
})();