/*
* 2007-2010 PrestaShop 
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author Prestashop SA <contact@prestashop.com>
*  @copyright  2007-2010 Prestashop SA
*  @version  Release: $Revision: 1.4 $
*  @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
*  International Registred Trademark & Property of PrestaShop SA
*/

function ps_round(value, precision)
{
	if (typeof(roundMode) == 'undefined')
		roundMode = 2;
	if (typeof(precision) == 'undefined')
		precision = 2;
	
	method = roundMode;
	if (method == 0)
		return ceilf(value, precision);
	else if (method == 1)
		return floorf(value, precision);
	precisionFactor = precision == 0 ? 1 : Math.pow(10, precision);
	return Math.round(value * precisionFactor) / precisionFactor;
}

function ceilf(value, precision)
{
	if (typeof(precision) == 'undefined')
		precision = 0;
	precisionFactor = precision == 0 ? 1 : Math.pow(10, precision);
	tmp = value * precisionFactor;
	tmp2 = tmp.toString();
	if (tmp2[tmp2.length - 1] == 0)
		return value;
	return Math.ceil(value * precisionFactor) / precisionFactor;
}

function floorf(value, precision)
{
	if (typeof(precision) == 'undefined')
		precision = 0;
	precisionFactor = precision == 0 ? 1 : Math.pow(10, precision);
	tmp = value * precisionFactor;
	tmp2 = tmp.toString();
	if (tmp2[tmp2.length - 1] == 0)
		return value;
	return Math.floor(value * precisionFactor) / precisionFactor;
}

function formatedNumberToFloat(price, currencyFormat, currencySign)
{
	price = price.replace(currencySign, '');
	if (currencyFormat == 1)
		return parseFloat(price.replace(',', '').replace(' ', ''));
	else if (currencyFormat == 2)
		return parseFloat(price.replace(' ', '').replace(',', '.'));
	else if (currencyFormat == 3)
		return parseFloat(price.replace('.', '').replace(' ', '').replace(',', '.'));
	else if (currencyFormat == 4)
		return parseFloat(price.replace(',', '').replace(' ', ''));
	return price;
}

//return a formatted price
function formatCurrency(price, currencyFormat, currencySign, currencyBlank)
{
	// if you modified this function, don't forget to modify the PHP function displayPrice (in the Tools.php class)
	blank = '';
	price = parseFloat(price.toFixed(6));
	price = ps_round(price, priceDisplayPrecision);
	if (currencyBlank > 0)
		blank = ' ';
	if (currencyFormat == 1)
		return currencySign + blank + formatNumber(price, priceDisplayPrecision, ',', '.');
	if (currencyFormat == 2)
		return (formatNumber(price, priceDisplayPrecision, ' ', ',') + blank + currencySign);
	if (currencyFormat == 3)
		return (currencySign + blank + formatNumber(price, priceDisplayPrecision, '.', ','));
	if (currencyFormat == 4)
		return (formatNumber(price, priceDisplayPrecision, ',', '.') + blank + currencySign);
	return price;
}

//return a formatted number
function formatNumber(value, numberOfDecimal, thousenSeparator, virgule)
{
	value = value.toFixed(numberOfDecimal);
	var val_string = value+'';
	var tmp = val_string.split('.');
	var abs_val_string = (tmp.length == 2) ? tmp[0] : val_string;
	var deci_string = ('0.' + (tmp.length == 2 ? tmp[1] : 0)).substr(2);
	var nb = abs_val_string.length;

	for (var i = 1 ; i < 4; i++)
		if (value >= Math.pow(10, (3 * i)))
			abs_val_string = abs_val_string.substring(0, nb - (3 * i)) + thousenSeparator + abs_val_string.substring(nb - (3 * i));

	if (parseInt(numberOfDecimal) == 0)
		return abs_val_string;
	return abs_val_string + virgule + (deci_string > 0 ? deci_string : '00');
}

//change the text of a jQuery element with a sliding effect (velocity could be a number in ms, 'slow' or 'fast', effect1 and effect2 could be slide, fade, hide, show)
function updateTextWithEffect(jQueryElement, text, velocity, effect1, effect2, newClass)
{
	if(jQueryElement.text() != text)
		if(effect1 == 'fade')
			jQueryElement.fadeOut(velocity, function(){
				$(this).addClass(newClass);
				if(effect2 == 'fade') $(this).text(text).fadeIn(velocity);
				else if(effect2 == 'slide') $(this).text(text).slideDown(velocity);
					else if(effect2 == 'show')	$(this).text(text).show(velocity, function(){});
			});
		else if(effect1 == 'slide')
			jQueryElement.slideUp(velocity, function(){
				$(this).addClass(newClass);
				if(effect2 == 'fade') $(this).text(text).fadeIn(velocity);
				else if(effect2 == 'slide') $(this).text(text).slideDown(velocity);
					else if(effect2 == 'show')	$(this).text(text).show(velocity);
			});
			else if(effect1 == 'hide')
				jQueryElement.hide(velocity, function(){
					$(this).addClass(newClass);
					if(effect2 == 'fade') $(this).text(text).fadeIn(velocity);
					else if(effect2 == 'slide') $(this).text(text).slideDown(velocity);
						else if(effect2 == 'show')	$(this).text(text).show(velocity);
				});
}

