//Fix some IE6 issues
rooturl = '/'; // added by Thomas
window.ie8 = navigator.appVersion.indexOf('MSIE 8.0') > -1;
window.ie7 = navigator.appVersion.indexOf('MSIE 7.0') > -1;
window.ie6 = navigator.appVersion.indexOf('MSIE 6.0') > -1;
if(ie8) ie6 = ie7 = false;
if(ie7) ie6 = false;

if(window.ie6){
	new Asset.javascript(rooturl+'framework/javascript/iepngfix_tilebg.js');
	var htcurl = rooturl+'templates/default/styles/';
	document.styleSheets[0].addRule('input', 'behavior: url('+htcurl+'pngfix.htc)');
	document.styleSheets[0].addRule('body', 'behavior: url('+htcurl+'csshover.htc)');
	document.styleSheets[0].addRule('body', 'behavior: url('+htcurl+'minmax.htc)');
	document.styleSheets[0].addRule('div', 'behavior: url('+htcurl+'minmax.htc)');
	document.styleSheets[0].addRule('div', 'behavior: url('+htcurl+'pngfix.htc)');
	document.styleSheets[0].addRule('img', 'behavior: url('+htcurl+'pngfix.htc)');
}

/**
 * [].eachDelayed(delay, function(), bind)
 */
Array.implement({
    eachDelayed: function (delay, fn, bind, oncomplete) {
        var self = this, i = 0;
        (function () {
            fn.call(bind, self[i], i, self);
            if (++i < self.length) {
                setTimeout(arguments.callee, delay);
            } else {
				if($defined(oncomplete))
					oncomplete.attempt([], bind);
			}
       })();
    }
});

function waitForCSS(css, func){	
	var chkObj = {
		'css': css,
		'callback': func,
		'timer': 0,
		'bind': this,
		'func': function(){
			for(var i = 0; i < document.styleSheets.length; i++){
				if(document.styleSheets[i].href.contains(this.css)){
					$clear(this.timer);
					this.callback.attempt([], this.bind);
				}
			}
		}
	};
	chkObj.timer = chkObj.func.periodical(50, chkObj);
}

function getWindowSize() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  return {'width': myWidth,'height': myHeight};
}

/*
 * scaleDimensions(objectWidth, objectHeight, maxWidth, maxHeight)
 *
 * Scales a width/height based on a maximum width/height it can fit into.
 * If the passed in dimensions are smaller, the values will be scaled up
 * For larger dimensions, they will be scaled down to fit in the maximum
 * sizes specified. If you set overflow = true, the dimensions will be scaled up
 * to overflow the box but cover the entire area of the box.
 *
 * Returns an [object]
 *  return.width	- new width of object based on scale
 *  return.height	- new height of object based on scale
 *  return.left		- offset to use to keep the object centered horizontally
 *  return.top		- offset to use to keep the object centered vertically
 *  return.ratio	- ratio that was used to scale the parameters
 */
function scaleDimensions(objectWidth, objectHeight, maxWidth, maxHeight, overflow){
	if(!$defined(overflow) || overflow != true) overflow = false;
	
	var object = {'ratio': maxWidth / objectWidth};
    if (eval('maxHeight / objectHeight ' + (overflow ? '>' : '<') + ' object.ratio')) object.ratio = maxHeight / objectHeight;
	
	object.width = objectWidth * object.ratio;
	object.height = objectHeight * object.ratio;
	object.left = (maxWidth / 2) - (object.width / 2);
	object.top = (maxHeight / 2) - (object.height / 2);
	
	return object;
}


/*
 * setupMorph(eElement, sDisplayStyle)
 *
 * Sets up the morph event of an element as to hide it when 
 * its opacity is morphed to 0 or to show it when its 
 * opacity is morphed from 0
 *
 * sDisplayStyle is optional, defaults to 'block' which is
 * usually ok.
 *
 * Can be set up with class="defaultMorph" on elements
 */
