var thirdparty = false;
var initialized = false;

var tinyclose = '<img src="'+base_url+'/public/images/modal-close.png" alt="Close" id="tinybox-close" onclick="javascript:TINY.box.hide();thirdparty = false;"/>'

// Image Rotator for homepage
var partner_rotate = function() {

	return {
		setup : function() {
			counter = 0;
			hover = false;
			count = $('#partner-rotator .partner:visible').hide().length;
			for(i=0;i<=count;i++) {
				$('#partner-rotator .group_'+(parseInt(i+1)+':first')).fadeIn();
			}
			
			$('#partner-rotator').hover(function(){
				hover = true;
			}, function() {
				hover = false;
			});

			setInterval(this.run, 2000);
		},
		run : function() {
			var group = counter % count+1; 
			if( ! hover ) {
				if( $('#partner-rotator .group_'+group).length > 1 ) {
					var partner = $('#partner-rotator .group_'+group+':visible');
					var hidden = $('#partner-rotator .group_'+group+':hidden:first');
					partner.fadeOut('slow', function() {
						copy = $(this).clone();
						$(this).replaceWith(hidden);
						$('#partner-rotator').append(copy);
						$('#partner-rotator .partner:last').bigTarget({
					    hoverClass: 'over', // CSS class applied to the click zone onHover
					    clickZone : 'div.partner' // jQuery parent selector
					  	});
						hidden.fadeIn('slow');
					});
				}
				counter++;
			}
		}
	};
}();

function silentDrop() {
	alert('error');
	return false;
}

jQuery.fn.labelOver = function(overClass) {
	return this.each(function(){
		var label = jQuery(this);
		var f = label.attr('for');
		if (f) {
			var input = jQuery('#' + f);
			this.hide = function() { label.hide(); };
			this.show = function() { if (input.val() == '') label.show(); };
			// handlers
			input.focus(this.hide);
			input.blur(this.show);
		  	label.addClass(overClass).click(function(){ input.focus() });
			if (input.val() != '') this.hide(); 
		}
	})
}

function updateCardList() {
		var data = 'crt_ajax[mode]=update';
		var url = site_url +'account/crtajax';
		
		$.ajax({
			data: data,
			url: url,
			type: 'POST',
			dataType: 'json',
			success: function(json) {
				if(json['status'] == 'success') {
					var cards = json['cards'];
					$('#card-list').html('');
					$('#registered-cards').show();
					for(x in cards) {
						$('#card-list').append('<li>'+ cards[x]['CardNumber']+' <a href="" rel="'+ cards[x]['CardID'] +'" class="crt-delete small-stretch"><span></span>Remove</a></li>');
					}
				} else {
					if(json['message'] == 'No cards found.') {
						setTimeout(function() {
							$('#registered-cards').hide();
						}, 8500);
						$('#card-list').html('');
						$('#crt_by_ajax').val('0');
					}
				}
			}
		});
	}

