// SquirrelTo by Headbonk 
//    A User Specified Javascript that re-writes mailto links to open a compose
//      window for the webmail application SquirrelMail.
//
// version 0.3
// see http://www.headbonk.com/blog
//

// Change this variable to point to your squirrelmail install
var squirrelPath = "https://secure32.nocdirect.com:2096/3rdparty/squirrelmail/src/";

// targetWin is the window to open compose window in. Change to "" or "_self" to open
// in the same window as the mailto link.
var targetWin = "_blank";

// setup load handler 
document.addEventListener(
  'load',
  function (e) {
    if( !document.body ) { return; }
    
    var linkArray=document.getElementsByTagName("a");
    var numLinks=linkArray.length;
    for (i=0; i<numLinks; i++)
    {
        var lStr = linkArray[i].href;
        if (!lStr.indexOf("mailto"))
        {
            // parse the mailto address
            var aStr = lStr.substring(lStr.indexOf(":")+1);
            var atIdx = aStr.indexOf("@");
            if (atIdx != -1) { // assume all adresses are user@host form
                var qIdx = aStr.indexOf("?"); // does it have other mailto parameters?
                var linkStr;
                if (qIdx==-1)
                {
                    linkStr = squirrelPath + "compose.php?send_to=" + aStr.substring(0, atIdx) + "%40" + aStr.substring(atIdx+1);
                }
                else
                {
                    linkStr = squirrelPath + "compose.php?send_to=" + aStr.substring(0, atIdx) + "%40" + aStr.substring(atIdx+1, qIdx);
                    
                    // look for parameters that Squirrel accepts and possibly translate to the squirrel versions
                    var linkParams = aStr.substring(qIdx+1).split( "&" );
                    for ( var paramIdx = 0; paramIdx < linkParams.length; ++paramIdx )
                    {
                        var param = linkParams[ paramIdx ];
                        var nameVal = param.split( "=" );
                        
                        if (nameVal.length==2)
                        {
                            switch (nameVal[0].toLowerCase()) 
                            {
                            case "subject" :
                            case "body" :
                                linkStr += "&" + nameVal[0].toLowerCase() + "=" + nameVal[1];
                                break;
                            case "cc" :
                                linkStr += "&send_to_cc" + "=" + nameVal[1];
                                break;
                            case "bcc" :
                                linkStr += "&send_to_bcc" + "=" + nameVal[1];
                                break;
                            }
                        }
                    }
                }
                
                linkArray[i].href = linkStr;
                linkArray[i].target = targetWin;
            }
        }
    }
  },
  false
);
