var buttons = new Array();

function Init () {
	$$('.button').each(function (el) {
		buttons[el.id] = new Button(el);
	});
	var param = getURLParam('featured');
	var index = findPizza(param);
	PizzaPage.setCurrent(index);
	PizzaPage.initPizzas();
}

var PizzaPage = {};
PizzaPage.width = 180;
PizzaPage.newLeft = -109;
PizzaPage.deltaLeft = 220;
PizzaPage.totalItems = 0;
PizzaPage.pizzas = null;
PizzaPage.newFeatured = null;
PizzaPage.animating = false;
PizzaPage.direction = null;
PizzaPage.featured = null;
PizzaPage.activeImage = null;
PizzaPage.setPizzas = function() {
	PizzaPage.pizzas = $('pizzas');
}
PizzaPage.getActive = function() {
	var elt = $E('.activeImage');
	return elt;
}
PizzaPage.getShrink = function() {
	return new Fx.Styles(PizzaPage.activeImage, {
		duration: 500, 
		transition: Fx.Transitions.linear
	});
}
PizzaPage.getGrow = function(){
	return new Fx.Styles(PizzaPage.activeImage, {
		duration: 500,
		transition: Fx.Transitions.linear
	});
}
PizzaPage.transFeatured = function(el) {
	return new Fx.Style(el, 'width' , {
		duration: 500
	});
}
PizzaPage.initPizzas = function() {
	var productPage = $('pizzaBox');
	if(!$defined(productPage)) return;
	PizzaPage.getActive();
	totalItems = $$('.pizza').length - 1;
	$$('.pizza').each(function (el) {
		PizzaPage.width += PizzaPage.deltaLeft;
	});
	PizzaPage.pizzas = $('pizzas');
	PizzaPage.pizzas.setStyle('width', PizzaPage.width);
	$ES('.prev').addEvent('click',function(event){PizzaPage.slideLeft();});
	$ES('.next').addEvent('click',function(event){PizzaPage.slideRight();});
	
	PizzaPage.activeImage = $E('.activeImage');
	PizzaPage.shrink = PizzaPage.getShrink(); 
	PizzaPage.slide = new Fx.Style(PizzaPage.pizzas, 'left', {
		duration: 1000,
		transition: Fx.Transitions.linear
	});
	PizzaPage.allAnimations();
}; // fn PizzaPage.initPizzas
PizzaPage.allAnimations = function() {
	
	
	PizzaPage.slide.addEvent('onComplete', function() {
		var featured = PizzaPage.getFeatured();
		var img = getImg(featured);
		img.removeClass('activeImage');
	}).addEvent('onComplete', function() {
		var newFeatured = PizzaPage.getNewFeatured();
		var img = newFeatured.getChildren()[0];
		img.addClass('activeImage');
		img.setProperty('src', img.getProperty('src')[0].replace(/.sm.jpg/,'.lg.jpg'));
		var findActiveIndex = img.getProperty('src')[0].split('.').length;
		PizzaPage.setActiveId(img.getProperty('src')[0].split('.')[findActiveIndex-3]);
		img.setStyle('height',220);
		var img = getImg(newFeatured);
		PizzaPage.activeImage = img[0];
		var grow = PizzaPage.getGrow();
		grow.start({
			'height':[220,273]
		});
	}).addEvent('onComplete', function () {
		var newFeatured = PizzaPage.getNewFeatured();
		PizzaPage.setNewFeatured(newFeatured);
	}).addEvent('onComplete', function() {
		var oldElt = null;
		$$('.details').each(function(container){
			if (container.getStyle("display") != "none") {
				oldElt = container;
			}
		});
		var elt = $(PizzaPage.activeId);
		var fadeOld = new Fx.Style(oldElt, 'opacity', {
			duration: 900
		});
		var fade = new Fx.Style(elt, 'opacity', {
			duration: 900
		});
		fadeOld.start(1,0).addEvent('onComplete', function() {
			oldElt.setStyle('display','none');
		}).addEvent('onComplete', function() {
			elt.setStyle("opacity","0");
			elt.setStyle("display","block");
			fade.start(0,1);
		});
	}).addEvent('onComplete',
		function() {
			PizzaPage.animating = false;
			//var newFeatured = PizzaPage.getNewFeatured();
		}
	);
}
PizzaPage.setActiveId = function(id) {
	PizzaPage.activeId = id;
}
PizzaPage.setNewFeatured = function(elt) {
	PizzaPage.newFeatured = elt;
}
PizzaPage.getNewFeatured = function()  {
	return PizzaPage.newFeatured;
}
PizzaPage.nextRight = function () {
	if (Math.abs(PizzaPage.pizzas.getStyle('left').toInt() - PizzaPage.deltaLeft*totalItems) >= PizzaPage.pizzas.getStyle('width').toInt()) {
		PizzaPage.pizzas.getFirst().injectAfter(PizzaPage.pizzas.getLast());
		PizzaPage.pizzas.setStyle('left', (PizzaPage.pizzas.getStyle('left').toInt()+PizzaPage.deltaLeft)+"px");
		var startPos = PizzaPage.pizzas.getStyle('left').toInt();
		var endPos = startPos - PizzaPage.deltaLeft;
	} else {
		var startPos = PizzaPage.pizzas.getStyle('left').toInt();
		var endPos = startPos - PizzaPage.deltaLeft;
	}
	return new Array(startPos,endPos);
}; // fn PizzaPage.getNextLeft

