Open main menu

CDOT Wiki β

Learning Collaborative Development Lab Fall 2008 Results

Revision as of 14:15, 11 September 2008 by Scott (talk | contribs)

Place any and all common results, code, notes here.

Zenit-Wiki Search by Ezadkiel Marbella:

CmdUtils.CreateCommand({
 name: "zenit/wiki specific search:",
 takes: {"search zenit/wiki term": noun_arb_text},
 preview: function( pblock, wikiquery ) {
   pblock.innerHTML = "Will Search For: " + wikiquery.text;
 },
 execute: function( wikiquery ) {
  var url = "http://zenit.senecac.on.ca/wiki/index.php/Special:Search?search={QUERY}&go=Go"
  var query = wikiquery.text;
  var urlString = url.replace("{QUERY}", query);
  Utils.openUrlInBrowser(urlString);
 }
})

This is my submission. I am assuming we are encouraged to reuse code wherever possible. When using the search it is recommended that you separate the terms by + signs as that is what the goggle interface inserts between search terms. I found that it works when spaces are used as well though.

--John64 16:24, 9 September 2008 (UTC)

/*This function is based off Ezadkiel Marbella's code
  http://zenit.senecac.on.ca/wiki/index.php/Learning_Collaborative_Development_Lab_Fall_2008_Results
*/
CmdUtils.CreateCommand({
 name: "zenit-google-search:",
 takes: {"search terms seperated by a '+' sign": noun_arb_text},
 preview: function( pblock, googlequery ) {
   pblock.innerHTML = "Will Search For: " + googlequery.text;
 },
 execute: function( googlequery ) {
  var urlPrefix = "http://www.google.ca/search?hl=en&q=site%3Azenit.senecac.on.ca%2Fwiki+"
  var urlSuffix = "&btnG=Search&meta="
  var query = googlequery.text;
  var urlString = urlPrefix + query + urlSuffix;
  Utils.openUrlInBrowser(urlString);
 }
})

--Patrick Lam

This command opens up the ChatZilla extension and connect to moznet

CmdUtils.CreateCommand({
 name: "irc",
 author: {name: "Patrick Lam"},
 icon: "https://addons.mozilla.org/en-US/firefox/images/addon_icon/16",
 preview: "Starts ChatZilla 0.9.83 and connects to irc://moznet/",
 execute: function() {
   Utils.openUrlInBrowser( "irc://moznet/" );
 }
})

This command goes to any users blog at Blogspot

CmdUtils.CreateCommand({
 name: "blog",
 author: {name: "Patrick Lam"},
 takes: {"user": noun_arb_text},
 icon: "http://pplam3.blogspot.com/favicon.ico",
 preview: "Goes to Blogspot by default or to the specified user's blog",
 execute: function( directObj  ) {
   var preText = "www";
   if (directObj.text != "") {
      preText = directObj.text;
   }
   Utils.openUrlInBrowser( "http://" + preText + ".blogspot.com" );
 }
})

This command goes to either Weekly Schedule or the Planet blog

CmdUtils.CreateCommand({
 name: "osd",
 author: {name: "Patrick Lam"},
 takes: {"blog": noun_arb_text},
 preview: "Goes to OSD600 Weekly Schedule. By typing 'blog' after, it goes to the Planet's Blog",
 execute: function( directObj ) {
   if( directObj.text == "") {
     Utils.openUrlInBrowser( "http://zenit.senecac.on.ca/wiki/index.php/DPS909_and_OSD600_Fall_2008_Weekly_Schedule" );
   }
   else {
     Utils.openUrlInBrowser( "http://zenit.senecac.on.ca/~chris.tyler/planet/" );
   }
 }
})

This goes to the printable version of the current wiki page