$(document).ready(function() {
	
	$('#add_crt_now').live('click', function(event) {
		event.preventDefault();
		
		$('#ajax_busy').show();
		
		var data = 'crt_ajax[cardnumber]='+ $('#crt_card_number').val() +'&crt_ajax[mode]=add';
		var url = site_url + 'account/crtajax';
		
		$.ajax({
			data: data,
			url: url,
			type: 'POST',
			dataType: 'json',
			success: function(json) {
				$('#ajax_busy').hide();
				if(json['status'] == 'success') {
					$('#add-crt-ajax-status').html(json['message']).removeClass('error').show();
					$('#crt_card_number').val('');
					$('#crt_by_ajax').val('1');
					updateCardList();
				} else {
					$('#add-crt-ajax-status').html(json['message']).removeClass('error').addClass('error').show();
				}
				setTimeout(function() {
					$('#add-crt-ajax-status').fadeTo(500, 0, function() {
						$(this).fadeTo(0, 1).hide();
					});
				}, 8000);
			}
		});
	});
	
	$('a.crt-delete').live('click', function(event) {
		event.preventDefault();
		
		if(confirm('Are you sure you wish to delete this card?')) {
		
		var data = 'crt_ajax[cardnumber]='+ $(this).attr('rel') +'&crt_ajax[mode]=remove';
		var url = site_url + 'account/crtajax';
		
		$.ajax({
			data: data,
			url: url,
			type: 'POST',
			dataType: 'json',
			success: function(json) {
				if(json['status'] == 'success') {
					$('#delete-crt-ajax-status').html(json['message']).removeClass('error').show();
					updateCardList();
				} else {
					$('#delete-crt-ajax-status').html(json['message']).removeClass('error').addClass('error').show();
				}
				setTimeout(function() {
					$('#delete-crt-ajax-status').fadeTo(500, 0, function() {
						$(this).fadeTo(0, 1).hide();
					});
				}, 8000);
			}
		});
		
		}
	});
	
	// Setup label for urn bank
	$('#urn_bank_code_input label').labelOver('over-apply');

	$('button.small').hover(function() {
		$(this).css('text-decoration', 'underline');
	}, function() {
		$(this).css('text-decoration', 'none');
	});

	// Homepage tabs
	$('.tab .clicker').click(function() {
		$('.content', $(this).next()).slideToggle();
		$('.toggle', $(this).next()).toggleClass('open');
		return false;
	});

	$('.tab .toggle').click(function() {
		$(this).prev('.content').slideToggle();
		$(this).toggleClass('open');
		return false;
	});
	
	// Display tooltip text for search
	$('#nav_search_postcode input').focus(function() {
		$(this).val('');
	}).blur(function() {
		if($(this).val() == '') {
			$(this).val($(this).attr('rel'));
		}
	});
	
	$('#pcsearch_submit').click(function() {
		var pc = $('#_nav_search_postcode');
		if( pc.val() == pc.attr('rel') ) {
			pc.val('');
		}
	});
	
	swfobject.embedSWF(base_url+'public/swf/comp-cta.swf?prizedraw=p3-free-fuel&rev=1809', "comp-cta-flash", "204", "140", "9.0.0", base_url+'public/swf/expressInstall.swf', { }, { wmode: 'transparent' }, { id: "comp-cta-flash", name: "comp-cta-flash" });
	
	if($.browser.msie && ($.browser.version == 6.0)) { var IEtest = false; } 
	else {
		$('form .select').each(function(i) {
	        selectContainer = $(this);
	        selectContainer.removeClass('skinnable-select');
	        selectContainer.addClass('skinned-select');
	        selectContainer.children().before('<div class="select-text">a</div>').each(function() { $(this).prev().text(this.options[0].innerHTML.replace('&amp;', '&')) });
	        var parentTextObj = selectContainer.children().prev();
					// Fix select text update not working in Webkit
					$('select', selectContainer).change(function() { parentTextObj.text($(':selected', this).text().replace('&amp;', '&')); });
					parentTextObj.text($(':selected', this).text().replace('&amp;', '&'));
	   	});
	}

	$('#nav_search_category').change(function() {
		$('#nav_search_sub_category option').not('.all').remove();
		if($(this).val() == '') {
			$('#option_elements_sub_cat option').not('.all').clone().appendTo('#nav_search_sub_category');
		} else {
			$('#option_elements_sub_cat .sub-cat-'+$(this).val()).not('.all').clone().appendTo('#nav_search_sub_category');
		}
		$('#nav_search_sub_category .all').attr("selected", 'selected');
		$('#nav_search_sub_categories .select-text').text($('#nav_search_sub_category :selected').text().replace('&amp;', '&'));
	});

	$('#nav_search_category').each(function() {
		$('#nav_search_sub_category option').not('.all').remove();
		if($(this).val() == '') {
			$('#option_elements_sub_cat option').not('.all').clone().appendTo('#nav_search_sub_category');
		} else {
			$('#option_elements_sub_cat .sub-cat-'+$(this).val()).not('.all').clone().appendTo('#nav_search_sub_category');
		}
		$('#nav_search_sub_categories .select-text').text($('#nav_search_sub_category :selected').text().replace('&amp;', '&'));

	});
	
	$('.newWindow').click(function() {
		window.open($(this).attr('href'), 'new_window');
		return false;
	});
	
	$(".reward_item .title a").bigTarget({
    hoverClass: 'over', // CSS class applied to the click zone onHover
    clickZone : 'li:eq(1)' // jQuery parent selector
  });

	$(".reward_item .view a").bigTarget({
    hoverClass: 'over', // CSS class applied to the click zone onHover
    clickZone : 'ul:eq(0)' // jQuery parent selector
  });

	$("#offers_holder .partner a").bigTarget({
    hoverClass: 'over', // CSS class applied to the click zone onHover
    clickZone : 'div.partner' // jQuery parent selector
  });

	$("#partner-rotator .partner a").bigTarget({
    hoverClass: 'over', // CSS class applied to the click zone onHover
    clickZone : 'div.partner' // jQuery parent selector
  });
	
	$('.my-rewards .offer a').bigTarget({
    hoverClass: 'over', // CSS class applied to the click zone onHover
    clickZone : 'tr' // jQuery parent selector
	});
	
	$('#even-more-rewards a').bigTarget({
		clickZone : 'div#even-more-rewards'
	});
	
	$('form .submit a').click(function() { $(this).prev().click(); return false; });
	
	submitInit();
	labelInit();
	
	var resizeFooter = function() {
		var $footer = $('#footer');
		var footerPosition = $('#footer-wrapper').position();
		var footerHeight = 50;
		var documentHeight = $(document).height();
		var windowHeight = $(window).height();
		var negativeMargin = parseInt($('#footer-wrapper').css('margin-top').slice(1, -2));

		if(windowHeight < documentHeight) { documentHeight = windowHeight; }
		
		var newFooterHeight = (documentHeight - footerPosition.top - $('#grass').height()) + negativeMargin;
		
		if(newFooterHeight < footerHeight) { newFooterHeight = footerHeight; }

		$footer.css('height', newFooterHeight+'px');
	};

	resizeFooter();
	$(window).bind('resize', resizeFooter);
	
	$('#finder-link').click(function() {
		if(confirm('You are now leaving Total Rewards site. Are you sure you wish to continue?')) {
			window.open($(this).attr('href'), 'Finder', 'height=445, width=540, channelmode=no, directories=no, fullscreen=no, location=no, menubar=no, resizable=yes, scrollbars=yes, status=no, titlebar=no, toolbar=no');
		}
		return false;
	});
	
	$('#results-table td').hover(
		function() { $(this).parent().addClass('hover'); },
		function() { $(this).parent().removeClass('hover'); }
	).click(function() {
		location.href = $(this).parent().children(':first').children('a').attr('href');
	});

	$('#filter-by').show();
	if($('#filter-by option[selected]').length) $('#filter-by .select-text').html($('#filter-by option[selected]').html());
	$('#filter-by select').change(function() { location.href = $(this).attr('rel')+'/'+$(this).val(); });
	
	$('a#add_urn_now').click(function() {
		$(this).attr('href', site_url + '/account/register?code=' + $('#urn_bank_code').val());
	});
	
	$('.modal-window, .popup-login, .popup-register, #load-login, #load-register, #comp-register, .terms-button, .book-now, #vouchers-table .print a, #main-terms, #trigger-password, #privacy-policy').modal();

	$('.button-login,.button-register').live('click', function(temp) {
		$('#'+$(this).attr('class').replace('small-stretch button', 'load')).click();
		$('#tinybox-close').click();
		return false;
	});

	$('.lightboxme, #info-description a, #info-right .left a, #congrats a:not(.print_me,.root_window)').live('click', function() {
		thirdparty = true;
		// National Express exception
		if( $(this).attr('href').search("ambassadorselect|nationalexpress|pizzahut|magazinesdirect|purple|europcar|halfords|viagogo|blockbuster|buyagift|bookpeople") != -1 )
		{
			window.open($(this).attr('href'));
		}
		else
		{
			window.onbeforeunload = function() { if(thirdparty == true) { return "This offer is trying to navigate away from total rewards. If you leave this page you may not be able to redeem your offer."; } }
			var doc_width = $(window).width() - 110;
			if(doc_width > 1200) doc_width = 1200;
			TINY.box.show(tinyclose + '<iframe id="external-frame" src="' + $(this).attr('href') + '" height="600" width="'+doc_width+'" frameBorder="0"></iframe>', 0, doc_width, 0, 1 );
		}
	
		if($(this).attr('id') == 'redeem-my-voucher')
		{
			thirdparty = false;
			closeModal();
		}
	
		return false;
	});
	
	$('.info-tip-link')
		.live('mouseover', function() { $(this).next('.info-tip-content').show(); })
		.live('mouseout', function() { $(this).next('.info-tip-content').hide(); })
		.live('click', function() { return false; });

	$('.info-reveal-link')
		.live('click', function() { 
			$('#'+$(this).attr('rel')).slideDown('fast');
			return false;
		});

	$('.info-content-link')
		.live('mouseover', function() { $(this).next('.info-content-container').show(); })
		.live('mouseout', function() { $(this).next('.info-content-container').hide(); })
		.live('click', function() { return false; });
		
	// FAQs
	$('#faqs-left .answer, #faqs-right .answer').slideUp(0, resizeFooter);
	$('#faqs-left h5, #faqs-right h5').removeClass('selected').click(function() {
		var $button = $(this);
		var $selected = $('#faqs-left h5.selected, #faqs-right h5.selected');
		
		if(!$button.hasClass('selected'))
		{
			if($button.hasClass('double')) { $button.css('background-position', '0 -42px'); }
			else { $button.css('background-position', '0 -28px'); }
			
			$button.addClass('selected').parent().next().slideDown();
		}
		
		$selected.css('background-position', '0 0').removeClass('selected').parent().next().slideUp();
	});

	partner_rotate.setup();

	$('.my-rewards').pageTable();

	$('.popup-terms').live('click', function() {
		$.get($(this).attr('href'), function(response) {
			TINY.box.show(tinyclose + response, 0,660,0,1);
		});
		return false;
	});

	$('#main-terms-content a').live('click', function() {
		window.open($(this).attr('href'));
		return false;
	});

	$('#r_email').live('change', function(event) {
		$.post(site_url+"account/ajax_validate_email", { email: $(this).val() }, function(data) {
			if(data == 'validated') {
				$('#r_email').parent().removeClass('error');
			} else {
				$('#r_email').parent().addClass('error');
			}
		})
	});
	
	$('.open-tinybox').modal();
	// $('.open-tinybox').click(function(){
	// 	// TINY.box.show($(this).attr('href'), 1,660,0,1 );
	// 	return false;
	// });
	
	$('#urn_bank_code,#r_promotional_code,#re_promotional_code,#r_confirm_email').bind('contextmenu', function() { return false; }).bind('paste', function() { return false; });

	$('#urn_bank_code,#r_promotional_code,#re_promotional_code').attr('autocomplete', 'off');

	$('.getByAjax').live('click', function() {
		var u = $(this).attr('href');
		$.get(u, function(data){
			$('#modal-content').empty();
			var c = document.getElementById('modal-content');
			c.innerHTML = data;
			$('#modal-content .javascript').each(function(){
				eval($(this).text());
			});
			labelInit();
			submitInit();
			resizeModal();
		});
		return false;
	});
	
	if($.browser.msie && ($.browser.version == 6.0)) { var IEtest = false; } 
	else {
		$('form .modal-select').each(function(i) {
	        selectContainer = $(this);
	        selectContainer.removeClass('skinnable-select');
	        selectContainer.addClass('skinned-select');
	        selectContainer.children().before('<div class="select-text">a</div>').each(function() { $(this).prev().text(this.options[0].innerHTML.replace('&amp;', '&')) });
	        var parentTextObj = selectContainer.children().prev();
					// Fix select text update not working in Webkit
					$('select', selectContainer).change(function() { parentTextObj.text($(':selected', this).text().replace('&amp;', '&')); });
					parentTextObj.text($(':selected', this).text().replace('&amp;', '&'));
	   	});
	}

});