PizzaPage.nextLeft = function() {
	if (PizzaPage.pizzas.getStyle('left').toInt() == 0 || PizzaPage.pizzas.getStyle('left').toInt() == -109) {
		//at start
		PizzaPage.pizzas.getLast().injectBefore(PizzaPage.pizzas.getFirst());
		PizzaPage.pizzas.setStyle('left', (-PizzaPage.deltaLeft-109)+"px");
		var startPos = -PizzaPage.deltaLeft-109;
		var endPos = -109;
	} else {
		var startPos = PizzaPage.pizzas.getStyle('left').toInt();
		var endPos = startPos + PizzaPage.deltaLeft;
	}
	return new Array(startPos,endPos);
}; // fn PizzaPage.getNextRight

PizzaPage.slideLeft = function(){
	if (PizzaPage.animating) {
		return;
	}
	PizzaPage.animating = true;
	var pos = PizzaPage.nextLeft();
	PizzaPage.direction = 'back';
	//PizzaPage.slide.start(pos[0],pos[1]);
	PizzaPage.doSlide(pos[0],pos[1]);
};
PizzaPage.slideRight = function(){
	if (PizzaPage.animating) {
		return;
	}
	PizzaPage.animating = true;
	var pos = PizzaPage.nextRight();
	PizzaPage.direction = 'forward';
	//PizzaPage.slide.start(pos[0],pos[1]);
	PizzaPage.doSlide(pos[0],pos[1]);
};
PizzaPage.doSlide = function(start,end) {
	PizzaPage.activeImage = $E('.activeImage');
	PizzaPage.setFeatured();
	PizzaPage.setPizzas();
	PizzaPage.start = start;
	PizzaPage.end = end;
	PizzaPage.shrink = PizzaPage.getShrink();
	PizzaPage.shrink.start({
		'height':[273,220]
	}).addEvent('onComplete', function() {
		var featured = PizzaPage.getFeatured();
		featured.setStyle('width', 300);
		var smoothFeat = PizzaPage.transFeatured($E('.featured'));
		smoothFeat.start(300, 220);
		featured.removeClass('featured');
		var img = getImg(featured);
		img.setProperty('src', img.getProperty('src')[0].replace(/.lg.jpg/,'.sm.jpg'));
	}).addEvent('onComplete', function(){
		var featured = PizzaPage.getFeatured();
		var elt = (PizzaPage.direction == 'forward') ? featured.getNext() : featured.getPrevious();
		PizzaPage.setNewFeatured(elt);
		var newFeatured = PizzaPage.getNewFeatured();
		newFeatured.setStyle('width', 220);
		newFeatured.addClass('featured');
		var smoothFeat = PizzaPage.transFeatured($E('.featured'));
		smoothFeat.start(220, 300);
	}).addEvent('onComplete', function() {
		var featured = PizzaPage.getFeatured();
		PizzaPage.slide.start(PizzaPage.start,PizzaPage.end);
	});
}; // PizzaPage.doSlide
/** 
 * Prevents capture.
 */