function setupMorph(eElement, sDisplayStyle, iDuration){
	if(!$defined(iDuration)) iDuration = 1;
	if(!$defined(sDisplayStyle)) sDisplayStyle = 'block';
	eElement = $(eElement);
	eElement.setStyle('opacity', sDisplayStyle == 'block' ? 1 : 0);
	eElement.set('morph', {'duration': iDuration * 1000});
	eElement.get('morph').addEvents({
		'onStart': function(e){var show = true; $try(function(){show = this.to.opacity[0].value != 0;}.bind(this)); if(e.getStyle('opacity') == 0 && show) e.style.display = sDisplayStyle;},
		'onComplete': function(e){if(e.getStyle('opacity') == 0) e.style.display = 'none';}
	});
}

/*
 * fadeImages(eElement, iDuration, iFadeDelay)
 *
 * Fades between all the images in an element showing each
 * for iDuration seconds
 */
function fadeImages(eElement, iDuration, iFadeDelay){
	if(!$defined(window._fadeImages_autoRotate)) window._fadeImages_autoRotate = [];
	
	if(!$defined(iFadeDelay)) iFadeDelay = 1;
	if(!$defined(iDuration)) iDuration = 5;
	
	var eImages = ($type(eElement) == 'string' ? $(eElement) : eElement);

	if(eImages.getStyle('position') != 'relative' && eImages.getStyle('position') != 'absolute' && eImages.getStyle('position') != 'fixed')
		eImages.style.position = 'relative';
	
	eImages = eImages.getElements('img');

	if(eImages.length == 0) return;

	$each(eImages, function(img){img.setStyles({'position': 'absolute', 'top': 0, 'left': 0}); setupMorph(img, 'block', iFadeDelay);});
	eImages[0].setStyles({'opacity': 1, 'display': 'block'});
	
	var rotateFunction = function(eImages){
		if(!this.curImage) this.curImage = 0;
		this.curImage += 1;
		if(this.curImage > eImages.length - 1) this.curImage = 0;
		$each(eImages, function(img, i){img.morph({'opacity': i == this.curImage ? 1 : 0})}.bind(this));
	};

	window._fadeImages_autoRotate.include(rotateFunction.periodical(iDuration * 1000, rotateFunction, [eImages]));

    window.addEvent('beforeunload', function(){
		for(var i = window._fadeImages_autoRotate.length - 1; i >= 0; i--)
        	$clear(window._fadeImages_autoRotate[i]);
    });
}

/*
 * hideDialog(eElement) / showDialog(eElement);
 *
 * Shows an element in dialog form.
 */
function hideDialog(eElement)
{
	if($type(eElement) == 'string') eElement = $(eElement);
	eElement.morph({'opacity': 0});
}

function showDialog(eElement,eWidth,eHeight)
{
	if($type(eElement) == 'string') eElement = $(eElement);
			 
	if(eElement.retrieve('dialog', false) == false){
		setupMorph(eElement);
		eElement.store('dialog', true);
	}

	eElement.inject(document.body);

	eElement.morph({'opacity': 1});
	
	if(!$defined(eWidth))
		eWidth = eElement.getCoordinates().width;
	
	if(!$defined(eHeight))
		eHeight = eElement.getCoordinates().height;
	
	eElement.setStyles({
		'width': eWidth,
		'height': eHeight				   
	});

	eElement.setStyles({
		'position': 'absolute',
		'z-index': 320000 + (isNaN(parseInt(eElement.getStyle('z-index'))) ? 0 : parseInt(eElement.getStyle('z-index'))),
		'left': window.getScrollLeft() + (getWindowSize().width / 2) - (eElement.getCoordinates().width / 2),
		'top': window.getScrollTop() + (getWindowSize().height / 2) - (eElement.getCoordinates().height / 2)
	});
}



function log(){
	if(window.debugService){
		if(arguments.length == 2 && arguments[1] === true)
			window.debugService.inspect($type(arguments[0]), arguments[0]);
		else
			for(var i = 0; i < arguments.length; i++)
				window.debugService.trace(arguments[i]);
	}else if(window.console && console.log) {
        if(arguments.length == 1 && $type(arguments[0]) == 'object' || arguments.length == 2 && $type(arguments[0]) == 'object' && arguments[1] === true)
            console.dir(arguments[0]);
        else if(arguments.length == 1)
            console.log(arguments[0]);
        else
            console.log(arguments);
    }else if(Debug.writeln){
		for(var i = 0; i < arguments.length; i++)
			Debug.writeln(arguments[i]);
	}
}

