Effect.Scroll = Class.create();
Object.extend(Object.extend(Effect.Scroll.prototype, Effect.Base.prototype), {
  initialize: function(element) {
	this.element = $(element);
	var options = Object.extend({
	  x:    0,
	  y:    0,
	  mode: 'absolute'
	} , arguments[1] || {}  );
	this.start(options);
  },
  setup: function() {
	if (this.options.continuous && !this.element._ext ) {
	  this.element.cleanWhitespace();
	  this.element._ext=true;
	  this.element.appendChild(this.element.firstChild);
	}

	this.originalLeft=this.element.scrollLeft;
	this.originalTop=this.element.scrollTop;

	if(this.options.mode == 'absolute') {
	  this.options.x -= this.originalLeft;
	  this.options.y -= this.originalTop;
	} else {

	}
  },
  update: function(position) {
	this.element.scrollLeft = this.options.x * position + this.originalLeft;
	this.element.scrollTop  = this.options.y * position + this.originalTop;
  }
});

Effect.ImageScroll = Class.create();
Object.extend(Object.extend(Effect.ImageScroll.prototype, Effect.Base.prototype), {
	initialize: function(element) {
		this.element = $(element);
		this.images = this.element.getElementsByTagName('img');
		this.speed = -1;
		this.totalWidth = 0;
		this.boxWidth = this.element.offsetWidth
		this.boxCenter = ~~(this.boxWidth / 2);

		var effect = this;
		for (var i = 0; i < this.images.length; i++) {
			var image = this.images[i];
			image.style.left = this.totalWidth + 'px';
			image.offset = this.totalWidth;
			this.totalWidth += image.width;
			image.onmousemove = function() {
				effect.speed = ~~(((effect.boxCenter - this.offset) * 3) / effect.boxCenter);
			}
		}
		this.element.onmouseout = function() {
			effect.speed = -1;
		}
		this.start(arguments[1] || {});
	},
	loop: function(timePos) {
		this.render(1);
	},
	update: function(position) {
		var speed = this.speed;
		for (var i = 0; i < this.images.length; i++) {
			var image = this.images[i];
			image.offset += speed;
			if (speed < 0 && image.offset <= -image.width) {
				image.offset += this.totalWidth;
			}
			if (speed > 0 && image.offset >= this.boxWidth) {
				image.offset -= this.totalWidth;
			}
		}
		for (var i = 0; i < this.images.length; i++) {
			this.images[i].style.left = this.images[i].offset + 'px';
		}
	}
});

var startImageScroller = function() {
	new Effect.ImageScroll('h-scroller');
}

/**
var enableHScroller = function() {
	var element = $('h-scroller');
	var images = element.getElementsByTagName('img');
	var offsets = new Array();
	var totalWidth = 0;
	for (var i = 0; i < images.length; i++) {
		images[i].style.left = totalWidth + 'px';
		offsets[i] = totalWidth;
		totalWidth += images[i].width;
	}
	move = function() {
		for (var i = 0; i < images.length; i++) {
			offsets[i]--;
			if (offsets[i] <= -(images[i].width)) {
				offsets[i] = totalWidth - images[i].width;
			}
			images[i].style.left = offsets[i] + 'px';
		}
	}
	setInterval('move()', 50);
}

Event.observe(window, 'load', enableHScroller, false);
**/



function activate(el) {
	if("block"==$(el).style.display)
		$(el).style.display="none";
	else
		$(el).style.display="";
}

var myGlobalHandlers = {
		onCreate: function(){
			Element.show('systemWorking');
		},

		onComplete: function() {
			if(Ajax.activeRequestCount == 0){
				Element.hide('systemWorking');
			}
		},
		onSuccess: function(r) {
			var msg=r.responseText ||  ( r.statusText + '(' + r.status +')' );
			$('systemDebug').innerHTML= msg ;
		},

		onFailure: function (r) {
			$('systemError').style.display='block';
			var msg=r.responseText ||  ( r.statusText + '(' + r.status +')' );
			$('systemErrorMsg').innerHTML=  msg ;
		},
		onException: function (ajax,e) {
				$('systemError').style.display='block';
				var msg= "JS Exception: " ( e + '(' + ajax +')' );
				$('systemErrorMsg').innerHTML= msg ;
		}

	};

Ajax.Responders.register(myGlobalHandlers);

