var tradebox = {
	
	sageVersions : {
		 'nosage' : 'N/A'
	   	,'startup': 'Sage Startup Edition'
	    ,'50'     : 'Sage 50 Edition'
	    ,'200'    : 'Sage 200 Edition'	
	}
	
	, noSubmit : function (e) {
		e.preventDefault();
	}
	
	, getVoucherCode : function () {
		var voucher = $('#voucher').val();
		if('' === voucher) {
			voucher = "NO";
		}
		return voucher.toUpperCase();
	}
	
	, updateVersionsData : function (urlname) {
		
		$.ajax({
			  type     : 'get'
			, dataType : 'json'
			, beforeSend   : function() {
				$('#fm-buy-options select').attr('disabled','disabled');
			}
		    , success : function (response,textStatus) {
				var newOptionsHTML = '';
				for(i in response) {

					if(null === response[i].title || '' === response[i].title) {
						newOptionsHTML += '<option value='+response[i].urlname+'>'+tradebox.sageVersions[response[i].sage]+'</option>'+"\r\n";
					} else {
						newOptionsHTML += '<option value='+response[i].urlname+'>'+response[i].title+'</option>'+"\r\n";
					}
					
				}
				$('#version').html(newOptionsHTML);
				if(1 == $('#version option').length) {
					$('#version').attr('disabled','disabled');
				}
				tradebox.updateChannelsData(urlname,$('#version').val());
			} 
			, error : function (xhr,textStatus,errorThrown) {
				var msg = (eval('(' + xhr.responseText + ')'));
				$('#fm-buy-options h3.oops').remove();			
				$('#fm-buy-options p#price').html('');
				$('#buy-forms').append('<div class="help" id="messages"><h3 class="oops">There was a problem with your request: (' 
												   + msg.message 
												   + '). Please <a href="mailto:info@tradebox.uk.com">let us know</a> about this error.</h3></div>');
			}
			, complete : function () {

			}
			, url      : '/products/' + urlname + '/versions/'
		});		
	}
	
	, updateChannelsData : function (product,productSage) {
		$.ajax({
			  type     : 'get'
			, dataType : 'json'
			, beforeSend   : function() {
				$('#fm-buy-options select').attr('disabled','disabled');
			}
		    , success : function (response,textStatus) {
				var newChannelsHTML = '';
				for(i in response) {
					newChannelsHTML += '<option value='+response[i].urlname+'>'+response[i].channels+'</option>'+"\r\n";
				}
				$('#channels').html(newChannelsHTML);
				if(1 == $('#channels option').length) {
					$('#channels').attr('disabled','disabled');
				}
				var voucher = tradebox.getVoucherCode();
				tradebox.updateCost(product,productSage,$('#channels').val(),voucher);
			} 
			, error : function (xhr,textStatus,errorThrown) {
				var msg = (eval('(' + xhr.responseText + ')'));
				$('#fm-buy-options h3.oops').remove();			
				$('#fm-buy-options p#price').html('');
				$('#buy-forms').append('<div id="messages" class="help"><h3 class="oops">There was a problem with your request: (' 
												   + msg.message 
												   + '). Please <a href="mailto:info@tradebox.uk.com">let us know</a> about this error.</h3></div>');
			}
			, complete : function () {
				$('#fm-buy-options select').each(function(e) {
					if(1 !== this.length) {
						$(this).attr('disabled','');
					}
				});
			}
			, url      : '/products/' + product + '/' + productSage + '/channels/'
		});		
	}
	
	, updateCost : function (product,productSage,channels,voucher) {
		
		$('#fm-google-buy').remove();
		$('#messages').remove();
		
		$.ajax({
			  type     : 'get'
			, dataType : 'json'
		    , success : function (response,textStatus) {
			
				$('div#messages').remove();
				$('#licensing span').html('');
				$('#licensing').css('display','none');
				if(response.buyable && response.cost) {
					$('#price').html('£' + (response.cost));
					if('0.00' != response.licence) {
						$('#licensing #renewal').html(response.licence);
						$('#licensing #purchase').html(response.cost);						
						$('#licensing').css('display','block');
					} else {
						$('#licensing #renewal').html('N/A');						
					}
					if(response.buyButton) {
						$('#fm-buy-options').after(response.buyButton);
					}
					if(response.voucher) {
						if('success' == response.voucher.status) {
							$('#buy-forms').append('<div class="help" id="messages"><h3 class="success">Voucher code accepted for ' + response.voucher.discount + '% off</h3></div>');
						} else {                         
							$('#buy-forms').append('<div class="help" id="messages"><h3 class="oops">Voucher code not accepted</h3></div>');							
						}
					}
				} else if (!response.buyable) {
					if(response.buyErrMsg != '') {
						$('#buy-forms').append('<div id="messages" class="help"><h3 class="oops">' + response.buyErrMsg + '</h3></div>');	
					}
					if(response.cost && response.cost != '0.00') {
						$('#price').html('£' + (response.cost));
					} else {
						$('#price').html('');
					}
					if('0.00' != response.licence) {
						$('#licensing #renewal').html(response.licence);
						$('#licensing #purchase').html(response.cost);
						$('#licensing').css('display','block');
					} else {
						$('#licensing #renewal').html('N/A');
					}		
				}
			} 
			, error : function (xhr,textStatus,errorThrown) {
				var msg = (eval('(' + xhr.responseText + ')'));
				$('#messages').remove();			
				$('#fm-buy-options p#price').html('');
				$('#buy-forms').append('<div id="messages" class="help"><h3 class="oops">There was a problem with your request: (' 
												   + msg.message 
												   + '). Please <a href="mailto:info@tradebox.uk.com">let us know</a> about this error.</h3></div>');						
			}
			, complete : function () {
				$('#fm-buy-options select').each(function(e) {
					if(1 !== this.length) {
						$(this).attr('disabled','');
					}
				});
			}
			, url      : '/products/' + product + '/' + productSage + '/' + channels + '/' + voucher + '/cost'
		});		
	}
	

};