CmdUtils.CreateCommand({
 name: "print",
 author: {name: "Patrick Lam"},
 preview: "Takes the current wiki page and make it printable",
 execute: function() {
   var currentPath = CmdUtils.getDocumentInsecure().location.href;

   var wikiHome = currentPath.substring(0, currentPath.lastIndexOf("/"));

   /* Gets the title of the document in wiki */
   var wikiTitle = currentPath.substring(currentPath.lastIndexOf("/") + 1);

   /* Makes the printable version url */
   var printURL = wikiHome + "?title=" + wikiTitle + "&printable=yes";

   Utils.openUrlInBrowser( printURL );
 }
})

Searches the XKCD archives for whatever term you enter. Not complex, but can be enjoyable.

CmdUtils.CreateCommand({
	name: "xkcd",
	homepage: "http://belligero.org",
	author: {name: "Jason", email: "slokun@belligero.org"},
	license: "MPL",
	
	description: "Search XKCD",
	takes: {"phrase": noun_arb_text},
	_getSearchUrl: function(term) {
		return "http://www.ohnorobot.com/?comic=56&s="+term;
	},
	
	/* Preview */
	preview: function(pblock, theSearch) {
		var msg = "<img src='http://imgs.xkcd.com/static/xkcdLogo.png'>"+
		"
Search the XKCD archives for "+theSearch.text+""; pblock.innerHTML = msg; }, execute: function(theSearch) { var msg = "Search completed for "+theSearch.text+"..."; Utils.openUrlInBrowser(this._getSearchUrl(theSearch.text)); displayMessage(msg); } })

--Jtarka 17:05, 9 September 2008 (UTC)


Goto a specified users blog on wordpress, modification of Patrick Lam's code

CmdUtils.CreateCommand({
 name: "wpblog",
 takes: {"user": noun_arb_text},
 preview: "Goes to the specified user's blog on wordpress",
 execute: function(directObj) {
   var subdomain = "www";
   if (directObj.text != "") {
      subdomain = directObj.text;
   }
   Utils.openUrlInBrowser( "http://" + subdomain + ".wordpress.com" );
 }
})

--nadavers 17:16, 9 September 2008 (UTC)


Simple command, goes to edit a user's page.
CmdUtils.CreateCommand( {
  name: "EditUserPage",
  author: {name: "Tony Lai"},
  takes: {"user": noun_arb_text},
  preview: function (pblock, user) {
     pblock.innerHTML = "Edits " + user + "'s profile page if the user's page exists";
  },
  execute: function (user) {
     var url = "http://zenit.senecac.on.ca/wiki/index.php?title=User:" + user.text + "&action=edit";
     Utils.openUrlInBrowser(url);
  }
})

--twlai1 17:24, 9 September 2008 (UTC)


By Sid Kalra
Modified version of zenit/wiki search. This searches the zenit/wiki users
CmdUtils.CreateCommand({
 name: "zenit/wiki user search:",
 takes: {"search zenit/wiki user": noun_arb_text},
 preview: function( pblock, wikiquery ) {
   pblock.innerHTML = "Searching For: " + wikiquery.text;
 },
 execute: function( wikiquery ) {
  var url = "http://zenit.senecac.on.ca/wiki/index.php/Special:Search?ns2=1&search={QUERY}&searchx=Search";
  var query = wikiquery.text;
  var urlString = url.replace("{QUERY}", query);
  Utils.openUrlInBrowser(urlString);
 }
})

-- Crulshorukh 17:46, 9 September 2008 (UTC)

CmdUtils.CreateCommand({
 name: "wowhead search:",
 homepage: "http://sidkalra.com/",
 author: { name: "Sid Kalra" },
 description: "Searches wowhead and sorts the results",
 takes: {"search": noun_arb_text},
 modifiers: {
  sort: noun_arb_text
 },
 preview: function(pblock, search1, modifier){
  var message = 'Searching for ${search} sorting by ${sort}';
 },
 execute: function(search, mods) {
  var url = "http://www.wowhead.com/?search={QUERY}";
  var query = search.text;
  var urlString = url.replace("{QUERY}", query);
  urlString += "#" + mods.sort.text;
  Utils.openUrlInBrowser(urlString);
 }
})

-- Crulshorukh 00:48, 10 September 2008 (UTC)


Pirate Bay Search N Sort
by ashughes

Perform a search on The Pirate Bay and sort the results.

Usage: pirate [search] sort [how to sort]

CmdUtils.CreateCommand({
  name: "pirate",
  homepage: "http://ashughes.com/",
  author: { name: "Anthony Hughes", email: "anthony.s.hughes@gmail.com"},
  description: "Searches The Pirate Bay and sorts the results",
  takes: {"search": noun_arb_text},
  modifiers: {
    sort: noun_arb_text
  },
  preview: function(pblock, search, mods) {
    var msg = 'Searches for "${search}" sorted by ${sort}.';
    var subs = {search: search.text, sort: mods.sort.text};
    
    pblock.innerHTML = CmdUtils.renderTemplate(msg, subs);
    pblock.innerHTML = "<h4><u>HELP</u></h4>" +
                       "<p><b>USAGE:</b>" +
                       "<blockquote>pirate <i>[search term]</i> sort <i>[column to sort by]</i></blockquote></p>" +
                       "<p><b>SORT:</b><ul>" +
                       "<li>leechers - sort by leechers</li>" +
                       "<li>seeders - sort by seeders</li>" +                       
                       "<li>size - sort by size</li>" +
                       "<li>upload - sort by upload date/time</li>" +
                       "</ul>";
  },
  execute: function(theSearch, mods) {
    var msg = theSearch.text + "..Search Complete";    
    var url = "http://thepiratebay.org/search/" + theSearch.text;
    if (mods.sort.text == "seeders") {
      url += "/0/7/0";
    } else if (mods.sort.text == "leechers") {
      url += "/0/9/0";
    } else if (mods.sort.text == "upload") {
      url += "/0/3/0";
    } else if (mods.sort.text == "size") {
      url += "/0/5/0";
    }
    Utils.openUrlInBrowser( url );
  }
})

Displays users IP address immediately
by AaronMT

Usage: ip

Utilizes the whatismyip website to parse the IP and display it right in the console

CmdUtils.CreateCommand({
name: "ip",
  homepage: "http://aaronmt.wordpress.com",
  author: { name: "Aaron Train", email: "aaron.train@gmail.com"},
  description: "Displays your internal IP address.",
  help: "Just type IP",
  icon: "http://whatismyip.com/favicon.ico",
  preview: function(pblock) {
    var url = "http://whatismyip.com/automation/n09230945.asp";
    jQuery.get( url, function(data) {
       pblock.innerHTML = data;
    });
  },
  execute: function() {
    var url = "http://whatismyip.com";
    Utils.openUrlInBrowser(url);
  },
});

Searches Altavista for specified term, modification of Ezadkiel Marbella's code
CmdUtils.CreateCommand({
 name: "altavista:",
 takes: {"search terms": noun_arb_text},
 preview: function( pblock, searchquery ) {
   pblock.innerHTML = "<img src='http://us.i1.yimg.com/us.yimg.com/i/us/av/logo_srp.gif' /> Will Search For: " + searchquery.text;
 },
 execute: function( altavistaquery ) {
  var url = "http://www.altavista.com/web/results?itag=ody&q={QUERY}&kgs=1&kls=0"
  var query = altavistaquery.text;
  query = query.replace("+", " ");
  var urlString = url.replace("{QUERY}", query);
  Utils.openUrlInBrowser(urlString);
 }
})

--JesseV 23:19, 9 September 2008 (UTC)


Google Map Directions by Chris Bishop

CmdUtils.CreateCommand(
  {
    author: { name: "Chris Bishop", email: "dee132@gmail.com" },
    description: "Will direct to a page displaying the directions to the addresses supplied by the user.",
    help: "There needs to be atleast one address and each address must end with a semi-colon.",
    name: "Map-Directions",
    takes: {from: noun_arb_text},
      // load map page
    execute: function ( directObj )
    {
        // get the second element which is an object with source
        // and destination addresses
      var params = this._getAddresses( directObj.text )[1];
        // make sure that there is a source address
      if ( params != null )
      {        
        var url = "http://maps.google.com/?";
          // change the object attributes into url parameters
        url += jQuery.param( params );
          // open in a new window
        Utils.openUrlInBrowser( url );
      }
      else
      { 
          // error message for no address supplied       
        displayMessage( "An address has not been inputed. Example is: New York; " );        
      }
    }, // execute
      // gets the addresses from the supplied text
    _getAddresses: function( text )
    {
        // check if there are no valid addresses
      if ( text.indexOf( ";" ) == - 1 )
      {
        return [];
      }
        // split the addresses based on a semi colon
      var addrs = text.split(";");        
      var directions = null;  
      var params = {};    
        // set the first address to be the from address      
      directions = "from: " + addrs[ 0 ];
      params.saddr = addrs[ 0 ]; 
        // loop through the rest of the addresses and add them
        // to the directions or parameters
      for ( var idx = 1; idx < addrs.length - 1; idx++ )
      {        
        directions += " to: " + addrs[ idx ];
        if ( idx == 1 )
        {
          params.daddr = addrs[ idx ];
        }
        else
        {
          params.daddr += "+to:" + addrs[ idx ];
        }
      }
        // return both the directions and parameters
      return [directions,params];
    }, // _getAddresses
      // load a preview map
    preview: function ( pblock, directObj )
    { 
           
      var text = directObj.text;
               
      var directions = this._getAddresses( text )[0];
       // check if a null address was returned
      if ( directions != null )
      {
        pblock.innerHTML = directions;
      }
      else
      {      
        pblock.innerHTML =  "Enter an address followed by a semi-colon for each address to ";
        pblock.innerHTML += "find directions to.<br />";
        pblock.innerHTML += "Example.  New York; Chicago; Miami;";
        pblock.innerHTML += "<br /><br />Each Address must end with a semi-colon.";
      }
            
    } // preview
  }
)


I'll probably continue to work on it. Add some dynamic CSS to the preview div.
--Cbishop2 01:05, 10 September 2008 (UTC)


Searches MedicineNet with a given keyword by AaronMT

Usage: health keyword phrase

CmdUtils.CreateCommand(
{
	name: "health",
	homepage: "http://medicinenet.com",
	author: { name: "Aaron Train", email: "aaron.train@gmail.com" },
	description: "Takes keyword phrase and searches MedicineNet",
	help: "health <i>keyword phrase</i>",
	icon: "http://images.medicinenet.com/images/fav/MN.ico",
	takes: {"Enter a noun": noun_arb_text},
	preview: function(pblock, keywordPhrase)
	{
		pblock.innerHTML = "Search the MedicineNet by entering any phrase <b>" + keywordPhrase.text + "</b>"
	},

	execute: function(keywordPhrase)
	{
		var searchURL = "http://www.medicinenet.com/" + keywordPhrase.text;
		Utils.openUrlInBrowser(searchURL);
	}
});




So I reused Ezadkiel Marbella's code and made code for searching cnet.com. this thing is so much fun I am thinking about making something else too.
- Zaid Ghansar 11th September 2008

CmdUtils.CreateCommand({
 name: "cnet",
 author: { name: "Zaid Ghansar" },
 description: "Searches cnet.com.",
 help: "searches for a highlighted term or typed term at cnet.com",
 takes: {"search terms": noun_arb_text},
 preview: function( pblock, searchquery ) {
   pblock.innerHTML = "<img src='http://i.afterdawn.com/v3/news/cnet_logo.gif' /> Will Search For: " + searchquery.text;
 },
 execute: function( cnetquery ) {
  var url = "http://www.cnet.com/1770-5_1-0.html?query={QUERY}&tag=srch"
  var query = cnetquery.text;
  query = query.replace("+", " ");
  var urlString = url.replace("{QUERY}", query);
  Utils.openUrlInBrowser(urlString);
 }
})

and another for getting NASDAQ stock quotes:

CmdUtils.CreateCommand({
 name: "nasdaq",
 author: { name: "Zaid Ghansar" },
 description: "Shows current NASDAQ stock value.",
 help: "searches for a stocks current vallue at NASDAQ using google",
 takes: {"search stock": noun_arb_text},
 preview: function( pblock, searchquery ) {
   pblock.innerHTML = "<img src='http://www.buylow-sellhigh.com/images/NASDAQ_logo.gif' /> Will Search For: " + searchquery.text;
 },
 execute: function( query ) {
  var url = "http://finance.google.com/finance?client=ob&q=NASDAQ:" + query.text;
  Utils.openUrlInBrowser(url);
 }
})



seneca-library-search
by James Boston

Search the Seneca College Library
Usage: seneca-library-search (search term)

CmdUtils.CreateCommand({
  name: "seneca-library-search",
  takes: {"your search term": noun_arb_text},
  preview: function( pblock, theSearch ) {
    pblock.innerHTML = "Will look for: " + theSearch.text;
  },
  execute: function( theSearch ) {
    var baseUrl = "http://libcat.senecac.on.ca/cgi-bin/Pwebrecon.cgi";
    var params = Utils.paramsToString({
      CNT:	"50",
      DB:	"local",
      SL:	"Submit&LOCA=Books+(no+eResources)|5",
      Search_Arg:	theSearch.text,
      Search_Code:	"FT*"
    });
    Utils.openUrlInBrowser(baseUrl+params);
  }
})




["Now in" timezone]
by Irina Sh.

Tells you what time is it now in (city). Suggests some of them when you type the first letter(s)
Usage: Now-in (city)

v.0.1, must be fixed for using winter-summer time...

noun_type_city = new CmdUtils.NounType( "City", ["Abidjan","Abu Dhabi","Adana","Addis Ababa","Adelaide *","Aden","Aklavik","Aleutian","Alexandria","Algiers","Amsterdam","Anadyr","Anchorage","Ankara","Antananarivo","Antwerp","Asuncion *","Athens","Atlanta","Auckland *","Aveiro","Baghdad","Bamako","Bandar Seri Begawan","Bangkok","Bangui","Banjul","Barcelona","Barranquilla","Beijing","Beirut","Belgrade","Belize City","Berlin","Blantyre","Bogota","Bologna","Bombay - Mumbai","Brasilia","Bratislava","Brazzaville","Bridgetown","Brisbane","Brussels","Bucharest","Budapest","Buenos Aires","Bujumbura","Cairo","Calcutta","Calgary","Cali","Cape Town","Caracas","Cebu","Chicago","Christchurch","Colombo","Conakry","Copenhagen","Cotonou","Dakar","Dallas","Darwin","Delhi","Detroit","Dhaka","Djibouti","Dover","Dubai","Dublin","Dusseldorf","Edmonton","Fairbanks","Florence","Fort de France","Frankfurt","Freetown","Gaborone","Geneva","Gibraltar","Scotland","GMT","Guatemala City","Guayaquil","Hamilton","Harare","Havana","Helsinki","Hobart","Hong Kong","Honolulu","Indianapolis","Ipswich","Islamabad","Istanbul","Jakarta","Jerusalem","Johannesburg","Kabul","Kaduna","Kahira","Kamchatka","Kano","Karachi","Kathmandu","Kiev","Kigali","Kingston","Kinshasa","Kobe","Kosice","Kuala Lumpur","Kuwait City","Kyoto","La Paz","Lagos","Libreville","Lima","Limon","Lisbon","Lome","London","Los Angeles","Lubumbashi","Luxembourg","Madrid","Manama","Manila","Maracaibo","Maseru","Mayaguez","Mbabane","Medan","Medellin","Melbourne *","Mexico City","Milan","Mogadishu","Mombasa","Monrovia","Monte Carlo","Montevideo","Montreal","Morgantown","Moscow","Mumbai - Bombay","Munich","Murmansk","Muscat","N'Djamena","Nagasaki","Nagoya","Nairobi","Naples","Nassau","New Hebrides","New York City","Newfoundland","Niamey","Nice","Nicosia","Nome","Nottingham","Nouakchott","Nuk","Odessa","Oran","Osaka","Oslo","Ottawa","Ouagadougou","Oulu","Oxford","Palma","Panjim","Paramaribo","Paris","Peking","Perth","Phoenix","Ponce","Port Louis","Port Moresby","Port of Spain","Prague","Praia","Puntarenas","Quebec","Quito","Rangoon","Reykjavik","Riga","Rio de Janeiro","Riyadh","Rome","Saigon","Saint Petersburg - Leningrad","Salt Lake City","Salzburg","San Francisco","San Jose","San Juan","Santa Cruz de Tenerife","Santiago *","Santo Domingo","Sao Paulo","Sapporo","Sarajevo","Seattle","Seoul","Shanghai","Singapore","Sofia","Stockholm","Stuttgart","Surabaya","Suva","Sydney *","Taipei","Tallinn","Tampere","Tashkent","Tegucigalpa","Tehran","Tel Aviv","Tokyo","Toronto","Tripoli","Tunis","Turin","Ulanbatar","Valletta","Vancouver","Vatican","Venice","Victoria Falls","Vienna","Vientiane","Vladimir","Vladivostok","Warsaw","Washington DC","Wellington","Winnipeg","Yalta","Zagreb","Zaragoza","Zurich"] );

var timezone = new Array(); timezone["abidjan"] = +0; timezone["abu dhabi"] = +4; timezone["adana"] = +2; timezone["addis ababa"] = +3; timezone["adelaide *"] = +10; timezone["aden"] = +3; timezone["aklavik"] = -9; timezone["aleutian"] = -10; timezone["alexandria"] = +2; timezone["algiers"] = +0; timezone["amsterdam"] = +1; timezone["anadyr"] = +13; timezone["anchorage"] = -9; timezone["ankara"] = +2; timezone["antananarivo"] = +3; timezone["antwerp"] = +0; timezone["asuncion *"] = -3; timezone["athens"] = +2; timezone["atlanta"] = +5; timezone["auckland *"] = +12; timezone["aveiro"] = +0; timezone["baghdad"] = +3; timezone["bamako"] = +0; timezone["bandar seri begawan"] = +8; timezone["bangkok"] = +7; timezone["bangui"] = +1; timezone["banjul"] = +1; timezone["barcelona"] = +1; timezone["barranquilla"] = -5; timezone["beijing"] = +8; timezone["beirut"] = +2; timezone["belgrade"] = +1; timezone["belize city"] = -5; timezone["berlin"] = +1; timezone["blantyre"] = +2; timezone["bogota"] = -5; timezone["bologna"] = +2; timezone["bombay - mumbai"] = +6; timezone["brasilia"] = -3; timezone["bratislava"] = +1; timezone["brazzaville"] = +0; timezone["bridgetown"] = -4; timezone["brisbane"] = +10; timezone["brussels"] = +1; timezone["bucharest"] = +2; timezone["budapest"] = +1; timezone["buenos aires"] = -3; timezone["bujumbura"] = +2; timezone["cairo"] = +2; timezone["calcutta"] = +6; timezone["calgary"] = -6; timezone["cali"] = +0; timezone["cape town"] = +1; timezone["caracas"] = -4; timezone["cebu"] = +8; timezone["chicago"] = -6; timezone["christchurch"] = +12; timezone["colombo"] = +5; timezone["conakry"] = +0; timezone["copenhagen"] = +1; timezone["cotonou"] = +0; timezone["dakar"] = +0; timezone["dallas"] = -6; timezone["darwin"] = +10; timezone["delhi"] = +5; timezone["detroit"] = -5; timezone["dhaka"] = +6; timezone["djibouti"] = +2; timezone["dover"] = -5; timezone["dubai"] = +3; timezone["dublin"] = +0; timezone["dusseldorf"] = +1; timezone["edmonton"] = -7; timezone["fairbanks"] = -9; timezone["florence"] = +2; timezone["fort de france"] = -4; timezone["frankfurt"] = +1; timezone["freetown"] = +0; timezone["gaborone"] = +1; timezone["geneva"] = +1; timezone["gibraltar"] = +1; timezone["scotland"] = +0; timezone["gmt"] = +0; timezone["guatemala city"] = -6; timezone["guayaquil"] = -5; timezone["hamilton"] = -4; timezone["harare"] = +2; timezone["havana"] = -5; timezone["helsinki"] = +2; timezone["hobart"] = +10; timezone["hong kong"] = +8; timezone["honolulu"] = -10; timezone["indianapolis"] = -5; timezone["ipswich"] = +10; timezone["islamabad"] = +5; timezone["istanbul"] = +2; timezone["jakarta"] = +7; timezone["jerusalem"] = +2; timezone["johannesburg"] = +2; timezone["kabul"] = +5; timezone["kaduna"] = +0; timezone["kahira"] = +2; timezone["kamchatka"] = +11; timezone["kano"] = +1; timezone["karachi"] = +5; timezone["kathmandu"] = +6; timezone["kiev"] = +3; timezone["kigali"] = +1; timezone["kingston"] = -5; timezone["kinshasa"] = +1; timezone["kobe"] = +9; timezone["kosice"] = +1; timezone["kuala lumpur"] = +8; timezone["kuwait city"] = +3; timezone["kyoto"] = +9; timezone["la paz"] = -5; timezone["lagos"] = +1; timezone["libreville"] = +0; timezone["lima"] = -5; timezone["limon"] = -5; timezone["lisbon"] = +0; timezone["lome"] = +0; timezone["london"] = +0; timezone["los angeles"] = -8; timezone["lubumbashi"] = +1; timezone["luxembourg"] = +1; timezone["madrid"] = +1; timezone["manama"] = +3; timezone["manila"] = +8; timezone["maracaibo"] = -5; timezone["maseru"] = +2; timezone["mayaguez"] = -4; timezone["mbabane"] = +2; timezone["medan"] = +8; timezone["medellin"] = -5; timezone["melbourne *"] = +10; timezone["mexico city"] = -6; timezone["milan"] = +1; timezone["mogadishu"] = +3; timezone["mombasa"] = +3; timezone["monrovia"] = +0; timezone["monte carlo"] = +1; timezone["montevideo"] = -3; timezone["montreal"] = -5; timezone["morgantown"] = -5; timezone["moscow"] = +3; timezone["mumbai - bombay"] = +5; timezone["munich"] = +1; timezone["murmansk"] = +2; timezone["muscat"] = +3; timezone["n'djamena"] = +0; timezone["nagasaki"] = +9; timezone["nagoya"] = +9; timezone["nairobi"] = +3; timezone["naples"] = +1; timezone["nassau"] = -5; timezone["new hebrides"] = +11; timezone["new york city"] = -5; timezone["newfoundland"] = -3; timezone["niamey"] = +0; timezone["nice"] = +1; timezone["nicosia"] = +2; timezone["nome"] = -9; timezone["nottingham"] = +0; timezone["nouakchott"] = +0; timezone["nuk"] = -3; timezone["odessa"] = +3; timezone["oran"] = +0; timezone["osaka"] = +9; timezone["oslo"] = +1; timezone["ottawa"] = -5; timezone["ouagadougou"] = +0; timezone["oulu"] = +2; timezone["oxford"] = +0; timezone["palma"] = +1; timezone["panjim"] = +5; timezone["paramaribo"] = -4; timezone["paris"] = +1; timezone["peking"] = +8; timezone["perth"] = +8; timezone["phoenix"] = -7; timezone["ponce"] = -4; timezone["port louis"] = +4; timezone["port moresby"] = +10; timezone["port of spain"] = -4; timezone["prague"] = +1; timezone["praia"] = -2; timezone["puntarenas"] = -5; timezone["quebec"] = -5; timezone["quito"] = -5; timezone["rangoon"] = +7; timezone["reykjavik"] = -1; timezone["riga"] = +4; timezone["rio de janeiro"] = -3; timezone["riyadh"] = +3; timezone["rome"] = +1; timezone["saigon"] = +7; timezone["saint petersburg - leningrad"] = +3; timezone["salt lake city"] = -7; timezone["salzburg"] = +1; timezone["san francisco"] = -8; timezone["san jose"] = -6; timezone["san juan"] = -4; timezone["santa cruz de tenerife"] = +0; timezone["santiago *"] = -3; timezone["santo domingo"] = -4; timezone["sao paulo"] = -3; timezone["sapporo"] = +9; timezone["sarajevo"] = +1; timezone["seattle"] = -8; timezone["seoul"] = +9; timezone["shanghai"] = +8; timezone["singapore"] = +8; timezone["sofia"] = +2; timezone["stockholm"] = +1; timezone["stuttgart"] = +1; timezone["surabaya"] = +7; timezone["suva"] = +12; timezone["sydney *"] = +11; timezone["taipei"] = +8; timezone["tallinn"] = +2; timezone["tampere"] = +2; timezone["tashkent"] = +3; timezone["tegucigalpa"] = -5; timezone["tehran"] = +4; timezone["tel aviv"] = +2; timezone["tokyo"] = +9; timezone["toronto"] = -5; timezone["tripoli"] = +1; timezone["tunis"] = +1; timezone["turin"] = +1; timezone["ulanbatar"] = +8; timezone["valletta"] = +1; timezone["vancouver"] = -8; timezone["vatican"] = +1; timezone["venice"] = +1; timezone["victoria falls"] = +2; timezone["vienna"] = +1; timezone["vientiane"] = +7; timezone["vladimir"] = +3; timezone["vladivostok"] = +10; timezone["warsaw"] = +1; timezone["washington dc"] = -5; timezone["wellington"] = +12; timezone["winnipeg"] = -6; timezone["yalta"] = +3; timezone["zagreb"] = +1; timezone["zaragoza"] = +1; timezone["zurich"] = +1;


CmdUtils.CreateCommand({

 name: "now-in",
 takes: {"city": noun_type_city},
 execute: function nowIn(city) {
   var localDate = new Date();
   var localTime = localDate.getTime();
   var localOffset = localDate.getTimezoneOffset() * 60000;
   var utc = localTime + localOffset;
   var offset = timezone[city.text];  
   var tz = utc + (3600000*offset);
   var now = new Date(tz);
   displayMessage( "Now in " + city.text + " : " + now.toLocaleString() );
 }}) 

---


Written by: Scott Lunel
For this lab I was interested to see whether or not it would be possible to run a delayed command under Ubiquity. I've recently
been dealing with threads and sleeping them in C++.

At first I attempted something along the lines of:

---

CmdUtils.CreateCommand({
  name: "Timer",
  author: "Scott Lunel",
  takes: {"Time": noun_arb_text},
  preview: "A simple timer that executes a message to the user after the entered time period.",
  execute: function(directObj) {
    var start = new Date().getTime();
    var cur = start;
    var secDuration = start + parseInt(directObj.text);

    while(parseInt(cur) < parseInt(secDuration)){
      cur = new Date().getTime();
    }

    displayMessage( "Time's Up!" );
    
  }
})

---
However this wasn't exactly what I was looking for because it caused the browser to freeze while the command was running.

I did a little more looking and found this method instead:
---

CmdUtils.CreateCommand({
  name: "Timer",
  author: "Scott Lunel",
  takes: {"Time": noun_arb_text},
  preview: "A simple timer that executes a message to the user after the entered time period.",
  execute: function(directObj) {

    Utils.setTimeout(function() { displayMessage("Time's Up!"); }, parseInt(directObj.text)); 
    
  }
})

---
Unlike the previous command, it will not freeze the browser while the timed command is being performed.