function createHoverBackground(eElement, withClickState){
  if(!$defined(withClickState) || withClickState !== true) var withClickState = false;

  window.getAndStoreDivDetails = function(target){
      target = $(target);

	  var pngFix = false;
      if(window.ie6){
    	  if(!target.retrieve('root'))
    		  target = target.getParent();
        target.store('outer', true);
        target.store('pngFix', true);
        pngFix = true;
      }
      
      
      var returnData = {'height': 0, 'bgPos': 0, 'pngFix': pngFix, 'target': target};
      
	  
      var divHeight = parseInt(target.retrieve('height', 0));

      if(divHeight == 0) {
          divHeight = parseInt(target.getStyle('height'));
          target.store('height', divHeight);
          
          if(pngFix){
              var eDiv = target.getElement('div');
			  try{
              	var bgPos = eDiv.getStyle('clip').split(' ');
			  }catch(ex){
          		target.store('height', 0);
				return;
			  }
              bgPos[0] = parseInt(bgPos[0].substring(bgPos[0].indexOf('(')+1));
              bgPos[1] = parseInt(bgPos[1]);
              bgPos[2] = parseInt(bgPos[2]);
              bgPos[3] = parseInt(bgPos[3]);
              target.store('top', parseInt(eDiv.getStyle('top')));
              divHeight = parseInt(target.getStyle('height'));
              target.store('innerHeight', parseInt(eDiv.getStyle('height')));
              target.store('height', divHeight);
          } else if(Browser.Engine.trident)
              var bgPos = parseInt(target.getStyle('background-position-y'));
          else {
              var bgPos = target.getStyle('background-position').split(' ');
              bgPos[0] = parseInt(bgPos[0]);
              bgPos[1] = parseInt(bgPos[1]);
          }
          target.store('background-position', bgPos);
      }

      returnData.top = parseInt(target.retrieve('top', 0));
      returnData.height = divHeight;
      if(pngFix) {
        returnData.pngFix = true;
        returnData.innerHeight = target.retrieve('innerHeight', 0);
      }
      returnData.bgPos = target.retrieve('background-position');

      return returnData;
  };
  
  if(eElement.get('tag') == 'input') eElement.value = '';

  eElement.style.cursor = 'pointer';
  
  eElement.disable = function(){
    this.style.cursor = 'auto';
    this.store('holdDown', false);
    this.fireEvent('mouseleave', {'target': this});
    this.store('disabled', true);
    if(this.get('tag') != 'input') this.setStyle('opacity', 0.5);
  }.bind(eElement);
  
  eElement.enable = function(){
    this.style.cursor = 'pointer';
    this.store('disabled', false);
    if(this.get('tag') != 'input') this.setStyle('opacity', 1);
  }.bind(eElement);
  
  eElement.enable();
  
  eElement.isdisabled = function(){
    return this.retrieve('disabled', false);
  }.bind(eElement);
  
  window.addEvent('beforeunload', function(){
		eElement.removeEvents();
		try{
			delete eElement.disable;
			delete eElement.enable;
			delete eElement.isdisabled;
		}catch(ex){}
		eElement.disable = null;
		eElement.enable = null;
		eElement.isdisabled = null;
  }.bind(this));

  var events = {
  	'mouseenter': function(e){
        var targetData = getAndStoreDivDetails(e.target);
		
		if(!targetData || !targetData.target) return;

        if(targetData.target.retrieve('holdDown', false) == true) return;
        if(targetData.target.retrieve('disabled', false) == true) return;

        if(targetData.pngFix) {
            var eDiv = targetData.target.getElement('div');

            var bgPos = $A(targetData.bgPos);
            bgPos[0] += targetData.height;
            bgPos[2] += targetData.height;
  			bgPos = 'rect('+bgPos.join('px ')+'px)';
  			eDiv.setStyles({
                'clip': bgPos,
                'top': targetData.top - targetData.height,
                'height': targetData.innerHeight + targetData.height
            });
        } else if(Browser.Engine.trident)
  			targetData.target.setStyle('background-position-y', (targetData.bgPos - targetData.height) + 'px');
  		else
  			targetData.target.setStyle('background-position', targetData.bgPos[0] + 'px ' + (targetData.bgPos[1] - targetData.height) + 'px');
  	},
  	'mouseleave': function(e){
        var targetData = getAndStoreDivDetails(e.target);
		
		if(!targetData || !targetData.target) return;

        if(targetData.target.retrieve('holdDown', false) == true) return;

        if(targetData.pngFix) {
            var eDiv = targetData.target.getElement('div');

  			eDiv.setStyles({
                'clip': 'rect('+targetData.bgPos.join('px ')+'px)',
                'top': targetData.top,
                'height': targetData.innerHeight
            });
        } else if(Browser.Engine.trident)
  			targetData.target.setStyle('background-position-y', targetData.bgPos + 'px');
  		else
            targetData.target.setStyle('background-position', targetData.bgPos[0] + 'px ' + targetData.bgPos[1] + 'px');
  	}
  };
  if(withClickState) {
    events.mousedown = function(e){
        var targetData = getAndStoreDivDetails(e.target);
		
        if(targetData.target.retrieve('disabled', false) == true) return;

        if(targetData.pngFix) {
            var eDiv = targetData.target.getElement('div');

            var bgPos = $A(targetData.bgPos);
            bgPos[0] += targetData.height*2;
            bgPos[2] += targetData.height*2;
  			bgPos = 'rect('+bgPos.join('px ')+'px)';
  			eDiv.setStyles({
                'clip': bgPos,
                'top': targetData.top - targetData.height*2,
                'height': targetData.innerHeight + targetData.height*2
            });
        } else if(Browser.Engine.trident)
  			targetData.target.setStyle('background-position-y', (targetData.bgPos - (targetData.height * 2)) + 'px');
  		else
  			targetData.target.setStyle('background-position', targetData.bgPos[0] + 'px ' + (targetData.bgPos[1] - (targetData.height *2)) + 'px');
    };
    events.mouseup = function(e){
  	    var target = $(e.target);

        if(target.retrieve('holdDown', false) == true) return;

        if(Browser.Engine.trident4)
            target.getParent().fireEvent('mouseenter', e);
        else
  	        target.fireEvent('mouseenter', e);
    };
  }
  
  eElement.store('root', true);

  eElement.addEvents(events);
}


