function sushi_random()
{
    var rn;

    rn = Math.floor(Math.random()*100001);
    return '&randn='+rn;
}

function sushi_preload()
{
    return '<div style="text-align:center;margin-top:140px;"><img src="/images/sushi/cs_ajax.gif"></div>';
}

function sushi_preload_client()
{
    return '<div style="text-align:center;margin-top:40px;"><img src="/images/sushi/cs_ajax.gif"></div>';
}

function sushi_set_busy_note(v)
{
    var n;

    n = document.getElementById('form_notice');
    n.innerHTML = v;

    return false;
}

function sushi_clear_note()
{
    return sushi_set_busy_note('');
}

function sushi_busy_note()
{
    return sushi_set_busy_note('Processing... please wait...');
}

function sushi_clear_area(ta)
{
  var n;

  n = document.getElementById(ta);
  n.value = '';
  n.onfocus=null;
  return false;
}


function requestObject()
{
  var xmlhttp;
  if (window.XMLHttpRequest)
  {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else
  {
    // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

  return xmlhttp;
}

function sushi_serialize(what)
{
  if (window.XMLSerializer)
  {
      return new XMLSerializer().serializeToString(what);
  }

  return what.xml;
}

function sushi_unescape(instring)
{
    return instring.replace(/\&amp;/g,'&');
}

function utf8_decode(utftext)
{
  var string = "";
  var i = 0;
  var c = c1 = c2 = 0;
 
  while (i < utftext.length)
  {
    c = utftext.charCodeAt(i);
 
    if (c < 128)
    {
      string += String.fromCharCode(c);
      i++;
    } else if((c > 191) && (c < 224))
    {
      c2 = utftext.charCodeAt(i+1);
      string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
      i += 2;
    } else
    {
      c2 = utftext.charCodeAt(i+1);
      c3 = utftext.charCodeAt(i+2);
      string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
      i += 3;
    }
  }

  return string;
}

function sushi64(input)
{
  var key = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
  var output = "";
  var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
  var i = 0;
 
  input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
 
  while (i < input.length)
  {
    enc1 = key.indexOf(input.charAt(i++));
    enc2 = key.indexOf(input.charAt(i++));
    enc3 = key.indexOf(input.charAt(i++));
    enc4 = key.indexOf(input.charAt(i++));
 
    chr1 =  (enc1 << 2)       | (enc2 >> 4);
    chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
    chr3 = ((enc3 & 3) << 6)  |  enc4;
 
    output = output + String.fromCharCode(chr1);
 
    if (enc3 != 64)
    {
      output = output + String.fromCharCode(chr2);
    }

    if (enc4 != 64)
    {
      output = output + String.fromCharCode(chr3);
    }
  }
  
  return utf8_decode(output);
}


function getNodeText(xmlNode) {
    if(!xmlNode) return '';
    if(typeof(xmlNode.textContent) != "undefined") return xmlNode.textContent;
    return xmlNode.firstChild.nodeValue;
}


function sushi_process_standard(response)
{
  var aa;

  aa = response.getElementsByTagName('action');

  for(var i = 0, len = aa.length; i < len; i += 1)
  {
    var type = aa[i].getElementsByTagName('type')[0].childNodes[0].nodeValue;

    if (type == 'redirect')
    {
      var where = aa[i].getElementsByTagName('url')[0].childNodes[0].nodeValue;
      where = where.replace(/\%26/g,'&');
      window.location = where;

    } else if (type == 'refill')
    {
      var where = aa[i].getElementsByTagName('where')[0].childNodes[0].nodeValue;
      var what = getNodeText(aa[i].getElementsByTagName('what').item(0));
      var where_html = document.getElementById(where);

      if (where_html != null)
      {
        where_html.innerHTML = sushi64(what);
      }

    } else if (type == 'dismiss')
    {
      hideModal();
    }
  }
}

function hideModal()
{
  var fade;
  var overlay;

  fade = document.getElementById('sushi_fade');
  overlay = document.getElementById('sushi_overlay');

  overlay.innerHTML="<div><//div>";

  fade.style.visibility='hidden';
  overlay.style.visibility='hidden';
}


function f_scrollTop() {
	return f_filterResults (
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}

function f_filterResults(n_win, n_docel, n_body) {
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel)))
		n_result = n_docel;
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}


function revealModal(title, height)
{
  var fade;
  var overlay;

  fade = document.getElementById('sushi_fade');
  overlay = document.getElementById('sushi_overlay');

  fade.style.visibility='visible';
  overlay.style.visibility='visible';

  overlay.style.marginTop=(100+f_scrollTop())+'px';

  overlay.innerHTML = '<div style="float:right;"><input type="button" id="dismiss" value="X" onClick="hideModal();return false;"  onmouseover="this.style.cursor=\'pointer\';"/></div><div style="float:left;"><h2>'+title+'</h2></div><div style="clear:both;"><div style="float:right;height:'+height+';">&nbsp;</div><div id="sushi_overlay_content"></div></div><div style="clear:both;"></div>';
}