PizzaPage.getStart = function() {
	return PizzaPage.start;
}
PizzaPage.getEnd = function() {
	return PizzaPage.end;
}
PizzaPage.setFeatured = function() {
	PizzaPage.featured = $$('.featured');
}
PizzaPage.getFeatured = function() {
	return PizzaPage.featured;
}

PizzaPage.setCurrent = function(index) {
	var containers = $$('.pizza');
	var i =0;
	var centerContainer;
	var oldCenterImg;
	containers.each(function(container) {
		if (i++ == 2) {
			centerContainer = container;
			oldCenterImg = container.getChildren()[0];
		}
	});
	i=0;
	containers.each(function(container) {
		if (i++ == index) {
			centerContainer.addClass('featured');
			var newImg = container.getChildren()[0];
			newImg.src = newImg.src.replace(/.sm.jpg/,'.lg.jpg');
			newImg.addClass('activeImage');
			centerContainer.removeChild(oldCenterImg);
			centerContainer.appendChild(newImg);
			container.appendChild(oldCenterImg);
			var findActiveIndex = newImg.getProperty('src').split('.').length;
			//console.log(newImg.getProperty('src').split('.')[findActiveIndex-3]);
			PizzaPage.setActiveId(newImg.getProperty('src').split('.')[findActiveIndex-3]);
			$(PizzaPage.activeId).setStyle('display','block');
		}
	});
}; // fn setCurrent. 

function findPizza(pizzaName) {
	var containers = $$('.pizza');
	var i=0;
	var j=0;
	containers.each(function(container) {
		var img = getImg(container);
		if (img.src.indexOf(pizzaName) != -1) {
			j = i;
		}
		i++;
	});
	return j;
}

function getImg(iContainer) {
	var img = iContainer.getChildren()[0];
	return img;
}

/*where to buy province swop*/
function where2buy(province){
	var chart = $$('.buyChart');
	var selectedProv = $(province);
	chart.each(function(el){
		el.setStyle('display', 'none' );
	});
	selectedProv.setStyle('display', 'block');
	
}

/*popup*/
function popup(url, type){
	if (type=="recipe") {
		var newwindow = window.open(url,'name','height=400,width=565');
	}else {
		var newwindow = window.open(url,'name','height=700,width=565,scrollbars=yes');
	}
	if (window.focus) {newwindow.focus()}
	return false;
}

/*get url param*/
function getURLParam(strParamName){
  var strReturn = "";
  var strHref = window.location.href;
  if ( strHref.indexOf("?") > -1 ){
    var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
    var aQueryString = strQueryString.split("&");
    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
      if ( aQueryString[iParam].indexOf(strParamName + "=") > -1 ){
        var aParam = aQueryString[iParam].split("=");
        strReturn = aParam[1];
        break;
      }
    }
  }
  return strReturn;
}

/*Mouseover class*/
var Button = new Class({
	initialize: function(el){
		this.el = el;
		ref = this;
		this.src = el.getProperty('src');
		el.addEvent('mouseover', function (e) {
			e = new Event(e);
			//uncomment once all over .gifs are made
			el.setProperty('src',this.src.replace(/.off.gif/,'.on.gif'));
		}.bind(ref));
		el.addEvent('mouseout', function (e) {
			e = new Event(e);
			el.setProperty('src',this.src);
		}.bind(ref));
	}
});

window.addEvent('domready', Init);


