var timeout;
var cartUrl = -1;
var isCartEmpty = true;

var $j = jQuery.noConflict();

$j( document ).ready( function(){
	
	hidePanels();
		
	if($j('#cart_panel table').length > 0){
		isCartEmpty = false;
		
	}
	
	$j('#cart_menu li').hover(
		function(){
			clearTimeout(timeout);
			//hidePanels();
			$j('div:eq(0)', this).show();
			$j('div.felogin-hidden', this).hide();
		},
		function(){
			// timeout = setTimeout( "hidePanels()", 500);
		}	
	);
	
	$j('#cart_menu li a:eq(0)').click(function(){
		return false;
	});
	
	$j('#login_panel').hover( login_hover, login_out );
	$j('#forgot_pw_panel').hover( login_hover, pw_out );
	
	$j('#language_menu').hover(
		function(){
			$j(this).animate({ left: -85}, 300);
		},
		function(){
			$j(this).animate({ left: -28}, 300);
		}
	)
	
	if( cartUrl != -1 ) updateMinicart();
	
	// discount badges
	if( showDisc ) $j('.discountBadge').css('visibility', 'visible');
		
});

function login_hover(){}
function login_out(){
	hidePanels();
}
function pw_out(){
	$j('#forgot_pw_panel').hide();
}


function updateMinicart(){
	$j('#cart_menu li a#view_cart').parent().html('<a id="view_cart" href="#">Cart ( <img src="fileadmin/templates/img/preloader3.gif" width="12" height="12" alt="preloader"/> )</a>');
	$j.post(cartUrl, { minicart : "1"}, function(data){
  		var start = data.indexOf('### AJAX START ###');
  		var end = data.indexOf('### AJAX END ###');
  		var ajaxData = data.substring( start+18, end ); 
  		$j('#cart_menu li a#view_cart').parent().html(ajaxData);
	});



}


/* hidePanels
 * hides the service panels
 */
function hidePanels(){
	$j('#cart_menu li div').hide();
	$j('#cart_menu li div#forgot_pw_panel').show();
	$j('#cart_menu li div#login_panel p.error').parent().show();
}



/* addToCart
 * adds new Item to the cart panel and shows the cart alert
 */
function addToCart( name, productId, quantity, price){
	$j('#cart_panel a.submit').show();
	
	$j.post(cartUrl, { productId : productId, quantity : quantity}, function(data){
  		showCartAlert( name, quantity, price);
	});
	
	if( isCartEmpty ){
		$j('#cart_panel p').remove();
		$j('#cart_panel h1').after('<table></table>');
		$j('#cart_panel a.submit').show();
	}
	isCartEmpty = false;
	
	if( $j('#cart_panel table input[@value='+productId+']').length > 0 ){
		var quantityTd = $j('#cart_panel table input[@value='+productId+']').parent().find('td.quantity');
		var quantityText = ($j(quantityTd).text()).replace('x', '');
		$j(quantityTd).text( (Number(quantityText) + Number(quantity)) + 'x');
	}else{
		$j('#cart_panel table').append('<tr><input type="hidden" name="productId" value="' + productId + '"/><td class="quantity">' + quantity +'x</td><td><a href="'+ document.URL + '&uid='+ productId +'">' + name + '</a></td></tr>');	
	}
	
	var cartTextIndex = ($j('#cart_menu li a:eq(0)').text()).indexOf('(');
	var totalIndex = ($j('#cart_menu li a:eq(0)').text()).indexOf(currency);
	var cartText = ($j('#cart_menu li a:eq(0)').text()).substring(0, cartTextIndex );
	var total = PriceToNumber($j('#cart_menu li a:eq(0)').text().substring(cartTextIndex+1, totalIndex ));
		
	$j('#cart_menu li a:eq(0)').text( cartText + ' (' + NumberToPrice(Number(total) + (Number(quantity)*Number(price))) + ' '+currency+')');
	showCartEmptyAlert();
	
		
}



/* showCartAlert
 * shows the cart alert
 */