function labelInit() { 
	$('form .text-input label').labelOver('over-apply');
}
function submitInit() { $('form .submit input').hide().next().css('display', 'block'); }

// Point functions
var points = new function() {
	this.deduct = function(type, amount) {
		var balance = $('#'+type+'-balance span');
		balance.text(parseInt(balance.text())-parseInt(amount));
	};
};

// Simple table pager
(function($) {

	$.fn.pageTable = function(page) {
    // var opts = $.extend({}, $.fn.pageTable.defaults, options);

		var opts = $.fn.pageTable.defaults;

		$(this).each(function() {

			var id = $(this).attr('id');
			var row = 0;
			var page = 0;

			$('tr', $('tbody', this)).each(function() {
				// Sort into pages and assign a class
				if( row % opts.rows == 0 ) {
					page++;
				}
				row++
				$(this).addClass('page'+page);
			});

			$.fn.pageTable.show(id, 1);

			if(page>1) {
				$('#'+id).before('<div class="table-pager"><a href="#" class="prev-'+id+'" rel="1">&lt; prev</a> | <a href="#" class="next-'+id+'" rel="1">next &gt;</a></div>');
			}

			$('a.next-'+id).click(function() {
				var p = parseInt($(this).attr('rel'))+1;
				if($('tr.page'+p, $('#'+$(this).attr('class').replace('next-', '')+' tbody')).length > 0) {
					$.fn.pageTable.show($(this).attr('class').replace('next-', ''), p);
					$(this).attr('rel', p);
				}
				return false;
			});

			$('a.prev-'+id).click(function() {
				var stored_page = $(this).attr('class').replace('prev', 'next');
				var p = parseInt($('.'+stored_page).attr('rel'))-1;
				if($('tr.page'+p, $('#'+$(this).attr('class').replace('prev-', '')+' tbody')).length > 0) {
					$.fn.pageTable.show($(this).attr('class').replace('prev-', ''), p);
					$('.'+stored_page).attr('rel', p);
				}
				return false;
			});

		})
	};

	$.fn.pageTable.show = function(id, page) {

		// Hide all page results
		$('tr', $('#'+id+' tbody')).hide();

		// Show page results
		$('tr.page'+page, $('#'+id+' tbody')).show();
	}

	$.fn.pageTable.defaults = {
		rows : 6
	};

})(jQuery);