function sushi_panel_add(id)
{
    var vis;
    var visa;

    vis = readCookie("clocksushi_vis");

    if (vis == null)
    {
      createCookie("clocksushi_vis", id, 365);

    } else
    {
      if (vis.length != 0)
      {
        visa = vis.split('-');

        for(var i = 0; i < visa.length; i++)
        {
	  if (visa[i] == id) return;
        }

        vis = vis+"-"+id;

      } else
      {
	vis = id;
      }

      createCookie("clocksushi_vis",vis,365);
    }
}

function sushi_panel_del(id)
{
    var vis;
    var visa;
    var i;

    vis = readCookie("clocksushi_vis");

    if (vis != null)
    {
      visa = vis.split('-');

      if (visa.length == 0)
      {
	  return;
      }

      vis = "";

      for(i = 0; i < visa.length; i++)
      {
	if (visa[i] != id)
	{
	    if (vis == "")
	    {
		vis = visa[i];
	    } else
	    {
		vis = vis+'-'+visa[i];
	    }
	}
      }

      createCookie("clocksushi_vis",vis,365);
    }
}


function sushi_flip_panel2(flag, panel)
{
    if ((readCookie('clocksushi_vis') != null)||(readCookie('clocksushi_uid') != null))
    {
	return sushi_flip_panel2(flag,panel);
    }
}

function sushi_flip_panel(flag, panel)
{
  var pf_el;
  var pc_el;

  var id;

  id = flag.split('_');
  id = id[0];

  pf_el = document.getElementById(flag);
  pc_el = document.getElementById(panel);

  if (pc_el.style.display == "block")
  {
    sushi_panel_add(id);
    pc_el.style.visibility='hidden';
    pc_el.style.display='none';
    pf_el.innerHTML="show&nbsp;";

  } else
  {
    sushi_panel_del(id);
    pc_el.style.visibility='visible';
    pc_el.style.display='block';
    pf_el.innerHTML="hide&nbsp;";
  }
}

function createCookie(name,value,days)
{
    if (days)
    {
	var date = new Date();
	date.setTime(date.getTime()+(days*24*60*60*1000));
	var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++)
    {
	var c = ca[i];
	while (c.charAt(0)==' ') c = c.substring(1,c.length);
	if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }

    return null;
}

function eraseCookie(name)
{
    createCookie(name,"",-1);
}

function getListValue(name)
{
  var selobj;

  selobj = document.getElementById(name);

  if (!selobj)
  {
      return 1;
  }

  if (selobj.options.length == 1)
  {
      return selobj.options[0].value;
  }

  for (var i=0; i < selobj.options.length; i++)
  {
    if (selobj.options[i].selected == true)
    {
      return selobj.options[i].value;
    }
  }
}
function getRadioValue(name)
{
  var selobj;

  selobj = document.getElementsByName(name);

  if (selobj.length == 1)
  {
      return selobj[0].value;
  }

  for (var i=0; i < selobj.length; i++)
  {
    if (selobj[i].checked == true)
    {
      return selobj[i].value;
    }
  }
}

function redirectto(where)
{
    window.location = where;
}

function ulist_change(arg_id)
{
    var un;
    var un2;
    var un3;
    var sl;
    var wh;

    un = document.getElementById(arg_id+'_id');
    un2 = document.getElementById(arg_id+'_2id');
    un3 = document.getElementById(arg_id+'_3id');
    sl = document.getElementById(arg_id+'_list');
    wh = sl.value;

    if (wh == '#reserve')
    {
	un3.style.visibility='visible';
	un3.style.display='inline';
	un2.style.display='none';
	un2.style.visibility='hidden';
	un.style.display='none';
	un.style.visibility='hidden';
    } else if (wh == '#username')
    {
	un.style.visibility='visible';
	un.style.display='inline';
	un2.style.display='none';
	un2.style.visibility='hidden';
	un3.style.display='none';
	un3.style.visibility='hidden';
    } else if (wh == '#create')
    {
	un.style.display='none';
	un.style.visibility='hidden';
	un3.style.display='none';
	un3.style.visibility='hidden';
	un2.style.visibility='visible';
	un2.style.display='inline';
    } else
    {
	un.style.display='none';
	un.style.visibility='hidden';
	un3.style.display='none';
	un3.style.visibility='hidden';
	un2.style.display='none';
	un2.style.visibility='hidden';
    }
}

function sushi_extract_extra(arg_count, arg_key)
{
    var params;
    var ids;
    var val;
    var n;
    var m;
    var t;
    var sis;

    ids = arg_key;

    params = '';

    for (n = 0, m = 0; n < arg_count; n+=1)
    {
        t = ids.charAt(m);
        m += 1;
	sis = '';
        
	while (t != '-')
	{
	    sis = sis+t;
            t = ids.charAt(m);
            m += 1;
	}

        val = encodeURIComponent(document.getElementById(sis).value);

	if (params == '')
	{
	  params = sis+'='+val;
	} else
	{
	  params = params+'&'+sis+'='+val;
	}
    }

    return params;
}