function buildRatings(field, rating){
	if(!$defined(rating))
		var rating = field.value;

	var divRating = field.retrieve('divRating', false);

	if(divRating == false) {
		divRating = new Element('div', {
			'class': 'rating'
		}).inject(field, 'after');

		divRating.addEvents({
			'mousemove': function(e){
				if(e.target.get('tag') == 'img'){
					buildRatings(field, e.target.retrieve('rating'));
				}
			},
			'mouseleave': function(e){
				buildRatings(field);
			}
		});
		
		for(var i = 0; i < 5; i++){
			var img = new Element('img', {
				'src': rooturl + 'webapp/shared/icon/?star' + (rating > i ? '' : '_grey') + '.png',
				'width': 16,
				'height': 16,
				'alt': 'Star',
				'events': {
					'click': function(e){
						e.target.retrieve('field').value = e.target.retrieve('rating');
						buildRatings(e.target.retrieve('field'));
					}
				}
			}).inject(divRating);
			img.store('rating', i + 1);
			img.store('field', field);
		}
		
		field.store('divRating', divRating);
		
		buildRatings(field);
		return;
	}
	
	var imgs = divRating.getElements('img');
	for(var i = 0; i < 5; i++)
		imgs[i].src = rooturl + 'webapp/shared/icon/?star' + (rating > i ? '' : '_grey') + '.png'
}

