// gmail.js - open Google Gmail in the system browser
//
// Version 0.4.1
// Modifications by sai (sai@entropyfarm.org) for use with the logitech m610 mouse
// Changed the gmail url and url entities to the new mail.google.com/mail site and plain ampersands and equals.
//
//
// Version 0.4
// Graham Wilmott (grahamwilmott@gmail.com)
// David Haywood Smith (DaveHS@GMail.com)
// Welton Danniel Souza (welton.danniel@gmail.com)
//
// You can run this script with Windows Scripting Host by invoking
// cscript.exe from the Windows command shell, or by using wscript.exe
// from Windows Explorer. I associate this with IE so that clicking on
// a mailto opens Gmail.
//
// For the latest version of this script, plus documentation on how to
// set up IE to use this script to handle mailto links, see
// http://www.grahamwilmott.co.uk/gmail/
//
// Based upon a script by Andrew Ho
// http://www.zeuscat.com/andrew/software/googlegroups.shtml
//
// Updated by Welton Danniel Souza (July 2005)
// to include more features.


var consMailto = "mailto:";
var consCC = "CC=";
var consBCC = "BCC=";
var consSubject = "Subject=";
var consBody = "Body=";
var consQuery = "?";

var objArgs = WScript.Arguments;

if (objArgs.length >= 1) {
	var strArguments = objArgs(0);

	var strMailto = "";
	var strCC = "";
	var strBCC = "";
	var strSubject = "";
	var strBody = "";

	if(strArguments.indexOf(consMailto) != -1)
	{
		//look for some argument other then mailto...
		var intPosQuery = strArguments.indexOf(consQuery);
		if(intPosQuery == -1)
		{
			//only mailto
			strMailto = strArguments.substring(consMailto.length);
		}
		else
		{
			//extra arguments
			strMailto = strArguments.substring(consMailto.length,intPosQuery);

			var strOtherParameters = strArguments.substring(intPosQuery + 1);
			var arrOtherParameters = strOtherParameters.split('&');

			for(i = 0; i < arrOtherParameters.length; i++)
			{
				//the else if is because cc exist in bcc...
				if(arrOtherParameters[i].indexOf(consBCC) != -1)
					strBCC = arrOtherParameters[i].substring(consBCC.length);
				else if(arrOtherParameters[i].indexOf(consCC) != -1)
					strCC = arrOtherParameters[i].substring(consCC.length);
				if(arrOtherParameters[i].indexOf(consSubject) != -1)
					strSubject = arrOtherParameters[i].substring(consSubject.length);
				if(arrOtherParameters[i].indexOf(consBody) != -1)
					strBody = arrOtherParameters[i].substring(consBody.length);
			}
		}
		openURL(strMailto, strCC, strBCC, strSubject, strBody);
	}
} else {
    var objShell = WScript.CreateObject("WScript.Shell");
    objShell.Run("http://www.gmail.com");
}

function openURL(strMailto, strCC, strBCC, strSubject, strBody)
{
	var strURL = "http://mail.google.com/mail/?view=cm&fs=1&tf=1"
	strURL += "&to=" + strMailto;
	if(strCC.length > 0)
		strURL += "&cc=" + strCC;
	if(strBCC.length > 0)
		strURL += "&bcc=" + strBCC;
	if(strSubject.length > 0)
		strURL += "&su=" + strSubject;
	if(strBody.length > 0)
		strURL += "&body=" + strBody;

	while(strURL.indexOf("%20") != -1)
	{
		strURL = strURL.replace("%20", "%2520");
		strURL = strURL.replace("+", "%2520");
		strURL = strURL.replace(" ", "%2520");
		strURL = strURL.replace("#", "%2523");
	}

	var objShell = WScript.CreateObject("WScript.Shell");
	objShell.Run(strURL);
}
