/**
 * @author Ideatronic
 */

fc_acc = false;
fc = false;

function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

function fieldBlur(e)
{
	field = e.target;
	if(field.value==='')
	{
		field.value=field.example; 
		field.className+= 'active'; 
	}
}
function fieldFocus(e)
{
	field = e.target;
	if(field.value==field.example)
	{
		field.value=''; 
		field.className=field.className.replace(" over", ""); 
	}
} 
 
function fieldInit(field, defValue)
{
	field = $(field);
	checkBefSubit(field,defValue);
	field.example = defValue;
	if(field.value === '')
		field.value = field.example;
	field.addEvent('blur',fieldBlur);
	field.addEvent('focus',fieldFocus);
}

function getCenterPage(){
		var center = [];
		var pageYOffset = getScrollXY()[1];
		center[0] = parseInt((window.getSize().x-110)/2)+'px';
		center[1] = parseInt((window.getSize().y-110)/2)+pageYOffset+'px';
		return center;			
	}


function checkBefSubit(field,def){
	var $field = field;
	form = field.form;
	form = $(form);
	form.addEvent('submit',function(e){
		var ev = new Event(e);
		ev.stop();
		if(field.value == field.example || field.value === '')
		{
			field.value = '';
		}
		this.submit();
	});
}

function showHelpFlash()
{
	var centerpage = getCenterPage();
	var container = $('helpFlash');
	container.injectInside($('galHelpContainer'));
	$('galHelpContainer').setStyle('margin-bottom','15px');
	if($('scrollGalleryContainer'))
	{
		$('scrollGalleryContainer').setStyle('display','none');
		galleryScroll.stopAutoScroll();
	}
	container.setStyle('display','block');
	var obj = new Swiff('/files/flash/help.swf',{width:'544px',height:'235px',container:container, params:{wmode:'transparent'}});
}

function hideHelpFlash(){
	$('helpFlash').innerHTML = '';
	$('helpFlash').style.display = 'none';
	$('galHelpContainer').setStyle('margin-bottom','0');
	if($('scrollGalleryContainer'))
	{
		$('scrollGalleryContainer').setStyle('display','');
		galleryScroll.startAutoScroll();
	}
	
}



function updateProduct(obj,productId,amount)
{
	var obj = $(obj);
	if(amount == null)
	{
		var amount = obj.getParent().getParent().getElement('input.productAmountInput').value;
	}
	
	var container = $('cartContainer').getElement('div.Rbox_content_holder');
	fc.showLoader()
	var param = 'action=update&ProductID='+productId+'&amount='+amount;
	var req = new Request({
			evalScripts:true,
			method: 'get',
			update:container,
			url: fc.ajaxURL,
			onSuccess: function(html){
				fc.hideLoader();
				container.innerHTML = html;
			},
			onFailure: function(){
				fc.hideLoader();
				alert('data request error');
			}
		}).send(param);
}

var ajaxCart = new Class({
	initialize:function(cartId)
	{
		this.cart = $(cartId);
	},
	getProducts:function()
	{
		this.products = this.cart.getElements('div.ShoppingProduct');
		this.products.each(function(product,index){
			var input = product.getElement('input.productAmountInput');
			var updateLink = product.getElement('a.productAmountUpdate');
		})
	}
})


