/******************************************************************************
 *     Jon's crazy javascript thingy                                          *
 *                                                                            *
 *                                                                            *
 ******************************************************************************/
(function(){

   /* configure */
   var grid_url         = 'http://www.tvpassport.com/tvmds/leader/leader.php';
   var default_subid    = 'national-00001';
   var default_lu       = '';
   var default_wd       = '600';
   var default_ht       = '400';
   var default_mode     = 'iframe';
   var default_style    = '';
   var default_wid      = 'wh';
   var default_css_url  = '';
   var default_lang     = 'en';
   var default_ctrl_pos = 'default';
   var default_link = '';

/******************************************************************************/

   /* functions */

   function tvmds_tvgrid_write_html(query) {
      document.write('<script type="text/javascript" src="' + grid_url + query + '"></script>');
   }

   function tvmds_tvgrid_write_iframe(query) {
      document.write('<iframe '
                   + 'name="tvmds_tvgrid_frame" '
                   + 'id="tvmds_tvgrid_frame" '
                   + 'width="' + wd + '" '
                   + 'height="' + ht + '" '
                   + 'src="' + grid_url + query + '" '
                   + 'frameborder="0" '
                   + 'marginwidth="0" '
                   + 'marginheight="0" '
                   + 'vspace="0" '
                   + 'hspace="0" '
                   + 'allowtransparency="true" '
                   + 'scrolling="false"></iframe>');
   }

   function extractParameterString(search_string, param_name) {
      var start_index = search_string.indexOf("?"+param_name+"=");
      if (start_index < 0) {
         start_index = search_string.indexOf("&"+param_name+"=");
      }
      if (start_index < 0) { 
         return '';
      }
      var end_index = search_string.indexOf("&",start_index+1);
      if (end_index < 0) {
         end_index = search_string.length;
      }
      return search_string.substring(start_index, end_index);
   }

   function getArgsFromParameterString(string) {
      var args = new Object();
      var start_index = string.indexOf("=");
      string = string.substring(start_index+1, string.length);
      var pairs = string.split(",");                // Break at comma
      for(var i = 0; i < pairs.length; i++) {
          var pos = pairs[i].indexOf('=');          // Look for "name=value"
          if (pos == -1) continue;                  // If not found, skip
          var argname = pairs[i].substring(0,pos);  // Extract the name
          var value = pairs[i].substring(pos+1);    // Extract the value
          args[argname] = unescape(value);          // Store as a property
      }
      return args; 
   }



   /* program start */

   // get options set from calling page
   var subid   = window.tvmds_leader_subscription_id;
   var lu      = window.tvmds_leader_select_lineup_id;
   var wd      = window.tvmds_leader_width_in_px;
   var ht      = window.tvmds_leader_height_in_px;
   var mode    = window.tvmds_leader_mode;
   var style   = window.tvmds_leader_iframe_style;
   var wid     = window.tvmds_leader_widget_color;
   var css_url = window.tvmds_leader_iframe_stylesheet_url;
   var lang    = window.tvmds_leader_language;
   var ctrlpos = window.tvmds_leader_control_position;
   var st      = window.tvmds_leader_start_time;
   var tvlink = window.tvmds_leader_listings_link;

   // assign default values to any unassigned options
   if (subid == null)   subid    = default_subid;
   if (lu == null)      lu       = default_lu;
   if (wd == null)      wd       = default_wd;
   if (ht == null)      ht       = default_ht;
   if (mode == null)    mode     = default_mode;
   if (style == null)   style    = default_style;
   if (wid == null)     wid      = default_wid;
   if (css_url == null) css_url  = default_css_url;
   if (lang == null)    lang     = default_lang;
   if (ctrlpos == null)    ctrlpos  = default_ctrl_pos;
   if (st == null)		st = ''
    if (tvlink == null)	tvlink	 = default_link;

   // get grid options encoded url query string
   // important: these values override those set by the subscriber in the calling page
   // security: clever subscribers could rewrite window.location somehow? 
   // fix: could have the control php script include a checksum parameter containing the 
   //      checksum of the parameters combined. This could then be decoded here to make
   //      sure the subscriber isn't cheating!
   // this will only return values if the calling page is using an inline grid
   string = extractParameterString(window.location.search, 'tvmds_leader');
   args = getArgsFromParameterString(string);
   var ch = '';
   if (args.lu) lu = args.lu;
   if (args.st) st = args.st;
   if (args.ch) ch = args.ch;

   // build query string
   var query = '?subid='   + subid
             + '&lu='      + lu
             + '&wd='      + wd
             + '&ht='      + ht
             + '&mode='    + mode
             + '&style='   + style
             + '&wid='     + wid
             + '&css_url=' + escape(css_url)
             + '&st='      + st
             + '&ch='      + ch
             + '&lang='    + lang
			 + '&tvlink='	+ escape(tvlink)
			 + '&ctrlpos='    + ctrlpos
             + '&loc='     + escape(window.location.href);

// Object.dpDump(args);
// Object.dpDump(query);

   // send the build query string to the appropriate function
   if (mode =='iframe') {
      tvmds_tvgrid_write_iframe(query);
   } else {    // choose or default to 'inline' 
      tvmds_tvgrid_write_html(query);
   }

})()