var pricesStatus = "inc";
var cookieName = "fortissimovatc";
var cookieDays = 30;
var cc_handle_display_ = false;

Event.observe( window, 'load', function() {

	Event.observe( $$( '.copy_billing_details_as_delivery input' )[0], 'click', function( e, el ) {
		
		if( this.checked == true ) {

			$( 'delivery_property_name_or_number' ).value	= $( 'billing_property_name_or_number' ).value;
			$( 'delivery_street_address' ).value	= $( 'billing_street_address' ).value;
			$( 'delivery_area' ).value				= $( 'billing_area' ).value;
			$( 'delivery_city' ).value				= $( 'billing_city' ).value;
			$( 'delivery_postcode' ).value			= $( 'billing_postcode' ).value;
			$( 'delivery_state' ).value				= $( 'billing_state' ).value;
			$( 'delivery_country' ).value			= $( 'billing_country' ).value;
		}
	});
	
	var defaultCostState = readCookie( cookieName );

	if( defaultCostState != null ) {
		if( defaultCostState == "inc" ) {
			pricesStatus = "inc";
		} else if( defaultCostState == "ex" ) {
			pricesStatus = "ex";
		}
	} else {
		pricesStatus = "inc";
	}
	
	switchPricesVat(false);

	Event.observe( $( 'cc_type' ), 'change', function() {

		cc_handle_display( this.value );
	});

	if( cc_handle_display_ !== false ) {
		cc_handle_display( cc_handle_display_ );
	}
});

function cc_handle_display( o ) {
	
	if( o != '-1' ) {
		$( 'lbl_cc_n' ).style.display = 'block';
	}
	
	switch( o ) {
		
		case '0':
		case '1':
			$( 'lbl_cc_ed' ).style.display = 'block';
			$( 'lbl_cc_sn' ).style.display = 'block';
			$( 'lbl_cc_in' ).style.display = 'none';
			$( 'lbl_cc_sd' ).style.display = 'none';
		break;

		case '9':
			$( 'lbl_cc_sd' ).style.display = 'block';
			$( 'lbl_cc_ed' ).style.display = 'block';
			$( 'lbl_cc_sn' ).style.display = 'block';
			$( 'lbl_cc_in' ).style.display = 'block';
		break;
	}
}

function changePriceVatText( f ) {
	if( pricesStatus == "ex" ) {
		f.innerHTML = "Show ex-VAT";
	} else if( pricesStatus == "inc" ) {
		f.innerHTML = "Show inc-VAT";
	}
}

function switchPricesVat(setCookie) {
	if( pricesStatus == "inc" ) {
		hidePricesExVat();
		showPricesIncVat();
		pricesStatus = "ex";
		if( setCookie != false ) createCookie( cookieName, "inc", cookieDays );
	} else if (pricesStatus == "ex" ) {
		hidePricesIncVat();
		showPricesExVat();
		pricesStatus = "inc";
		if( setCookie != false ) createCookie( cookieName, "ex", cookieDays );
	}
}

function showPricesIncVat() {
	$$( ".inc" ).each( function( el ) {
		el.style.display = "block";
	});
}

function hidePricesIncVat() {
	$$( ".inc" ).each( function( el ) {
		el.style.display = "none";
	});
};

function showPricesExVat() {
	$$( ".ex" ).each( function( el ) {
		el.style.display = "block";
	});
}