/*
 * Site-wide setup functions:
 *
 *  - setupMorph() called on all class=".defaultMorph" elements
 *  - replacement of all <a rel="external"> links to open in a new window
 *  - fadeImages() called on all class=".fadeImages"
 *  - all <img/input class="hover"> elements will toggle their src parameters with _off/_on
 */
window.addEvent('domready', function(){
	$each($$('.defaultMorph'), function(eElement){eElement.removeClass('defaultMorph');setupMorph(eElement);});
	
	$each($$('.fadeImages'), function(eElement){
		eElement.removeClass('fadeImages');
		var iFadeDelay = 1;
		var iDuration = 5;
		
		if(eElement.className.length > 11){
			var tDuration, tFadeDelay;
			var elClass = eElement.className;
			tDuration = elClass.substring(elClass.indexOf('fadeImages')+11);		
			tDuration = tDuration.substring(0, tDuration.indexOf(' ') > -1 ? tDuration.indexOf(' ') : tDuration.length);
			if(tDuration - 0 == parseInt(tDuration)) iDuration = tDuration;
			
			tFadeDelay = elClass.substring(elClass.indexOf('fadeImages')+11);
			tFadeDelay = tFadeDelay.substring(tDuration.toString().length+1);
			tFadeDelay = tFadeDelay.substring(0, tFadeDelay.indexOf(' ') > -1 ? tFadeDelay.indexOf(' ') : tFadeDelay.length);
			if(tFadeDelay - 0 == parseInt(tFadeDelay)) iFadeDelay = tFadeDelay;
		}

		fadeImages(eElement, iDuration, iFadeDelay);
	});
	$each($$('a[rel^="external"]'), function(eA){
		eA.addEvent('click', function(e){
			e.preventDefault();
			if(window.pageTracker && pageTracker._trackPageview)
				pageTracker._trackPageview(eA.getProperty('href'));
				window.open(eA.getProperty('href'), '_blank');
		});
		window.addEvent('beforeunload', function(){this.removeEvents()}.bind(eA));
	});
	
	$each($$('.hover'), function(eElement){
		eElement.removeClass('hover');
		if(eElement.get('tag') == 'img') {
			eElement.setStyle('cursor', 'pointer');
			eElement.addEvents({
				'mouseenter': function(e){
					eElement.src = eElement.src.replace('_off','_on');
				},'mouseleave': function(e){
					eElement.src = eElement.src.replace('_on','_off');
				}
			});
		} else {
			createHoverBackground(eElement);
		}
	});
	
	$each($$('input.rating'), buildRatings);
	
	$each($$('input.boolean'), function(input){
		var hidden = new Element('input', {
			'type': 'hidden',
			'name': input.name,
			'value': input.checked ? '1' : '0'
		}).inject(input, 'after');	
		
		input.checked = input.value == '1' ? true : false;
		
		input.setProperty('name', '');
		
		input.addEvent('change', function(e){
			hidden.value = e.target.checked ? '1' : '0';
		}.bind(this));
	});
});