// bigTarget.js - A jQuery Plugin
// Version 1.0.1
// Written by Leevi Graham - Technical Director - Newism Web Design & Development
// http://newism.com.au
// Notes: Tooltip code from fitted.js - http://www.trovster.com/lab/plugins/fitted/

// create closure
(function($) {
  // plugin definition
  $.fn.bigTarget = function(options) {
    // build main options before element iteration
    var opts = $.extend({}, $.fn.bigTarget.defaults, options);
    // iterate and reformat each matched element
    return this.each(function() {
      // set the anchor attributes
      var $a = $(this);
      var href = $a.attr('href');
      var title = $a.attr('title');
      // build element specific options
      var o = $.meta ? $.extend({}, opts, $a.data()) : opts;
      // update element styles
      $a.parents(o.clickZone)
        .hover(function() {
          $h = $(this);
          $h.addClass(o.hoverClass);
          if(typeof o.title != 'undefined' && o.title === true && title != '') {
            $h.attr('title',title);
          }
        }, function() {
          
          $h.removeClass(o.hoverClass);
          if(typeof o.title != 'undefined' && o.title === true && title != '') {
            $h.removeAttr('title');
          }
        })
        // click
        .click(function() {
          if(getSelectedText() == "")
          {
            if($a.is('[rel*=external]')){
              window.open(href);
              return false;
            }
            else {
              //$a.click(); $a.trigger('click');
              window.location = href;
            }
          }
        });
    });
  };
  // get selected text
  function getSelectedText(){
    if(window.getSelection){
      return window.getSelection().toString();
    }
    else if(document.getSelection){
      return document.getSelection();
    }
    else if(document.selection){
      return document.selection.createRange().text;
    }
  };
  // plugin defaults
  $.fn.bigTarget.defaults = {
    hoverClass  : 'hover',
    clickZone : 'li:eq(0)',
    title   : true
  };
// end of closure
})(jQuery);

