var ACEmail = {
	'open' : function() {
		$('email-open').blur();
		
		if(Element.getStyle('email-open', 'display')=="none") {
			Effect.SlideRight('email-open', {duration:0.4, scaleContent:false, afterFinish: function() { $('email-address').focus(); } });
		}
		else if($('email-send').style.display!="block" && $('email-sent').style.display!="block") {
			Effect.SlideLeft('email-open', {duration:0.4, scaleContent:false});
		}
   },
	
   'send' : function() {
		$('email-form').hide();
		$('email-send').style.display='block';
		
		$('emailform').request({
			onSuccess: function(responseObject) { ACEmail.done(responseObject); },
			onFailure: function() { ACEmail.error(); }
		}); 
		
	},
	
   'done' : function(responseObject) {
   		
   		if(ACUtil.trim(responseObject.responseText)!="Success") {
   			ACEmail.error("error");
   			return;
   		}
		$('email-send').hide();
		$('email-sent').style.display='block';
		window.setTimeout('ACEmail.hideSent()',3000);
		
	},
	
	'error' : function() {
		alert("There was an error sending the email."); 
		$('email-send').hide();
		ACEmail.hideSent();
	},
	
	'hideSent' : function() {
		Effect.SlideLeft('email-open', {duration:0.4, scaleContent:false, 
			afterFinish: function() { 
				$('email-sent').hide();
				$('email-form').style.display='block';
			}
		});
	},

	'callInProgress' : function(xmlhttp) {
		switch (xmlhttp.readyState) {
			case 1: case 2: case 3:
				return true;
			break;
			// Case 4 and 0
			default:
				return false;
			break;
		}
	}
	
};

Effect.SlideRight = function(element) {
  element = $(element);
  element.cleanWhitespace();
  var oldInnerBottom = $(element.firstChild).getStyle('bottom');
  var elementDimensions = element.getDimensions();
  return new Effect.Scale(element, 100, Object.extend({ 
    scaleContent: false, 
    scaleY: false, 
    scaleFrom: window.opera ? 0 : 1,
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
    restoreAfterFinish: true,
    afterSetup: function(effect) {
      effect.element.makePositioned();
      effect.element.firstChild.makePositioned();
      if(window.opera) effect.element.setStyle({top: ''});
      effect.element.makeClipping();
      effect.element.setStyle({width: '0px'});
      effect.element.show(); },
    afterUpdateInternal: function(effect) {
      effect.element.firstChild.setStyle({bottom:
        (effect.dims[0] - effect.element.clientHeight) + 'px' }); 
    },
    afterFinishInternal: function(effect) {
      effect.element.undoClipping(); 
      // IE will crash if child is undoPositioned first
      if(/MSIE/.test(navigator.userAgent) && !window.opera){
        effect.element.undoPositioned();
        effect.element.firstChild.undoPositioned();
      }else{
        effect.element.firstChild.undoPositioned();
        effect.element.undoPositioned();
      }
      effect.element.firstChild.setStyle({bottom: oldInnerBottom}); }
    }, arguments[1] || {})
  );
}

Effect.SlideLeft = function(element) {
  element = $(element);
  element.cleanWhitespace();
  var oldInnerBottom = $(element.firstChild).getStyle('bottom');
  return new Effect.Scale(element, window.opera ? 0 : 1,
   Object.extend({ scaleContent: false, 
    scaleY: false, 
    scaleMode: 'box',
    scaleFrom: 100,
    restoreAfterFinish: true,
    beforeStartInternal: function(effect) {
      effect.element.makePositioned();
      effect.element.firstChild.makePositioned();
      if(window.opera) effect.element.setStyle({top: ''});
      effect.element.makeClipping();
      effect.element.show(); },  
    afterUpdateInternal: function(effect) {
      effect.element.firstChild.setStyle({bottom:
        (effect.dims[0] - effect.element.clientHeight) + 'px' }); },
    afterFinishInternal: function(effect) {
      effect.element.hide();
      effect.element.undoClipping();
      effect.element.firstChild.undoPositioned();
      effect.element.undoPositioned();
      effect.element.setStyle({bottom: oldInnerBottom}); }
   }, arguments[1] || {})
  );
}