function getLeft(el) {

    var oNode = el;
    var iLeft = 0;
    
    while(oNode.tagName != "BODY") {
        iLeft += oNode.offsetLeft;
        oNode = oNode.offsetParent;        
    }
    return iLeft;
};

function getTop(el) {

    var oNode = el;
    var iTop = 0;
    
    while(oNode.tagName != "BODY") {
        iTop += oNode.offsetTop;
        oNode = oNode.offsetParent;
    }
    
    return iTop;
};

// addEvent and cookie functions from scottandrew.com

function addEvent(obj, evType, fn){
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, true);
    return true;
  } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
    return false;
  }
}

function createCookie(name,value,minutes)
{
	if (minutes)
	{
		var date = new Date();
		date.setTime(date.getTime()+(minutes*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 do_copy(id){
	setClipboard(gid(id).value);
}
function setClipboard(text){
	if (navigator.appVersion.indexOf("MSIE")!=-1) {
		window.clipboardData.setData("Text",text);
	} else { // begin Firefox clipboard
  	var url = [
  		'data:text/html;charset=utf-8;base64,PGJvZHk+PC9ib2',
  		'R5PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKGZ1',
  		'bmN0aW9uKGVuY29kZWQpe3ZhciBzd2ZfZGF0YSA9IFsKICdkYX',
  		'RhOmFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoO2Jhc2U2',
  		'NCxRMWRUQjJ3JywKICdBQUFCNG5EUGdZbGpBd01qSTRNejAlMk',
  		'YlMkY5JTJGZTJaZkJnYUdhV3dNRE1uNUthJywKICdrTU10TjRH',
  		'ZGdaZ1NJTXdaWEZKYW01UUFFJTJCQm9iaTFCTG5uTXlDcFB6RW',
  		'9oU0dJJywKICdQRnAlMkZBeHNEREJRa3BGWkRGUUZGQ2d1eVM4',
  		'QXlqSTRBRVVCaXkwVndBJTNEJTNEJwpdLmpvaW4oIiIpOwpkb2',
  		'N1bWVudC5ib2R5LmlubmVySFRNTCA9IFsKICc8ZW1iZWQgc3Jj',
  		'PSInLHN3Zl9kYXRhLCciICcsCiAnRmxhc2hWYXJzPSJjb2RlPS',
  		'csZW5jb2RlZCwnIj4nLAogJzwvZW1iZWQ+JwpdLmpvaW4oIiIp',
  		'Owp9KSgi',
  		base64encode( encodeURIComponent(text) + '")</'+'script>')
  	].join("");
  	var tmp = document.createElement("div");
  	tmp.innerHTML = [
  		 '<iframe src="',url,'"'
  		,' width="0" height="0">'
  		,'</iframe>'
  	].join("");
  	with(tmp.style){
  		position ="absolute";
  		left = "-10px";
  		top  = "-10px";
  		visibility = "hidden";
  	};
  	document.body.appendChild(tmp);
  	setTimeout(function(){document.body.removeChild(tmp)},1000);
  	function base64encode(str){
  		var Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");
  		var c1, c2, c3;
  		var buf = [];
  		var len = str.length;
  		var i = 0;
  		while(i < len){
  			c1 = str.charCodeAt(i) & 0xff;
  			c2 = str.charCodeAt(i+1);
  			c3 = str.charCodeAt(i+2);
  			buf.push(Chars[(c1 >> 2)]);
  			if(i+1 == len){
  				buf.push(Chars[(c1 & 0x3) << 4],"==");
  				break;
  			}
  			buf.push(Chars[((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)]);
  			if(i+2 == len){
  				buf.push(Chars[(c2 & 0xF) << 2],"=");
  				break;
  			}
  			buf.push(
  				Chars[((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6)],
  				Chars[(c3 & 0x3F)]
  			);
  			i+=3;
  		}
  		return buf.join("")
  	}
  
	} // end of Firefox clipboard
}

/** XHConn - Simple XMLHTTP Interface - bfults@gmail.com - 2005-04-08        **
 ** Code licensed under Creative Commons Attribution-ShareAlike License      **
 ** http://creativecommons.org/licenses/by-sa/2.0/                           **/
function XHConn()
{
  var xmlhttp, bComplete = false;
  try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
  catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
  catch (e) { try { xmlhttp = new XMLHttpRequest(); }
  catch (e) { xmlhttp = false; }}}
  if (!xmlhttp) return null;
  this.connect = function(sURL, sMethod, sVars, fnDone)
  {
    if (!xmlhttp) return false;
    bComplete = false;
    sMethod = sMethod.toUpperCase();

    try {
      if (sMethod == "GET") {
        xmlhttp.open(sMethod, sURL+"?"+sVars, true);
        sVars = "";
      } else {
        xmlhttp.open(sMethod, sURL, true);
        xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
        xmlhttp.setRequestHeader("Content-Type",
          "application/x-www-form-urlencoded");
      }
      xmlhttp.onreadystatechange = function(){
        if (xmlhttp.readyState == 4 && !bComplete) {
          bComplete = true;
         	fnConn(xmlhttp);
        }
			};
      xmlhttp.send(sVars);
    }
    catch(z) { return false; }
    return true;
  };
  return this;
}


function gid(id){
	return document.getElementById(id);
}

function cel(tag) {
	return document.createElement(tag);
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
	for (_gec_i = 0, _gec_j = 0; _gec_i < elsLen; _gec_i++) {
		if ( pattern.test(els[_gec_i].className) ) {
			classElements[_gec_j] = els[_gec_i];
			_gec_j++;
		}
	}
	return classElements;
}

var cUSERID = '';

function initUserID() {
	
	if (!(cUSERID = readCookie('cUSERID'))) {
		var d = new Date();
		cUSERID = 'ID' + d.getTime();
		createCookie('cUSERID',cUSERID,1000000); // ~1.9 years
	}
}

function cart_items(i) {
	if(i == 0) { return; }
	if(i == 1) {
		document.write('1 item in ');
	} else {
		document.write(i + ' items in ');
	}
}


/***********************************************
* Bookmark site script- � Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/

/* Modified to support Opera */
function bookmarksite(title,url) {
	if (window.sidebar) { // firefox
		window.sidebar.addPanel(title, url, "");
	} else if(window.opera && window.print) { // opera
		var elem = document.createElement('a');
		elem.setAttribute('href',url);
		elem.setAttribute('title',title);
		elem.setAttribute('rel','sidebar');
		elem.click();
	} else if(document.all) {// ie
		window.external.AddFavorite(url, title);
	}
}


/************************************************/

function initHelpCorner() {

	if (jQuery.browser.msie && parseInt(jQuery.browser.version, 10) < 7 && parseInt(jQuery.browser.version, 10) > 4) {
		return;
	}
	
	$('#help-corner-link').fadeIn();
	
	$('#help-corner-link area').mouseover(function(){
		$(this).parent().parent().addClass('hover');
	}).mouseout(function(){
		$(this).parent().parent().removeClass('hover');
	}).click(function() {
		$('#help-corner-popup').supersleight().show('slow',function(){
			$('#help-corner-link').fadeOut();
			if (pageTracker) { pageTracker._trackPageview('/~Help_Corner'); }
		});
	});
	
	$('#help-corner-popup .close').mouseover(function(){
		$(this).addClass('hover');
	}).mouseout(function(){
		$(this).removeClass('hover');
	}).click(function() {
		$('#help-corner-link').fadeIn();
		$('#help-corner-popup').hide('slow');
	}).attr('title','Close');

}

var scroll = {
	timer: null,
	speed: 0,
	accel: 0,
	max: 3
}

function scrollPage(accel) {
	scroll.speed += accel;
	if (scroll.speed > scroll.max) { scroll.speed = scroll.max; }
	if (scroll.speed < 0) { scroll.speed = 0; }
	if (scroll.speed == 0 || scroll.accel != accel) {
		clearTimeout(scroll.timer);
		scroll.accel = accel;
	} 
	if (scroll.speed) {
		window.scrollBy(0,scroll.speed);
		scroll.timer = setTimeout('scrollPage('+scroll.accel+')',50);
	}
}

function scrollStop() {
	scrollPage(-.2);
}

/************************************************/

jQuery.fn.supersleight = function(settings) {
	settings = jQuery.extend({
		imgs: true,
		backgrounds: true,
		shim: 'x.gif',
		apply_positioning: true
	}, settings);
	
	return this.each(function(){
		if (jQuery.browser.msie && parseInt(jQuery.browser.version, 10) < 7 && parseInt(jQuery.browser.version, 10) > 4) {
			jQuery(this).find('*').andSelf().each(function(i,obj) {
				var self = jQuery(obj);
				// background pngs
				if (settings.backgrounds && self.css('background-image').match(/\.png/i) !== null) {
					var bg = self.css('background-image');
					var src = bg.substring(5,bg.length-2);
					var mode = (self.css('background-repeat') == 'no-repeat' ? 'crop' : 'scale');
					var styles = {
						'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='" + mode + "')",
						'background-image': 'url('+settings.shim+')'
					};
					self.css(styles);
				};
				// image elements
				if (settings.imgs && self.is('img[src$=png]')){
					var styles = {
						'width': self.width() + 'px',
						'height': self.height() + 'px',
						'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + self.attr('src') + "', sizingMethod='scale')"
					};
					self.css(styles).attr('src', settings.shim);
				};
				// apply position to 'active' elements
				if (settings.apply_positioning && self.is('a, input') && (self.css('position') === '' || self.css('position') == 'static')){
					self.css('position', 'relative');
				};
			});
		};
	});
};
