// ==UserScript==
// @name           Private Message Reply All
// @namespace      tacticalgamer.com
// @description    Enables Reply-All functionality to Private Messages
// @include        http://www.tacticalgamer.com/private.php?do=showpm&pmid*
// @include        http://www.tacticalgamer.com/private.php?do=newpm&*
// ==/UserScript==
//
// Version 00 [ 06.Jun.07  - WhiskeySix ] Initial Version
// Version 01 [ 06.Jun.07  - WhiskeySix ] added original sender

var base64_all = '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';

debugDiv = document.getElementById('vbwrapper3')
if(debugDiv){
    //debugDiv.style.border = '5px solid red'
}

//create GM storage strings if they don't already exist
toList = GM_getValue("privatemessagereplyall_names", "");
multiReply = GM_getValue("privatemessagereplyall_pressed", "");

//===== if Reading a PM, find and store the recipient list ============================
if(window.location.href.indexOf('private.php\?do\=showpm\&pmid') != -1)
{
    namesCell = 0;
    directPM = 1;

    //--- find recipient list -------------
    allCells = document.getElementsByTagName('td');
    if(allCells.length > 0){
        for(i = 0; i<allCells.length; i++){
            if(allCells[i].innerHTML.indexOf('Recipients') != -1)
            {
                namesCell = allCells[i];
                directPM=0;
                i = allCells.length; //abort loop                
            }
        }
    }
    
    //--- if multiple recipients ---------
    if(directPM == 0)
    {
        //--- find sender's name, so it will only be in reply-all list one time -----
        userDiv = document.getElementById('postmenu_');
        fromName = userDiv.getElementsByTagName('a')[0].text;
        
        //--- find my name so it can be removed from the to: list ----
        allStrongs = document.getElementsByTagName('strong');
        for(i=0; i<allStrongs.length; i++){
            if(allStrongs[i].innerHTML.indexOf('Welcome, ')!= -1){
                start = allStrongs[i].innerHTML.lastIndexOf(", ");
                end = allStrongs[i].innerHTML.indexOf(".");
                myName = allStrongs[i].innerHTML.substring(start+2, end)
            }
        }
        
        
        //--- generate recipient List --------
        var thisName = ""
        var nameList = ""
        nameSpans = namesCell.getElementsByTagName('span');
        for(i=1; i<nameSpans.length; i++)
        {
            thisName = nameSpans[i].innerHTML
            if((thisName != fromName)&(thisName!= myName)){
                nameList = nameList + ''+thisName+'' + '\; ';
            }
        }
        
       //--- find cell to insert "reply all button--
        allImgs = document.getElementsByTagName('img');
        if(allImgs.length>0){
            for(i=0; i<allImgs.length; i++){
                if(allImgs[i].title == 'Reply With Quote'){
                    replyAnchor = allImgs[i].parentNode
                    i = allImgs.length; //abort loop
                }
            }
            //--- Create and insert reply-all button 
            if(replyAnchor){                
                buttonsCell = replyAnchor.parentNode;
                replyAllAnchor= document.createElement('a')
                replyAllAnchor.innerHTML = '\<img src\=\"data\:image\/png\;base64\,'+base64_all+'\"\>'
                replyAllAnchor.title = 'Reply To:  '+fromName+'\; '+nameList+'' //"Reply All"
                replyAllAnchor.style.cursor = 'pointer';
                buttonsCell.insertBefore(replyAllAnchor, buttonsCell.childNodes[7])
                replyAllAnchor.addEventListener('click', replyAllFunc, false);
            }
        }
    }
    
    //--- Single recipient - do not add reply all functionality
    else{
        //debugDiv.style.border = '10px solid red'
        GM_setValue("privatemessagereplyall_names", "");
        GM_setValue("privatemessagereplyall_pressed","0"); 
    }
}


//===== IF ON REPLY PAGE, ADD MULTIPLE RECIPIENTS IF THEY EXISTED =============================
else if(window.location.href.indexOf('private.php\?do\=newpm\&pmid\=') != -1)
{
    toList = GM_getValue("privatemessagereplyall_names");
    multiReply = GM_getValue("privatemessagereplyall_pressed");
    
    if(multiReply == "1")
    {
        //debugDiv.style.border = '5px solid orange'
        
        //replace sinlge recipient with multiple recipients
        textBox = document.getElementById('pmrecips_txt');
        textBox.innerHTML = textBox.innerHTML + toList
        
        //clear saved values
        GM_setValue("privatemessagereplyall_names", "");
        GM_setValue("privatemessagereplyall_pressed", "0");         
    }
    else
    {
        //debugDiv.style.border = '5px solid yellow'
    }
}
        
        
        
        
        

function replyAllFunc()
{
    //if not a direct (single recipient) PM
    if(directPM==0){
        //debugDiv.style.border = '5px solid blue'
        
        //normal reply 
        GM_setValue("privatemessagereplyall_pressed", "1");
        GM_setValue("privatemessagereplyall_names", nameList);  
    }
    else{
        //debugDiv.style.border = '5px solid purple'
        
        //multi-recipient reply
        GM_setValue("privatemessagereplyall_pressed", "0"); 
        GM_setValue("privatemessagereplyall_names", "");
    }
    
    //go to reply page
    location.href = replyAnchor.href;
}
	        
        
    
    