/**
*
*  Secure Hash Algorithm (SHA1)
*  http://www.webtoolkit.info/
*
**/
function SHA1 (msg) {
    function rotate_left(n,s) {
        var t4 = ( n<<s ) | (n>>>(32-s));
        return t4;
    };
    function lsb_hex(val) {
        var str="";
        var i;
        var vh;
        var vl;
        for( i=0; i<=6; i+=2 ) {
            vh = (val>>>(i*4+4))&0x0f;
            vl = (val>>>(i*4))&0x0f;
            str += vh.toString(16) + vl.toString(16);
        }
        return str;
    };
    function cvt_hex(val) {
        var str="";
        var i;
        var v;
        for( i=7; i>=0; i-- ) {
            v = (val>>>(i*4))&0x0f;
            str += v.toString(16);
        }
        return str;
    };
    function Utf8Encode(string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";
        for (var n = 0; n < string.length; n++) {
            var c = string.charCodeAt(n);
            if (c < 128) {
                utftext += String.fromCharCode(c);
            }else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }
        }
        return utftext;
    };
    var blockstart;
    var i, j;
    var W = new Array(80);
    var H0 = 0x67452301;
    var H1 = 0xEFCDAB89;
    var H2 = 0x98BADCFE;
    var H3 = 0x10325476;
    var H4 = 0xC3D2E1F0;
    var A, B, C, D, E;
    var temp;
    msg = Utf8Encode(msg);
    var msg_len = msg.length;
    var word_array = new Array();
    for( i=0; i<msg_len-3; i+=4 ) {
        j = msg.charCodeAt(i)<<24 | msg.charCodeAt(i+1)<<16 |
        msg.charCodeAt(i+2)<<8 | msg.charCodeAt(i+3);
        word_array.push( j );
    }
    switch( msg_len % 4 ) {
        case 0:
            i = 0x080000000;
        break;
        case 1:
            i = msg.charCodeAt(msg_len-1)<<24 | 0x0800000;
        break;
        case 2:
            i = msg.charCodeAt(msg_len-2)<<24 | msg.charCodeAt(msg_len-1)<<16 | 0x08000;
        break;
        case 3:
            i = msg.charCodeAt(msg_len-3)<<24 | msg.charCodeAt(msg_len-2)<<16 | msg.charCodeAt(msg_len-1)<<8    | 0x80;
        break;
    }
    word_array.push( i );
    while( (word_array.length % 16) != 14 ) word_array.push( 0 );
    word_array.push( msg_len>>>29 );
    word_array.push( (msg_len<<3)&0x0ffffffff );
    for ( blockstart=0; blockstart<word_array.length; blockstart+=16 ) {
        for( i=0; i<16; i++ ) W[i] = word_array[blockstart+i];
        for( i=16; i<=79; i++ ) W[i] = rotate_left(W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16], 1);
        A = H0;
        B = H1;
        C = H2;
        D = H3;
        E = H4;
        for( i= 0; i<=19; i++ ) {
            temp = (rotate_left(A,5) + ((B&C) | (~B&D)) + E + W[i] + 0x5A827999) & 0x0ffffffff;
            E = D;
            D = C;
            C = rotate_left(B,30);
            B = A;
            A = temp;
        }
        for( i=20; i<=39; i++ ) {
            temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff;
            E = D;
            D = C;
            C = rotate_left(B,30);
            B = A;
            A = temp;
        }
        for( i=40; i<=59; i++ ) {
            temp = (rotate_left(A,5) + ((B&C) | (B&D) | (C&D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff;
            E = D;
            D = C;
            C = rotate_left(B,30);
            B = A;
            A = temp;
        }
        for( i=60; i<=79; i++ ) {
            temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff;
            E = D;
            D = C;
            C = rotate_left(B,30);
            B = A;
            A = temp;
        }
        H0 = (H0 + A) & 0x0ffffffff;
        H1 = (H1 + B) & 0x0ffffffff;
        H2 = (H2 + C) & 0x0ffffffff;
        H3 = (H3 + D) & 0x0ffffffff;
        H4 = (H4 + E) & 0x0ffffffff;
    }

    var temp = cvt_hex(H0) + cvt_hex(H1) + cvt_hex(H2) + cvt_hex(H3) + cvt_hex(H4);
    return temp.toLowerCase();
}

function encryptLogin(inBox, outBox){
	$(outBox).value = SHA1($(inBox).value)
	$(inBox).value = '';
}

function doAJAX(data){
	var currentURL = location.href;
	if(currentURL.indexOf('?') > -1) currentURL = currentURL.substring(0, currentURL.indexOf('?'));
	
	data = $merge({
		'url': currentURL,
		'method': 'post'
	},data);
	
	new Request.JSON(data).send();
}




Element.implement({
  showDialog: function(eWidth,eHeight){
    showDialog(this,eWidth,eHeight);
  },
  hideDialog: function(){
    hideDialog(this);
  },
  fadeImages: function(iDuration, iFadeDelay){
  	fadeImages(this, iDuration, iFadeDelay);
  },
  createHoverBackground: function(withClickState){
    createHoverBackground(this, withClickState);
  }
});