var flyingCart = new Class({
	initialize:function(cartContId,productClass, ajaxURL){
		var $this = this;
		this.ajaxURL = ajaxURL;
		this.cart = $(cartContId);
		this.loader = $('loader');
		this.products = $$(productClass);
		this.cartItems = $('cartItems');
		this.cartValue = $('cartValue');
		this.cartHTMLContainer = this.cart.getElement('div.Rbox_content_holder');
		var $this = this;
		this.products.each(function(product,i){
			product.img = product.getElement('img');
			product.button = product.getElement('input.submit');
			product.ajaxAddres = product.getElement('input.hidden').value;
			product.amount = product.getElement('input.amount');
			product.caller = product;
			product.button.addEvent('click',function(e){
				var ev = new Event(e);
				ev.stop();
				$this.updateCart(product, product.ajaxAddres,$this.cartHTMLContainer);
			});
		});
	},
	updateCart: function(caller, param, container){
		var obj = caller.img.clone();
		obj.className += 'flying';
		obj.injectAfter(caller.img);
		obj.setStyle('opacity',0);
		var htmlContainer = container;
		var t = this.getTopPos(obj);
		var l = this.getLeftPos(obj)-obj.getSize().x;
		obj.injectInside(document.body);
		obj.setStyles({
			'left':l+'px',
			'top':t+'px'
		});
		if(caller.amount){
			param+='&amount='+caller.amount.value;
		} 
			
		url_add = this.ajaxURL;
		var $this = this;
		this.showLoader();
			this.req = new Request({
			evalScripts:true,
			method: 'get',
			url: url_add,
			onSuccess: function(html){
				$this.hideLoader();
				$this.flyToCart(obj);
				htmlContainer.innerHTML = html;
				try{
					pageTracker._trackPageview('/BuyNowButton');
				}
				catch(e)
				{}
			},
			onFailure: function(){
				$this.hideLoader();
				alert('data request error');
			}
		}).send(param);
	},
	checkFold:function(){
		this.fullX = window.getScrollWidth(); this.fullY = window.getScrollHeight();
		this.scrollX = window.getScroll().x; this.scrollY = window.getScroll().y;
		this.userVisibleX = window.getSize().x; this.userVisibleY = window.getSize().y;
		this.shopping_cart_x = this.getLeftPos(this.cart); this.shopping_cart_y = this.getTopPos(this.cart);
		
		if(this.shopping_cart_y<this.scrollY){
			return true;
		} 
		else{
			return false;
		} 
	},
	
	showLoader:function()
	{
		center = getCenterPage();
		this.loader.setStyles({'display':'block','left':center[0],'top':center[1]});
	},
	hideLoader:function()
	{
		this.loader.setStyle('display','none');
	},
	flyToCart:function(obj){
		var FlyFX = new Fx.Morph(obj, {duration: 1500, transition: Fx.Transitions.Sine.easeInOut});
		var currentXPos = this.getLeftPos(obj);
		var currentYPos = this.getTopPos(obj);
		var $this = this;
		if(this.checkFold())
		{
			var clonedCart = this.cart.clone().injectAfter(this.cart);
			clonedCart.className += ' flying';
			var CartFX = new Fx.Morph(clonedCart, {duration: 600, transition: Fx.Transitions.Sine.easeInOut});
			CartFX.start({
			    'top': [$this.shopping_cart_y, ($this.scrollY+20)],
			    'left': [$this.shopping_cart_x, ($this.shopping_cart_x+$this.scrollX)]
			}).chain(function(){
				FlyFX.start({
				    'top': [currentYPos, ($this.shopping_cart_y+$this.scrollY)],
				    'left': [currentXPos, ($this.shopping_cart_x+$this.scrollX+80)],
					'width': 0,
					'height':0,
					'opacity':[1, 0.8]
				}).chain(function(){
					obj.dispose();
					CartFX.start({
					    'top': [$this.shopping_cart_y],
					    'left': [$this.shopping_cart_x],
						'opacity':0
					});
				}).chain(function(){
					clonedCart.dispose();
				});
			});
			return;
		}
		else
		{
			FlyFX.start({
			    'top': [currentYPos, this.shopping_cart_y],
			    'left': [currentXPos, this.shopping_cart_x+80],
				'width': 0,
				'height':0,
				'opacity':0.3
			});
		}
	},
	getTopPos:function(inputObj)
	{		
	  var returnValue = inputObj.offsetTop;
	  while((inputObj = inputObj.offsetParent) !== null){
	  	if(inputObj.tagName!='HTML'){
			returnValue += inputObj.offsetTop;
		} 
	  }
	  return returnValue;
	},
	getLeftPos:function(inputObj)
	{
	  var returnValue = inputObj.offsetLeft;
	  while((inputObj = inputObj.offsetParent) !== null){
	  	if(inputObj.tagName!='HTML'){
			returnValue += inputObj.offsetLeft;
		}
			
	  }
	  return returnValue;
	},
	updateCartValues:function(amount){
		
		var newAmount = parseInt(amount);
		
		if(newAmount>0){
			$('viewCart').setStyle('display','');
		}
			
		//this.updateValues(newAmount);	
	},
	updateValues:function(items){
		var cartItems = this.cartItems.getElement('p.second');
		
				
		if (items) {
			cartItems.innerHTML = items;
		} 
	}
});

function updateCartValues(am,vl){
	if($chk(fc)){
		fc.updateCartValues(am,vl);
	}
		
	if(!$chk(fc) && $chk(fc_acc)){
		fc_acc.updateCartValues(am,vl);
	}
		
}