function hidePricesExVat() {
	$$( ".ex" ).each( function( el ) {
		el.style.display = "none";
	});
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

// Alias for get for faster access
function get( el ) {
	return document.getElementById( el );
}

function currencies_format( price ) {
	return '&pound;' + price;
}

function check_scheduled(a) {
	try
	{
		get( 'input_radio_scheduled' ).checked = true;
		get( 'd_type' ).value = 1;
		var date = get_selected_date();
		// Is Saturday?
		if( date.getDay() == 2 ) {
			set_saturday_delivery();
		}
	}
	catch (ex){}
}

function check_quick() {
	try
	{
		get( 'input_radio_quick' ).checked = true;
		get( 'd_type' ).value = 0;
		get( 'd_date' ).value = get( 'd_date_default' ).value;
		get( 'd_date_view' ).innerHTML = get( 'd_date_default' ).value;
	}
	catch (ex){}
}

function get_selected_date() {
	var month = get( 'choose_delivery_speed_month' );
	var day   = get( 'choose_delivery_speed_day' );
	var year  = get( 'choose_delivery_speed_year' );

	var _month = correct_month( month );
	var _day   = correct_day( day );
	
	return new Date( year.value, _month.value-1, _day.value );
}

function correct_date(f) {

	// Get fields
	var month = get( 'choose_delivery_speed_month' );
	var day   = get( 'choose_delivery_speed_day' );
	var year  = get( 'choose_delivery_speed_year' );

	var _month = correct_month( month );
	var _day   = correct_day( day );

	if( is_saturday( new Date( year.value, _month.value-1, _day.value ) ) ) {
		mark_saturday_delivery();
		disable_delivery_upgrade();
		change_delivery_upgrade( get( 'scheduled_delivery_upgrade' ) );
	} else {
		enable_delivery_upgrade();

		if( f !== true ) {
			remove_delivery_upgrade();
		} else {
			var d = get( 'scheduled_delivery_upgrade' );
			d.value = "0";
			set_upgrade_cost( "No. Thanks.", 0 );
			set_total_price();
		}
	}
	
	set_delivery_date_view( new Date( year.value, _month.value, _day.value ) );

}

function is_saturday( date ) {
	if( date.getDay() == 6 ) {
		return true;
	}
	return false;
}

function enable_delivery_upgrade() {
	var d = get( 'scheduled_delivery_upgrade' );
	d.disabled = false;
}

function disable_delivery_upgrade() {
	var d = get( 'scheduled_delivery_upgrade' );
	d.disabled = true;
}

function mark_saturday_delivery() {
	var d = get( 'scheduled_delivery_upgrade' );
	d.value = 'sd';
}

function correct_month( month ) {
	var date = new Date();
	if( month.value-1 < date.getMonth() ) {
		alert( 'You can\'t use this month' );
		month.value = date.getMonth()+1;
	}
	return month;
}

function correct_day( day ) {
	var month = get( 'choose_delivery_speed_month' );
	//alert( next_delivery_date.getDate() + ' ' + day.value );
	if( day.value < next_delivery_date.getDate() && (month.value-1) <= next_delivery_date.getMonth() ) {
		alert( 'You can\'t use this day' );
		day.value = next_delivery_date.getDate();
	}
	return day;
}
 
var Fortissimo = {
}

Fortissimo.AddressBook = {
	checkRadio : function( row ) {
		var input = row.getElementsByTagName( 'input' )[0];
		input.checked = true;
	}
}

var Slider = {
	ulId : '',
	lis : new Array(),
	hoverClassName : 'hover',
	movedUpClassName : 'movedUp',
	offsetPixels : 100,
	activeLi : new Object,
	activePastLi : new Object,
	intervals : new Array(),
	defaultTopOffsets : new Array(),
	init : function( ulId ) {
		try
		{
			Slider.setUlId( ulId );
			var ul = $( ulId );
			ul.style.position = 'relative';
			var lis = ul.getElementsByTagName( 'li' );
			Slider.setLis( lis );
			for( var i = 0; i < lis.length; ++i ) {
				var topOffset = i * 67;
				// Hack
				//if( ( i + 1 ) == lis.length ) {
				//	topOffset = i * 65;
				//}
				this.defaultTopOffsets[i] = topOffset;
				$( lis[i] ).setStyle({ position : 'absolute', top : topOffset + 'px', zIndex : lis.length - i });
				Event.observe( lis[i], 'mouseover', function() {
					Slider.activePastLi = Slider.activeLi;
					Slider.activeLi = this;
					if( Slider.activeLi == Slider.activePastLi ) {
						return;
					}
					if( Slider.activeUnderPastActive() ) {
						Slider.moveLisUp();
					} else {
						Slider.moveLisDown();
					}
					Slider.applyhoverClassName();
				});
			}
			Slider.activeLi = Slider.activePastLi = lis[0];
			Slider.applyhoverClassName( Slider.activeLi );
		}
		catch ( ex )
		{
		}
	},
	activeUnderPastActive : function( ) {
		var lis = this.getLis();
		for( var i = 0; i < lis.length; ++i ) {
			if( lis[i] == this.activePastLi ) {
				return true;
			}

			if( lis[i] == this.activeLi ) {
				return false;
			}
		}
	},
	
	moveLiDown : function( liIndex ) {
		var li = this.getLis()[liIndex];
		var topOffset = parseInt( $( li ).getStyle( 'top' ) ) + 20;
		$( li ).setStyle({ top : topOffset + 'px' });
		if( topOffset >= this.defaultTopOffsets[ liIndex ] ) {
			clearInterval( this.intervals[ liIndex] );
			this.intervals[ liIndex ] = null;
		}

	},
	moveLiUp : function( liIndex ) {
		var li = this.getLis()[liIndex];
		var topOffset = parseInt( $( li ).getStyle( 'top' ) ) - 20;
		$( li ).setStyle({ top : topOffset + 'px' });
		if( topOffset + this.offsetPixels <= this.defaultTopOffsets[ liIndex ] ) {
			clearInterval( this.intervals[ liIndex] );
			this.intervals[ liIndex ] = null;
		}

	},
	moveLisDown : function() {
		var lis = this.getLis();
		var moveStart = false;
		for( var i = 0; i < lis.length; ++i ) {

			if( this.intervals[ i ] != null )
				return;

			var li = lis[i];
			if( li == this.activePastLi )
				break;

			if( li == this.activeLi ) {
				moveStart = true;
			}

			if( moveStart == true ) {
				if( $( li ).hasClassName( this.movedUpClassName ) ) {
					if( this.intervals[i] == null ) {
						$( li ).removeClassName( this.movedUpClassName );
						//$( li ).setStyle({ top : parseInt( $( li ).getStyle( 'top' ) ) + this.offsetPixels + 'px' });
						this.intervals[i] = setInterval( 'Slider.moveLiDown('+i+')', 50 );
					}
				}
			}
		}
	},
	moveLisUp : function( li ) {
		var lis = this.getLis();
		for( var i = 0; i < lis.length; ++i ) {

			if( this.intervals[ i ] != null )
				return;

			var li = lis[i];

			if( li == this.activeLi )
				break;

			if( !$( li ).hasClassName( this.movedUpClassName ) ) {
				if( this.intervals[i] == null ) {
					$( li ).addClassName( this.movedUpClassName );
					//$( li ).setStyle({ top : parseInt( $( li ).getStyle( 'top' ) ) - this.offsetPixels + 'px' });
					this.intervals[i] = setInterval( 'Slider.moveLiUp(' + i + ' )', 50 );
				}
			}
		}
	},
	applyhoverClassName : function( el ) {
		$( this.activePastLi ).removeClassName( Slider.hoverClassName );
		$( this.activeLi ).addClassName( Slider.hoverClassName ); 
	},
	setLis : function( lis ) {
		this.lis = lis;
	},
	getLis : function() {
		return this.lis;
	},
	setUlId : function( ulId ) {
		this.ulId = ulId;
	},
	getUlId : function() {
		return this.ulId;
	}
}


var reviews = new Array();
var activeReviewIndex = 0;
function loop() {
	var text = reviews[ activeReviewIndex ].text;
	var title = reviews[ activeReviewIndex ].title;
	var author_name = reviews[ activeReviewIndex ].author_name;
	var date = reviews[ activeReviewIndex ].date;

	if( ( activeReviewIndex + 1 ) == reviews.length ) {
		activeReviewIndex = 0;
	} else {
		activeReviewIndex++;
	}
	try
	{
		$$( '#reviews_box p')[0].innerHTML = '"' + text + '"<br /><strong>' + date + '</strong>';
		$$( '#reviews_box .author_review_title' )[0].innerHTML = author_name + " Wrote<strong> " + title + "</strong>";
	}
	catch (ex){}
}

var AddReview = {
	shown : false,
	switchView : function() {
		var handle = $( 'add_your_review_form' );
		if( this.shown ) {
			new Effect.BlindUp( handle );
			this.shown = false;
		} else {
			new Effect.BlindDown( handle );
			this.shown = true;
		}
	},
	post : function() {
		var title = $('review_title').value;
		var description = $('review_description').value;
		var author = parseInt( $('review_author').value );
		var author_name = $('review_author_name').value;
		var date = $('review_date').value;
		var product_id = parseInt( $('product_id').value );
		var product_link = escape( $('product_link').value );

		if( title != '' && description != '' ) {

			new Ajax.Request( '/pub/ajax/Ajax.AddReview.php', {
				method : 'post',
				parameters : { review_title : title, review_description : description, review_author : author, product_id : product_id, product_link : product_link },
				onSuccess : function( response ) {
					
					if( response.responseText == 'success' ) {
						var reviewMessageHTML = '<div class="review_message"><div class="top"><div class="lc"><div class="rc"></div></div></div><div class="message"><h1>' + title + '</h1><h3>Review by ' + author_name + ' | Date: ' + date + '</h3><p>' + description.replace( /\n/g, '<br />' ) + '</p></div></div>';
						var reviews = $('reviews_listing');
						// Get inner HTML
						var reviewsHTML = reviews.innerHTML;
						// Prepend current review
						reviewsHTML = reviewMessageHTML + reviewsHTML;
						// Assign it ...
						reviews.innerHTML = reviewsHTML;
						
						AddReview.shown = true;
						AddReview.switchView();
					} else {
						alert( response.responseText );
						alert( 'There is some error' );
					}
				}
			});

		} else {

			alert( 'Please enter valid data' );

		}

	},
	highlight : function( el ) {
		$( el ).addClassName( 'hover' );
	},
	lowlight : function( el ) {
		$( el ).removeClassName( 'hover' );
	},
	addHoverClass : function( el ) {
		var label = el.parentNode;
		$( label ).addClassName( 'hover' );
	},
	removeHoverClass : function( el ) {
		var label = el.parentNode;
		$( label ).removeClassName( 'hover' );
	}
}

var ProductTabs = {
	holder : new Object(),
	defaultActiveTab : 'overview',
	overview : function() {
		$( this.holder ).innerHTML = $( 'tabs_content_overview' ).innerHTML;
	},
	reviews : function() {
		$( this.holder ).innerHTML = $( 'tabs_content_reviews' ).innerHTML;
	},
	specifications : function() {
		$( this.holder ).innerHTML = $( 'tabs_content_specifications' ).innerHTML;
	},
	essentialextras : function() {
		$( this.holder ).innerHTML = $( 'tabs_content_ee' ).innerHTML;
	},
	gallery : function() {
		$( this.holder ).innerHTML = $( 'tabs_content_gallery' ).innerHTML;
	},
	init : function() {
		Event.observe( window, 'load', function() {
			try
			{
				ProductTabs.holder = $( 'product_body' );
				$( ProductTabs.holder ).addClassName( ProductTabs.defaultActiveTab );
				$( 'tabs_' + ProductTabs.defaultActiveTab ).addClassName( 'active' );
				eval( 'ProductTabs.' + ProductTabs.defaultActiveTab + '();' );
			}
			catch ( ex )
			{
			}
			
		});
	}
}

ProductTabs.init();
var showReviewsBox = false;
Event.observe( window, 'load', function() {

	Slider.init( 'our_community_ul' );

	var showReviewsBox = false;
	
	if( showReviewsBox == true ) {
		new Ajax.Request('/pub/ajax/Ajax.GetReviews.php', {
		  method: 'get',
		  onSuccess: function(transport) {
		   try
		   {
			eval( transport.responseText );
		   }
		   catch (ex)
		   {
			   alert( ex );
		   }
		   
		   for( var i = 0; i < result.length; ++i ) {
			   reviews[i] = { "text" : unescape( result[i].text ), "title" : result[i].title, "author_name" : result[i].author_name, "date" : result[i].date };
		   }
			
		   loop();
		   setInterval( 'loop()', 10000 );
		  }
		});
	}

	try
	{
		var activeProductTab = new Object();
		// Default active product tabs is first one
		activeProductTab = $( 'tabs_' + ProductTabs.defaultActiveTab );

		// Add mouseover statement
		$$( '#product_tabs li').each( function( e ) {
			Event.observe( e, 'click', function() {
				
				try
				{
					if( disable_ee == true && $( e ).getAttribute( 'id' ) == 'tabs_essentialextras' ) {
						return true;
					}
				}
				catch (ex)
				{
				}

				// Remove active class
				$( activeProductTab ).removeClassName( 'active' );

				// Get inner html ( will use it to build function );
				var innerHTML = this.getElementsByTagName( 'a' )[0].innerHTML.toLowerCase().replace( /&nbsp;/g, '' );

				$( ProductTabs.holder ).innerHTML = "";

				try
				{
					eval( 'ProductTabs.' + innerHTML + '();' );
				}
				catch (ex)
				{
				}
				
				// Set this as active product tab
				activeProductTab = this;

				$( ProductTabs.holder ).className = innerHTML;
				//$( ProductTabs.holder ).innerHTML = "";

			});

			Event.observe( e, 'mouseover', function() {

				$( activeProductTab ).removeClassName( 'active' );

				// Set active state to this tab
				$( this ).addClassName( 'active' );
				
				// Null holder
				$( ProductTabs.holder ).setStyle({ backgroundImage : 'none', backgroundColor : '#FFFFFF', height : 'auto' });

			});

			Event.observe( e, 'mouseout', function() {
				if( this != activeProductTab ) {
					$( this ).removeClassName( 'active' );
				}
				$( activeProductTab ).addClassName( 'active' );
			});

		});
	}
	catch (ex){}

});

document.onmousemove = mouseMove;
var mousePos = null;
function mouseMove(ev){
	ev           = ev || window.event;
	mousePos = mouseCoords(ev);
}

function mouseCoords(ev){
	if(ev.pageX || ev.pageY){
		return {x:ev.pageX, y:ev.pageY};
	}
	return {
		x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	};
}