/**
 * Common to a few pages.
 */

/**
 * This function is present so that we can do a getbyID on any browser.
 */
function getByID (id)
{
  if (document.getElementById)
  {
    return document.getElementById (id);
  }
  else if (document.all)
  {
    return document.all[id];
  }
  else if (document.layers)
  {
    return document.layers[id];
  }

  return null;
}

/**
 * This function removes all the child nodes from the given element.
 */
function clearElement (elt)
{
  var child;
  while (child = elt.firstChild)
  {
    elt.removeChild (child);
  }
}

/**
 * This function returns a description of a region.
 */
function getRegionDesc (region_name)
{
  switch (region_name)
  {
    case 'GB':
      return 'United Kingdom';

    case 'EU':
      return 'Europe';

    case 'ROW':
      return 'US & Rest of World';

    default:
      return 'error';
  }
}

/**
 * This function returns a description of a method.
 */
function getMethodDesc (method_name)
{
  switch (method_name)
  {
    case 'cc':
      return 'Pay by Credit Card';

    case 'post':
      return 'Pay by Post';

    default:
      return 'error';
  }
}

/**
 * This function allows us to create new HTML elements using either
 * createElementNS or createElement.
 */
function newHTMLElt (tag)
{
  if (document.createElementNS)
  {
    return document.createElementNS ('http://www.w3.org/1999/xhtml', tag);
  }
  else if (document.createElement)
  {
    return document.createElement (tag);
  }

  return null;
}

/**
 * This function creates a link to the details page, with the given options.
 */
function createDetailsLink (package_name, region_name, method_name, freq_name)
{
  var link_data = {
   'pk' : package_name,
   'rg' : region_name,
   'mt' : method_name
  };

  if (freq_name)
  {
    link_data['fq'] = freq_name;
  }

  link_arr = [];
  for (attr in link_data)
  {
    link_arr[link_arr.length] = attr + '=' + escape (link_data[attr]);
  }

  return 'next.html?enrs=pkg&' + link_arr.join ('&');
}

function getPrice (region, type,  freq)
{
  if (course_options[type].regional)
  {
    if (course_options[type].frequencies)
    {
      if (freq == 'once')
      {
	return '\u00a3' + packages[type].regions[region].frequencies['once'].prices['default'].value;
      }
      else if (packages[type].regions[region].frequencies['monthly'] && !packages[type].regions[region].frequencies['quarterly'])
      {
	return '\u00a3'
	    + packages[type].regions[region].frequencies['monthly'].prices['deposit'].value
	    + ' deposit and \u00a3'
	    + packages[type].regions[region].frequencies['monthly'].prices['default'].value
	    + ' monthly for 12 months';
      }
      else if (freq == 'monthly' && packages[type].regions[region].frequencies['monthly'] && packages[type].regions[region].frequencies['quarterly'])
      {
        return '\u00a3'
          + packages[type].regions[region].frequencies['monthly'].prices['default'].value
          + ' monthly for 12 months through PayPal';
      }
      else
      {
	return '\u00a3' + packages[type].regions[region].frequencies['quarterly'].prices['default'].value + ' quarterly'; 
      }
    }
    else
    {
      return '\u00a3' + packages[type].regions[region].prices['default'].value;
    }
  }
  else	// Currently we dont do not regional with frequencies.
  {
    return '\u00a3' + packages[type].prices['default'].value;
  }
}

/**
 * This function pops up an info window, given a package.
 */
function pop_infowin (pkg)
{
  var get = 'rg=' + selected_region + '&pk=' + pkg;

  window.open('info.html?' + get,'','toolbar=0, location=0, directories=0, menuBar=0, scrollbars=1, status=1, resizable=1, width=505, height=500');
}

