function _uFlash() {
 var f="-",n=navigator;
 if (n.plugins && n.plugins.length) {
  for (var ii=0;ii<n.plugins.length;ii++) {
   if (n.plugins[ii].name.indexOf('Shockwave Flash')!=-1) {
    f=n.plugins[ii].description.split('Shockwave Flash ')[1];
    break;
   }
  }
 } else if (window.ActiveXObject) {
  for (var ii=10;ii>=2;ii--) {
   try {
    var fl=eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash."+ii+"');");
    if (fl) { f=ii + '.0'; break; }
   }
   catch(e) {}
  }
 }
 return f;
}

function fc(cents) {
  if (cents == undefined || isNaN(cents)) return '$?'; 
  if (cents == 0) { cents = 0; }
  return '$' + (cents*0.01).toFixed(2); 
}
function pluralize(count, singular) {
  return count.toString() + ' ' + singular + (count != 1 ? 's' : ''); 
}
function ft(tokens) { 
  return pluralize(tokens, 'token'); 
}
function fl(licenses) { 
  return pluralize(licenses, 'license'); 
}
function parse_and_force_field_int(field) {
  var num = $(field).value;
  num = num.replace(/[^\d]/g,"");
  $(field).value = num; 
  return parseInt(num); 
}
function link_click(link) {
  location.href = $(link).href;   
}
function getSelectedText()
{
  var txt = ''
  if (document.selection) {
    txt = document.selection.createRange().text.toString();
  } else if (document.getSelection) { 
    txt = document.getSelection().toString();
  } else if (window.getSelection) { 
    txt = window.getSelection().toString();
  } else { 
    txt = 'Unfortunately your browser does not support selecting text';
  }
  return txt.replace(/\|/g, "");
}

function selectText(element){
  if (element == undefined) { 
    if (document.body.createTextRange) {
      var r1 = document.body.createTextRange();
      r1.select();
    } else if (window.getSelection) {
      window.getSelection().removeAllRanges();
    }
  } else { 
    if (document.body.createTextRange) {
      var r1 = document.body.createTextRange();
      r1.moveToElementText(element);
      r1.setEndPoint("EndToEnd", r1);
      r1.select();
    } else if (document.createRange && window.getSelection){
      var r1 = document.createRange();
      r1.setStartBefore(element);
      r1.setEndAfter(element) ;
      window.getSelection().addRange(r1);
    }
  }
}

function form_add_hidden(form, name, value) { 
  var s = document.createElement('input'); 
  s.setAttribute('type', 'hidden'); 
  s.setAttribute('name', name); 
  s.setAttribute('value', value); 
  form.appendChild(s);
}

function translate_page_to(self, language, url) { 
  if (language == 'en') {
    top.location = url;   
  }
  else {
    pageTracker._trackPageview('translate/' + language);
    var f = document.createElement('form'); 
    f.style.display = 'none'; 
    self.parentNode.appendChild(f); 
  
    if ("https:" == document.location.protocol) {
      var msg = "You are about to translate a secure page" + 
        "\n\nPLEASE MAKE SURE YOU HAVE NOT ENTERED ANY CREDIT CARD INFORMATION BEFORE PROCEEDING!" + 
        "\n\nVerifique se você não introduziu quaisquer informações de cartão de crédito antes de prosseguir!" + 
        "\n\nBitte stellen Sie sicher, dass nicht jede Kreditkarte Informationen, bevor Sie fortfahren!" + 
        "\n\nS'il vous plaît assurez-vous que vous n'avez pas saisi toute information de carte de crédit avant de procéder!" + 
        "\n\nSi prega di assicurarsi che non avete digitato i dati della carta di credito prima di procedere!" + 
        "\n\nPor favor, asegúrese de que no han entrado ninguna información de tarjeta de crédito antes de proceder!" + 
        "\n\nしてくださいお持ちでない任意のクレジットカード情報を入力する前に進むことを確認する"; 
        
      if (!confirm(msg)) return; 
      f.method = 'POST';
      f.action = "http://translate.google.com/translate_t";
      f.target = "_blank";
      selectText($('doc3'));
      form_add_hidden(f, "text", getSelectedText());
      selectText();
    }
    else {
      f.method = 'GET';
      f.action = "http://translate.google.com/translate";
      form_add_hidden(f, "u", url);
    }
    
    form_add_hidden(f, "hl", "en");
    form_add_hidden(f, "ie", "UTF-8");
    form_add_hidden(f, "sl", "en");
    form_add_hidden(f, "tl", language);
    f.submit();
  }
}