function showCartAlert( name, quantity, price){
	var scrollOffsets = getScrollXY();
	var windowDimensions = getWindowDimensions();
	var top = (windowDimensions[1]-200)/2 + scrollOffsets[1];
	var left = (windowDimensions[0]-262)/2 + scrollOffsets[0];
		
	$j('#cart_alert').css('top', top + 'px');
	$j('#cart_alert').css('left', left + 'px');
	$j('#cart_alert table').remove();
	$j('#cart_alert').html('<h1>Item successfully added to cart:</h1><table><tr><td class="quantity">' + quantity +'x</td><td>' + name + '</td><td class="total">'+ NumberToPrice(Number(quantity)*Number(price)) +' '+currency+'</td></tr></table><p class="total">Total: 179.37 &euro;</p><a class="submit close" href="">ok</a><a class="submit cart" href="'+ cartUrl +'">View Cart</a>');	
	
	
	var alertTotalIndex = ($j('#cart_alert p.total').text()).indexOf(':') + 1;
	var cartTextIndex = ($j('#cart_menu li a:eq(0)').text()).indexOf('(') + 1;
	var totalIndex = ($j('#cart_menu li a:eq(0)').text()).indexOf(')') - 1;
	var total = ($j('#cart_menu li a:eq(0)').text()).substring( cartTextIndex, totalIndex );
	$j('#cart_alert p.total').remove();
	
	$j('#cart_alert a.close').click(
		function(){
			$j('#cart_alert').fadeOut();
			return false;
		}
	);
	
	$j('#cart_alert').fadeIn();
}


/* showCartAlert
 * shows the cart alert
 */
function showCartEmptyAlert(){
	var scrollOffsets = getScrollXY();
	var windowDimensions = getWindowDimensions();
	var top = (windowDimensions[1]-200)/2 + scrollOffsets[1];
	var left = (windowDimensions[0]-262)/2 + scrollOffsets[0];
	
	$j('#cart_alert').css('top', top + 'px');
	$j('#cart_alert').css('left', left + 'px');
	$j('#cart_alert').html('<table style="border: none; margin: 0;"><tr><td style="border: none;" ><img src="fileadmin/templates/img/preloader.gif" width="20" height="20"/></td><td style="border: none; vertical-align: middle;"><h1>Please wait...</h1></td></tr></table>');

	$j('#cart_alert').fadeIn();
}



/* NumberToPrice
 * formats a Number (10.7) to String (10,70)
 */
function NumberToPrice( total ){
	//total = total.replace('&nbsp;','');
	return number_format(total, 2, ',', '.');	
}


/* PriceToNumber
 * formats a String (10,75 €) to a Number (10.75) */

function PriceToNumber( price ){
	var cleanPrice;
	price = price.replace('&nbsp;','');
	if( price.indexOf(currency) != -1){
		cleanPrice = price.replace(currency, '');
	}else{
		cleanPrice = price;
	}
	cleanPrice = cleanPrice.replace(' ','');
	cleanPrice = cleanPrice.replace('.','');
	cleanPrice = cleanPrice.replace(',','.');
	return parseFloat(cleanPrice);
}



function number_format (number, decimals, dec_point, thousands_sep)
{
  var exponent = "";
  var numberstr = number.toString ();
  var eindex = numberstr.indexOf ("e");
  if (eindex > -1)
  {
    exponent = numberstr.substring (eindex);
    number = parseFloat (numberstr.substring (0, eindex));
  }
  
  if (decimals != null)
  {
    var temp = Math.pow (10, decimals);
    number = Math.round (number * temp) / temp;
  }
  var sign = number < 0 ? "-" : "";
  var integer = (number > 0 ? 
      Math.floor (number) : Math.abs (Math.ceil (number))).toString ();
  
  var fractional = number.toString ().substring (integer.length + sign.length);
  dec_point = dec_point != null ? dec_point : ".";
  fractional = decimals != null && decimals > 0 || fractional.length > 1 ? 
               (dec_point + fractional.substring (1)) : "";
  if (decimals != null && decimals > 0)
  {
    for (i = fractional.length - 1, z = decimals; i < z; ++i)
      fractional += "0";
  }
  
  thousands_sep = (thousands_sep != dec_point || fractional.length == 0) ? 
                  thousands_sep : null;
  if (thousands_sep != null && thousands_sep != "")
  {
	for (i = integer.length - 3; i > 0; i -= 3)
      integer = integer.substring (0 , i) + thousands_sep + integer.substring (i);
  }
  
  return sign + integer + fractional + exponent;
}



/* formatArticleNumber
 * formats the articleNumber 111.111 to 111111
 */
function formatArticleNumber( articleNumber ){
	var cleanNumber = articleNumber.replace('.', '');
	return cleanNumber;
}



/* getScrollXY
 * returns scroll offset
 */
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 ];
}



/* getWindowDimensions
 * returns the window dimension
 */
function getWindowDimensions(){
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  return [ myWidth, myHeight ];
}

/*
* processSearchFormInput
* to make it possible to search for artikelnumbers in the form "101864"
* we need to insert a period "." after the first three numbers, because the 
* articlenumbers are displayed like 101.864 on the webpage.
*
*/
function processSearchFormInput(form) {
		var sword = form["tx_indexedsearch[sword]"].value;
			
		if (sword && /[0-9]{6}/.test(sword)) {
			sword = sword.substring(0,3)+"."+sword.substring(3,6); 
			form["tx_indexedsearch[sword]"].value = sword;
			return true;
		} else {
			return true;
		}
	}