

function sfHover() {
	if ($("blue_top_nav"))
	{

		current_ul = $$('.blue_nav li.current ul')
		if (current_ul.length > 0)
			current_ul = current_ul[0]
		else
		   current_ul = false
	
		blue_top_nav_timeout = null;
		blue_top_current = null;
	
		var sfTopEls = new Array();
		sfTopEls = $("blue_top_nav").immediateDescendants()

			sfTopEls.each(function(el){ el.observe("mouseover", function(){
				
					if (blue_top_current && blue_top_current != current_ul)
						blue_top_current.removeClassName("iehover")
				
					window.clearTimeout(blue_top_nav_timeout);
				
					blue_top_current = el;
					el.className+=" iehover";
					
					if (current_ul && el.children && (el.hasClassName("current") == false && current_ul.parentNode.parentNode.parentNode == el.parentNode.parentNode) )
						Element.hide(current_ul)
					else if (current_ul)
						Element.show(current_ul)
					
					});
		 	});
	

			sfTopEls.each(function(el){ el.observe("mouseout", function() {
					var oclass = el;
					blue_top_nav_timeout = window.setTimeout(function(){
					oclass.removeClassName("iehover")
					if (current_ul  && oclass.children && (oclass.hasClassName("current") == false && current_ul.parentNode.parentNode.parentNode == oclass.parentNode.parentNode) )
						Element.show(current_ul)
					}, 500);
					});
		 	});
	
	
			blue_bottom_nav_timeout = null;
			blue_bottom_current = null;
	
			sfBottomEls = $$("#blue_bottom_nav li")
			sfBottomEls.each(function(el){ el.observe("mouseover", function() {
				
					if (blue_bottom_current && blue_bottom_current != current_ul)
						blue_bottom_current.removeClassName("iehover")
			
					window.clearTimeout(blue_bottom_nav_timeout);
			
					blue_bottom_current = el;
				
					el.className+=" iehover";
					if (current_ul && this.children && (this.hasClassName("current") == false && current_ul.parentNode.parentNode.parentNode == this.parentNode.parentNode) )
						Element.hide(current_ul)
					else if (current_ul)
						Element.show(current_ul)
					});
			 	});
			
			sfBottomEls.each(function(el){ el.observe("mouseout", function() {
				
					var oclass = el;
					blue_bottom_nav_timeout = window.setTimeout(function(){
					oclass.removeClassName("iehover")
					if (current_ul  && oclass.children && (oclass.hasClassName("current") == false && current_ul.parentNode.parentNode.parentNode == oclass.parentNode.parentNode) )
						Element.show(current_ul)
					}, 500);
					});

			 	});
		
	}
}
Event.observe(window, 'load', sfHover);


function restartGif(){
	for(var i=0; i<document.images.length; i++){
		var img = document.images[i];
		var imgName = img.src.toUpperCase();
		if (imgName.substring(imgName.length-3, imgName.length) == "GIF"){
			img.src = img.src;
		}
	}
}	
Ajax.Responders.register({
  onCreate: function() {
    restartGif();
  }
});

function update_revisions(name, id)
{
	if ($('revisions_'+name).visible())
	{
		Effect.BlindUp('revisions_'+name, {afterFinish: function (element) { 
			Element.show('spinner_'+name);
			new Ajax.Updater('revisions_'+name, 'admin/verbiage/revisions?name='+name+'&page_id='+id, {asynchronous:true, evalScripts:true, onComplete:function(request){Element.hide('spinner_'+name);Effect.BlindDown('revisions_'+name);select_verbiage_revision(name, "new");Effect.Fade('button_revisions_'+name);}})
			 }});
	}
	else
		$("content_"+name+"_revision").value = "new"
}

function select_verbiage_revision(name, id)
{
	if (id == "")
	{
		id = $("content_"+name+"_revision").value
	}
	
	if (id == "new")
	{
		id = $(name+'_revisions').descendants().first().id.sub(name+'_revision_', '');
		$("content_"+name+"_revision").value = id
	}		
	else
		$("content_"+name+"_revision").value = id
	
	unselect_all_verbiage_revisions(name);
	$(name+'_revision_'+id).className = "selected";
}

function unselect_all_verbiage_revisions(name)
{
	$$('#'+name+'_revisions li').each( function(el) { el.className = ""; });
}

function get_hotkey(e) {
	var key = (typeof e != 'undefined' && typeof e.which != 'undefined') ? e.which :
	(typeof e != 'undefined' && typeof e.keyCode != 'undefined') ? e.keyCode :
	(typeof window.event != 'undefined' && typeof event.keyCode != 'undefined') ? event.keyCode :
	null;
	if (!key) return true;
	key = String.fromCharCode(key);

	if ((typeof hotkey[key] != 'undefined' && (e.ctrlKey && e.altKey) || (window.event && window.event.altKey))) return hotkey[key]();
}

window.onkeypress = get_hotkey;
var hotkey = new Object();
hotkey['l'] = function() { 
    document.location = "/admin/login";
}


var Reflector = {
  reflect: function(element) {
    element = $(element);
    options = $H({
      amount: 1/3,
      opacity: 1/3
    }).merge(arguments[1] || {});
    
    var p = element.parentNode, n = element.nextSibling;
    var d = 1.0/(element.height*options.amount);
      
    (element.height*options.amount).times( function(line) {
      var h = Builder.node('div',{style:'height:1px;overflow:hidden'},
        [Builder.node('img',{src:element.src, 
          style:'margin-top:-'+(element.height-line-1)+'px'
        })]);
      p.insertBefore(h,n);
      $(h).setOpacity((1-d*line)*options.opacity);
    });
  }
}



function start_slideshow(start_frame, end_frame, delay) {
    setTimeout(switch_slides(start_frame,start_frame,end_frame, delay), delay);
}

function switch_slides(frame, start_frame, end_frame, delay) {
    return (function() {
        Effect.Fade('slideshow' + frame);
        if (frame == end_frame) { frame = start_frame; } else { frame = frame + 1; }
        Effect.Appear('slideshow' + frame);
        setTimeout(switch_slides(frame, start_frame, end_frame, delay), delay + 850);
    })
}

var Money = Class.create();
	Money.regExp = new RegExp(/(\-?\d+(\.(\d+))?)/);
	Money.prototype = {
		initialize: function(cents) {
		this.cents = cents || 0;
	},

	format: function() {
	if(this.cents == 0) return '$1.00';
	return '$' + this.toString();
	},

	toString: function() {
	// boy it sure would be nice if javascript had sprintf
	var s = (this.cents / 100).toString();
	var p = s.indexOf('.');
	if(p > -1) {
	var n = 3 - (s.length - p);
	for(var i = 0; i < n; i++) {
	s = s + '0';
	}
	} else {
	s = s + '.00';
	}
	return s;
	},

	toMoney: function() {
	return this;
	}
}

Number.prototype.toMoney = function() {
	return new Money(this * 100);
}

String.prototype.toMoney = function() {
var matches = Money.regExp.exec(this);
	return new Money(matches ? Number(matches[0]) * 100 : 0);
}