function convert_currency(self, dollars, to_currency) { 
    var f = document.createElement('form'); 
    f.style.display = 'none'; 
    self.parentNode.appendChild(f); 
  
    f.method = 'POST';
    f.action = "http://www.xe.com/ucc/convert.cgi";
    form_add_hidden(f, "Amount", dollars);
    form_add_hidden(f, "From", "USD");
    form_add_hidden(f, "To", to_currency); 
    
    f.submit(); 
    return false; 
}


// STYLING FILE INPUTS 1.0 | Shaun Inman <http://www.shauninman.com/> | 2007-09-07
if (!window.SI) { var SI = {}; };
SI.Files =
{
	htmlClass : 'SI-FILES-STYLIZED',
	
	fini : false,
	able : false,
	init : function()
	{
		this.fini = true;
		
		var ie = 0 //@cc_on + @_jscript_version
		if ((ie && ie < 5.5) || !document.getElementsByTagName) { return; } // no support for opacity or the DOM

		var html = document.getElementsByTagName('html')[0];
    
    var opacityType=(
      (typeof html.style.opacity !== 'undefined') ? 'opacity' :
      /*@cc_on @if (@_jscript)
        (typeof html.filters === 'object') ? 'filters' :
        (typeof html.filter === 'string') ? 'filter' :
      @end @*/
      'none'
    );
    //window.alert("Opacity type: " + opacityType);
    if (opacityType == 'none') { return; } // No support for opacity
    
		this.able = true;
		html.className += (html.className != '' ? ' ' : '') + this.htmlClass;
	},
	
	stylize : function(elem)
	{
		if (!this.fini) { this.init(); };
		if (!this.able) { return; };
		
		elem.parentNode.file = elem;
		elem.parentNode.onmousemove = function(e)
		{
			if (typeof e == 'undefined') e = window.event;
			if (typeof e.pageY == 'undefined' &&  typeof e.clientX == 'number' && document.documentElement)
			{
				e.pageX = e.clientX + document.documentElement.scrollLeft;
				e.pageY = e.clientY + document.documentElement.scrollTop;
			};

			var ox = oy = 0;
			var elem = this;
			if (elem.offsetParent)
			{
				ox = elem.offsetLeft;
				oy = elem.offsetTop;
				while (elem = elem.offsetParent)
				{
					ox += elem.offsetLeft;
					oy += elem.offsetTop;
				};
			};

			var x = e.pageX - ox;
			var y = e.pageY - oy;
			var w = this.file.offsetWidth;
			var h = this.file.offsetHeight;

      // Fix for IE7+, otherwise the control can get dragged outside despite overflow: hidden;
      if (x < 0 || y < 0 || x > this.offsetWidth || y > this.offsetHeight) { 
        x = 0; y = 0; h = 0; w = 30;
      }

			this.file.style.top		= y - (h / 2)  + 'px';
			this.file.style.left	= x - (w - 30) + 'px';
      
      //$('debug_si').innerHTML = "x: " + x + " y: " + y + " h: " + h + " w: " + w + " oh: " + this.offsetHeight + " ow: " + this.offsetWidth; 
		};
	},
	
	stylizeById : function(id)
	{
		this.stylize(document.getElementById(id));
	}
};