$(function(){
	
	//email subs. box
	$('#email-subscribe')
	  .focus(function(e){
		if('Email address' === $(e.currentTarget).val()) {
			$(e.currentTarget).val('');
		}
	}).blur(function(e){
		if('' === $(e.currentTarget).val()) {
			$(e.currentTarget).val('Email address' );
		}
	});

        $('#name').focus(function(e){
		if('Name' === $(e.currentTarget).val()) {
			$(e.currentTarget).val('');
		}
	}).blur(function(e){
		if('' === $(e.currentTarget).val()) {
			$(e.currentTarget).val('Name' );
		}
	});

        $('#company_name').focus(function(e){
		if('Company Name' === $(e.currentTarget).val()) {
			$(e.currentTarget).val('');
		}
	}).blur(function(e){
		if('' === $(e.currentTarget).val()) {
			$(e.currentTarget).val('Company Name' );
		}
	});

        $('#address').focus(function(e){
		if('Telephone Number' === $(e.currentTarget).val()) {
			$(e.currentTarget).val('');
		}
	}).blur(function(e){
		if('' === $(e.currentTarget).val()) {
			$(e.currentTarget).val('Telephone Number' );
		}
	});

	$('#subscribe-response').val('json');
		
	//'call me' box
	$('#callback-response').val('json');
	
	$("#callback").submit(function(e){
		e.preventDefault();
		$.ajax({
			  type     : 'post'
			, dataType : 'json'
			, data     : { product:$('[name=product]').val()
						 , response:$('[name=response]').val()
						 , phone:$('[name=phone]').val()
						 }
		    , success : function (response,textStatus) {
				$('#callback h3.oops').remove();
				$('#callback h3.success').remove();				
				$('#callback').prepend('<h3 class="success">' + response.message + '</h3>');
			} 
			, error : function (xhr,textStatus,errorThrown) {
				$('#callback h3.oops').remove();
				$('#callback h3.success').remove();				
				var msg = (eval('(' + xhr.responseText + ')'));
				$('#callback').prepend('<h3 class="oops">' + msg.message + '</h3>');				
			}
			, url      : '/callme/'
		});
	});

        /*
	$('#fm-subscribe').submit(function(e) {
		e.preventDefault();
		$.ajax({
			  type     : 'post'
			, dataType : 'json'
			, data     : {   email_subscribe : $('#email-subscribe').val()
			               , response        : $('#subscribe-response').val()
			             }
		    , success : function (response,textStatus) {
				$('#fm-subscribe h3.oops').remove();
				$('#fm-subscribe h3.success').remove();				
				$('#fm-subscribe').prepend('<h3 class="success">' + response.message + '</h3>');
			} 
			, error : function (xhr,textStatus,errorThrown) {
				var msg = (eval('(' + xhr.responseText + ')'));
				$('#fm-subscribe').prepend('<h3 class="oops">' + msg.message + '</h3>');				
			}
			, url      : '/subscribe/'
		});		
	});
	*/
	//generic buy form.
	$('#update-costs').remove();
	$('div#messages').remove();
	if('finman-startup' == $('#version').val()) {
		$('#version').val('finman-50');		//so that on the 'generic' page you don't see a confusing "can't buy" message
	}	
	
	$('#product').change(function (e) {	
		var product     = $('#product').val();
		tradebox.updateVersionsData(product);
	});
	
	$('#version').change(function (e) {
		var productSage = $(e.target).val();
		var product     = $('#product').val();
		tradebox.updateChannelsData(product,productSage);
	});	
	
	$('#channels').change(function (e) {
		var product     = $('#product').val();		
		var productSage = $('#version').val();		
		var channels = $(e.target).val();		
		var voucher = tradebox.getVoucherCode();
		tradebox.updateCost(product,productSage,channels,voucher);
	});
	
	$('#check-voucher').click(function (e) {
		var product     = $('#product').val();		
		var productSage = $('#version').val();		
		var channels    = $('#channels').val();		
		var voucher     = tradebox.getVoucherCode();		
		tradebox.updateCost(product,productSage,channels,voucher);
	}); 
	
	$('#version').change();	
	
	$(".helptoggle").click(function (e){
		e.preventDefault();
		
		switch(($(e.target).attr('id'))) {
			case 'explain-channels' :
				var helpHeading = 'What are channels?';
				var helpText    = 'Channels are the online sales platforms you wish to import data from. These can be any mixture of eBay, Amazon, Play.com or ecommerce website channels. The number of platforms you use will determine the price of your Tradebox product. Unique eBay IDs are counted as separate channels.';
			break;
			case 'explain-versions' :
				var helpHeading = 'What are versions?';
				var helpText    = 'Finance Manager and Channel Manager are both available to work with various versions of Sage accountancy solutions. The edition of Finance Manager or Channel Manager you buy must correspond to the version of Sage software you run.';
			break;
		}
		
		$('#buy-info').remove();
		if(helpHeading && helpText) {
			$('#buy-forms').append('<div id="buy-info" class="help"><h4>' + helpHeading + '</h4><p>' + helpText + '</p></div>');	
		}		
		
	});


		
});