$.getDocHeight = function(){
     var D = document;
     return Math.max(Math.max(D.body.scrollHeight,    D.documentElement.scrollHeight), Math.max(D.body.offsetHeight, D.documentElement.offsetHeight), Math.max(D.body.clientHeight, D.documentElement.clientHeight));
};

// Setup the hover popup
(function($) {
    $.fn.popupOnRollover = function() {
        var t = $(this).attr('rel');
        var target = '#' + t + '-content';
        var wrapperId = t + '-wrapper';
        var wrapper = '#' + wrapperId;
				$(target).addClass('totalPopupContent');
        $(target).wrap('<div class="totalPopupWrapper" id="' + wrapperId + '">');
        $(this).hover(function() {
            $(wrapper).show();
        },
        function() {
            $(wrapper).hide();
        });
        $(wrapper).hide();
    }
})(jQuery);

function initFormStep() {
	labelInit();
	submitInit();
	
	$('.r_method').change(function(){
		if($(this).val() == 'crt')
		{
			$('#form-card-intro').hide();
			$('#form-card-details').show();
			$('#card-voucher-link').hide();
		}
		else
		{
			$('#card-voucher-link').show();
			$('#form-card-details').hide();
		}
	});
	
	if($('input[name=method]:checked').val() == 'crt') {
		$('#card-voucher-link').hide();
		$('#form-card-intro').hide();
	} else {
		$('#form-card-details').hide();
	}
	
	$('#login-button, #forgotten-password').click(function() {
		$('#modal-content').load($(this).attr('href'), resizeModal);
		return false;
	});
	
	$('.newWindow').click(function() {
		window.open($(this).attr('href'), 'new_window');
		return false;
	});
}