var mybehaviours = {
	'.hidden': function(el){
				if (el._hidden)
	  el.style.visibility="visible";
	el._hidden=1;
				Element.hide(el);
	},
	'.order_product': function (el) { el.onclick=addProduct; },
  '.delete_product': function (el) { el.onclick=deleteProduct; },
	'.cart_item': function (el) { el.onchange=updateCart; },
	'[autocomplete]' : function (el){
		  el.onblur=function () { el.value=''; };
				var id=el.id.match(/^([A-Za-z0-9-_]+)_auto_complete/)[1];
	$(id +  '_choices').style.visibility='visible';
				var myclass='falcon_theaters';
				new Ajax.Autocompleter( el.id , id +  '_choices',
		'/ajax.php?call=auto_complete&class=' + myclass,
		  {
		minChars:3,
		paramName:'value',
		updateElement: function (li) {

		  el.value='';
		  new Insertion.After(li.firstChild.firstChild,' <a href="#" onclick="this.parentNode.parentNode.removeChild(this.parentNode)" title="remove theater" class="deletable" ><img src="/static/scriptaculous/icons/del.gif" alt="del"  /></a>');
		  new Insertion.Bottom('registered_theaters',li.innerHTML);
		  var a=new Array("street_country_id","street_state","theater_name","street_address1","street_address2","street_city","street_zip_code");
		  a.each(function (s) {
			try{
			  var v=document.getElementsByClassName(s,li)[0].childNodes[0].nodeValue;
			  i=el.form.elements[s];
			  if (i.value) {
			return;
			  }
			  if ('SELECT'==i.nodeName) {
			var oOption = document.createElement("OPTION");
			oOption.text=v;
			oOption.value=v;
			i.add(oOption);
			oOption.selected=true;
			   }
			  else {
			i.value=v;
			  }
			} catch(e) { }
		  } );

		  $(id +  '_choices').innerHTML='';
		},
		afterUpdateElement: function (input,selected)
		  { $(id).value=input.value; }
		  }
		);
	 el.onkeypress= function(event) {
	if(this.active)
	  switch(event.keyCode) {
	   case Event.KEY_TAB:
	   case Event.KEY_RETURN:
	 this.selectEntry();
	 Event.stop(event);
	   case Event.KEY_ESC:
	 this.hide();
	 this.active = false;
	 Event.stop(event);
	 return;
	   case Event.KEY_LEFT:
	   case Event.KEY_RIGHT:
	 return;
	   case Event.KEY_UP:
	 this.markPrevious();
	 this.render();
	 if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);
	 return;
	   case Event.KEY_DOWN:
	 this.markNext();
	 this.render();
	 if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);
	 return;
	  }
	 else
	   if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN ||
	 (navigator.appVersion.indexOf('AppleWebKit') > 0 && event.keyCode == 0))  { Event.stop(event); return;}

	this.changed = true;
	this.hasFocus = true;

	if(this.observer) clearTimeout(this.observer);
	  this.observer =
	setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000);
  };
	}

};

Behaviour.register(mybehaviours);

function setCookie(name, value, expires, path, domain, secure) {
	document.cookie= name + "=" + escape(value) +
	((expires) ? "; expires=" + expires.toGMTString() : "") +
	((path) ? "; path=" + path : "") +
	((domain) ? "; domain=" + domain : "") +
	((secure) ? "; secure" : "");
}

function getCookie(name) {
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	if (begin == -1) {
	begin = dc.indexOf(prefix);
	if (begin != 0) return null;
	} else {
	begin += 2;
	}
	var end = document.cookie.indexOf(";", begin);
	if (end == -1) {
	end = dc.length;
	}
	return unescape(dc.substring(begin + prefix.length, end));
}

function deleteCookie(name, path, domain) {
	if (getCookie(name)) {
	document.cookie = name + "=" +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		"; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
}

function addProduct(item) {
	item=((this.id)?"cart_" + this.id:item);
	var n=Number(getCookie(item));
	n=1+n;
	setCookie(item, n, false, "/");
	$(item).innerHTML=n;
}

function updateCart() {
  item=this.id;
  setCookie(item, this.value, false, "/");
  new Effect.Highlight(item);
  if (this.value>0) return;
  Element.hide('row_' + item);
  deleteCookie(item, "/");
}

function deleteProduct(item) {
	item=((this.id)?"cart_" + this.id:item);
	$(item).value=0;
	$(item).onchange();
}

topscroll.n=0;

function topscroll() {
  el=$('topscroll');
  if (!el._ext) {
   el._ext=true;
   Element.cleanWhitespace(el);
   }
   el=$('topscroll');
   topscroll.n++;

  if ( topscroll.n >= el.childNodes.length) {
	topscroll.n=1;
	el.scrollTop=0;
	}
  d=el.childNodes[topscroll.n].offsetTop;
  new Effect.Scroll(el,{mode:'absolute',x:0,y:d });
}



window.setInterval('topscroll()',4000);