//show a JS debug
function dbg(value)
{
	var active = false;//true for active
	var firefox = true;//true if debug under firefox

	if (active)
		if (firefox)
			console.log(value);
		else
			alert(value);
}

/**
* Function : print_r()
* Arguments: The data  - array,hash(associative array),object
*            The level - OPTIONAL
* Returns  : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/
function print_r(arr, level)
{
	var dumped_text = "";
	if (!level)
		level = 0;

	//The padding given at the beginning of the line.
	var level_padding = "";
	for (var j = 0 ; j < level + 1; j++)
		level_padding += "    ";

	if (typeof(arr) == 'object')
	{ //Array/Hashes/Objects 
		for (var item in arr)
		{
			var value = arr[item];
			if (typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			}
			else
			{
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	}
	else
	{ //Stings/Chars/Numbers etc.
		dumped_text = "===>" + arr + "<===("+typeof(arr)+")";
	}
	return dumped_text;
}

//verify if value is in the array
function in_array(value, array)
{
	for (var i in array)
		if (array[i] == value)
			return true;
	return false;
}

// handles calls from maps
function mapcall(v)
{
    switch(v)
    {
        case 'free_shipping':
            redirect('http://www.google.com.au');
            break;
       case 'checklist':
            redirect('http://www.google.com.au');
            break;
       case 'gift_reg':
            alert('coming soon');
            break;
      case 'rewards':
            redirect('http://www.google.com.au');
            break;
      case 'shop':
            redirect('/en/28-baby');
            break;
      case 'retail':
            redirect('/en/28-baby');
            break;
      case 'awards':
             redirect('http://www.google.com.au');
            break;
    }
}

function redirect(to)
{
    window.location=to;
}
jQuery( document ).ready( function($){

     $('#rightad div ul').cycle();
     
     $('#index #home_snippet_wrap ul').cycle();
    // $('#enews').hover(function(){$('#awebber').attr('style','display:block');});
     //$('#enews').mouseenter(function(){$('#awebber').show('slow');});
     //$('#enews').mouseleave(function(){$('#awebber').hide('slow');});
    // $( '#enews' ).hover({ $('#awebber').show('slow'); } , function(){ /*Actions Here After Hover*/ })
     $('#enews').hover(function(){$('#cp_form').stop(true,true).delay(300).show('slow');}, function(){$('#cp_form').stop(true,true).hide('slow');});
     $('#cust_login').hover(function(){$('#cust_login_form').stop(true,true).delay(300).show('slow');}, function(){$('#cust_login_form').stop(true,true).hide('slow');});
     $('#myaccount').hover(function(){$('#myaccount_content').stop(true,true).delay(300).show('slow');}, function(){$('#myaccount_content').stop(true,true).hide('slow');});
     
     $('.header_login #email').click(function(){$('.header_login #email').val('');$('.header_login #passwd').val('');
        });
        
     // category desc
     var cat_max_height = 40 ;
     if($('body#category .cat_desc').height() > cat_max_height){
         $('body#category .cat_desc').attr('style','max-height:' + cat_max_height + 'px;overflow:hidden');
         $('body#category #more-cat').attr('style','display:block');
         $('body#category #more-cat').click(function(){$('body#category .cat_desc').attr('style','max-height:9999px !important;');$('body#category #more-cat').attr('style','display:none');$('body#category #less-cat').attr('style','display:block');});
         $('body#category #less-cat').click(function(){$('body#category .cat_desc').attr('style','max-height:' + cat_max_height + 'px;overflow:hidden');$('body#category #more-cat').attr('style','display:block');});
     }
    //Compare all values to a parent
    $( '#header_row_3' ).css({'position' : 'relative'});

    var WrapWidth = $( '#header_row_3' ).width();

    $( '#nc_top_cat_menu li' ).not( '#nc_top_cat_menu li li' ).each( function(){

     //Grab The UL
     var Ul = $( this ).children( 'ul' );

     //Get The Offset
     var Position =  $( this ).position();

     //Compare It To The
     var MaxWidth =  WrapWidth - Position.left;

     //And Set It!
     if ( Ul.width() > MaxWidth ) {
      Ul.width( MaxWidth );
     }

    })

   })
   function limitLength(o, max){
       if(o.value.length>=max){
           alert('This field can not contain more than ' + max + ' characters');
       }
   }

