
function toggleClass ( object, className, state ) {
	if ( object == undefined ) {
		return true;
	}
	
	// Current class
	var realClass = object.className == undefined ? "" : object.className; 
	
	// New class
	var newClass = ' ' + realClass + ' '; 
	newClass = newClass.replace(' ' + className + ' ', ' ');
	if ( state == 'on' ) {
		// Always add class.
		newClass = newClass + ' ' + className;
	} else if (state == 'off') {
		// Do nothing, already removed.
	} else {
		// toggles..
		if ( newClass == ' ' + realClass + ' ' ) {
			newClass = newClass + ' ' + className;
		}
	}
	
	// Set to new class
	object.className = newClass;
}

function hrefToOnClick ( anchor, action ) {
	anchor.href = "javascript: undefined;";
	anchor.onclick = action;
}

/**
 * Safari doesn't seem to always layer things correctly on top of flash unless you "refresh" it.
 */
function refresh(element) {
	if ( element.originalZIndex == undefined )
		element.originalZIndex = element.style.zIndex;		// Store z-index
	if ( element.style.zIndex == element.originalZIndex )
		element.style.zIndex = element.originalZIndex +1;	// Add 1 to z-index
	else
		element.style.zIndex = element.originalZIndex;		// Back to original z-index
}

function URLEncode (clearString) {
  var output = '';
  var x = 0;
  clearString = clearString.toString();
  var regex = /(^[a-zA-Z0-9_.]*)/;
  while (x < clearString.length) {
    var match = regex.exec(clearString.substr(x));
    if (match != null && match.length > 1 && match[1] != '') {
    	output += match[1];
      x += match[1].length;
    } else {
      if (clearString[x] == ' ')
        output += '+';
      else {
        var charCode = clearString.charCodeAt(x);
        var hexVal = charCode.toString(16);
        output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
      }
      x++;
    }
  }
  return output;
}

function URLDecode (encodedString) {
  var output = encodedString;
  var binVal, thisString;
  var myregexp = /(%[^%]{2})/;
  while ((match = myregexp.exec(output)) != null
             && match.length > 1
             && match[1] != '') {
    binVal = parseInt(match[1].substr(1),16);
    thisString = String.fromCharCode(binVal);
    output = output.replace(match[1], thisString);
  }
  return output;
}
