<?php if (!defined('PmWiki')) exit ();
/* 
	This module enables inclusion of Google Waves in wiki pages. 
	(Inspired by IncludeUrl recipe: http://www.pmwiki.org/wiki/Cookbook/IncludeUrl )

	Width, height and some wave options can be set with parameters inside the markup.

	Syntax: 
	(:gwave googlewave.com!w+xa11AaaAA [width=...] [height=...] [header=true/false] [toolbar=true/false] [footer=true/false]:)
    
	Released to public domain.
*/
# Version date
$RecipeInfo['GoogleWave']['Version'] = '2010-08-02';

Markup('', 'directives',
  '/\\(:gwave\\s*(.*?)\\s*:\\)/ei',
  "gWave(PSS('$1'))");

function gWave($opt) {
  global $gWaveDefaults;
  SDVA($gWaveDefaults, array(
    'width' => '100%',
    'height' => '400px',
    'header' => 'true',
    'toolbar' => 'true',
    'footer' => 'true',
  ));
  $opt = ParseArgs($opt);
  if($opt[''][0])
    $tgt = $opt[''][0];
  else
    foreach($opt as $k => $v)
      if(! array_key_exists($k, $gWaveDefaults)
      && ! in_array($k, array('', '#', '+', '-'))) {
        $tgt = "$k:$v";
        break;
      }
  $opt = array_merge($gWaveDefaults, $opt);

  $out = array();
  $out = "<div id=\"waveframe\" style=\"width: {$opt['width']}; height: {$opt['height']}\"></div><script type=\"text/javascript\"  src=\"http://www.google.com/jsapi\"></script><script type=\"text/javascript\">google.load(\"wave\", \"1\"); google.setOnLoadCallback(initialize); function initialize() { var waveframe = document.getElementById(\"waveframe\"); var embedOptions = { target: waveframe, header: {$opt['header']}, toolbar: {$opt['toolbar']}, footer: {$opt['footer']} }; var wavePanel = new google.wave.WavePanel(embedOptions); wavePanel.loadWave(\"{$tgt}\"); }</script>";
  return Keep($out);
}