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

   /* configure */
   var grid_url         = 'http://www.tvpassport.com/tvmds/grid_v2/grid.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';

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

   /* functions */

   function tvmds_tvgrid_write_html(query) {
      document.write('<script type="text/javascript" src="' + grid_url + query + '"></script>');
   }
	function tvmds_tvgrid_load_json(query) {
		$.ajaxSetup({ timeout: 1000000 });
	  $.getJSON(grid_url + query + '&callback=?', {}, function(data) {
		 document.getElementById('tvGrid').innerHTML = data;
		while (data.indexOf('<script') >= 0)
		{
		 data = data.substring(data.indexOf('<script'));
		 var scriptSrc;
		 // Pull out the script src if there is one
		if (data.indexOf('src') < data.indexOf('>') && data.indexOf('src') != -1) {
			scriptSrc = data.substring(data.indexOf('src') + 5);
			scriptSrc = scriptSrc.substring(0, scriptSrc.indexOf('js') + 2);
		} else {
			scriptSrc = '';
			}
		 data = data.substring(data.indexOf('>') + 1);
			var scriptText = data.substring(0, data.indexOf('</script>'));
			var newScript = document.createElement('script');
			newScript.type = "text/javascript";
			newScript.text = scriptText;
			if (scriptSrc != '') {
				if (scriptSrc.indexOf('http') == -1)
				{
					scriptSrc = 'http://' . scriptSrc;
				}
				newScript.src = scriptSrc.replace('"', '');
			}
//			document.getElementById('tvGrid').appendChild(newScript);
			var headID = document.getElementsByTagName("head")[0];
			headID.appendChild(newScript);
		}
	  });
	}
   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_grid_subscription_id;
   var lu      = window.tvmds_grid_select_lineup_id;
   var wd      = window.tvmds_grid_width_in_px;
   var ht      = window.tvmds_grid_height_in_px;
   var mode    = window.tvmds_grid_mode;
   var style   = window.tvmds_grid_iframe_style;
   var wid     = window.tvmds_grid_widget_color;
   var css_url = window.tvmds_grid_iframe_stylesheet_url;
   var lang    = window.tvmds_grid_language;
   var ctrlpos = window.tvmds_grid_control_position;
   var st      = window.tvmds_grid_start_time;
   var affectedDiv = window.tvmds_grid_div;

   // 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 = ''

   // 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_grid');
   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
			 + '&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 if (mode=='jquery')
   {
	  $("#tvGrid").load(grid_url + query);
   } else if (mode=='json')
   {
	  //$("#tvGrid").load(grid_url + query);
	  tvmds_tvgrid_load_json(query)
   }
   else {
	  tvmds_tvgrid_write_html(query);
   }


})()


