// JavaScript Document

function catalogue_obj() {

	this.ajax = new Object;
	this.ajax.filters = $.extend();

	this.init = function() {
		var catObj = this;
		this.ajax.ajax = 1;
		
		if (fw_IPHONE || fw_IPAD) {
			
		} else {

		

		$('.paging a').click(function() {

			catObj.setDest(this.href);
			
			return false;

		});

		$('.resultCell .qvl').colorbox({href:function() { return this.href+'?ajax=1'; },opacity:0.1,transition:'elastic',width:'840px',height:'740px',current: "Product {current} of {total} on this page",onComplete:function() { catalogue.setInnerQV(); }});

		}


		$('#controlVars').submit(function() {
			// this.ajax.url = "/catalogue/s/?"+this.baseQ+"&offset=0";
				// catalogue.getNewPage();
				return false;
		});
		
	
		this.handleImgErrors();

	}
	
	this.handleImgErrors = function() {
		
		$("img").error(function () {
			 $(this).unbind("error").attr("src", "/pdimage/_missing.jpg");
		});
		
		/*
		$(".qvPage img").error(function () {
			 $(this).unbind("error").attr("src", "/pdimage/_missing.jpg");
		});
		
		$(".resultsPage img").error(function () {
			 $(this).unbind("error").attr("src", "/pdimage/_missing.jpg");
		});
		*/
	}

	this.setDest = function(hr) {
		this.ajax.url = hr;
		jQuery.bbq.pushState(jQuery.deparam.querystring(hr));
		//this.getNewPage();
	}

	this.getNewPage = function() {
		var myObj = this;
		var url = this.ajax.url;
		var myTimeout = setTimeout(this.startLoading,500);
		$.ajax({
			   type: "POST",
			   url: url,
			   data: $('#controlVars').serialize(),
			   success: function(data){
					
					$('#resultsPanel').html(data);
					clearTimeout(myTimeout);
					myObj.init();
			   },
				error: function(jqXHR, textStatus, errorThrown) {
				   clearTimeout(myTimeout);
				   myObj.stopLoading();
				   
			   }
		});
		
		/*
		$.get(url, $('#controlVars').serialize(), function(data) {
			$('#resultsPanel').html(data);
			myObj.init();
		});
		*/
	}
	
	this.startLoading = function() {
		$('.pager .pages').html('<img src="/_assets/images/template/page-loader.gif">');
		$('.resultHolder').css({ opacity: 0.5 });
		
	}
	
	this.stopLoading = function() {
		$('.resultHolder').css({ opacity: 1 });
		$('.pager .pages').html('ERROR');
	}

	this.loadFilter = function(btn, type) {
		var holder = $('#filterPanels');
		var dest = $('#filterList_' + type);
		var btn = $(btn);
		this.currentBtn = btn;
		if (dest.is(":visible")) {
			dest.hide();
			return;
		}
		$('#filterPanels').children().hide();
		if (dest.length) {
			dest.fadeIn();
		} else {
			holder.append('<div style="display:none;" id="filterList_' + type + '"></div>');
			dest = $('#filterList_' + type);
			btn.addClass('loading');

			this.getFilterData(btn, type, dest);
		}
		this.currentDest = $('#filterList_' + type);
	}

	this.getFilterData = function(btn, type, dest) {
		var baseQ = $('#baseQ').val();
		var url = '/ajax/catalogue/filter/?q=' + baseQ + '&type=' + type;
		var dest = dest;
		var btn = btn;
		$.get(url, function(data) {

			dest.html(data);
			this.currentDest = $('#filterList_' + type);
			dest.fadeIn();
			btn.removeClass('loading');

		});

	}

	this.initFilters = function() {
		this.baseQ = $('#baseQ').val();
	}

	this.setFilter = function() {
	}

	this.setFilterStats = function() {

		var total = this.currentDest.find('input').size();
		var checked = this.currentDest.find('input:checked').size();

		switch (this.currentBtn.attr('id')) {

		case "sortFilter":
		case "pagesizeFilter":
			this.currentBtn.find('.info').text(
					this.currentDest.find('input:checked').attr('title'))
					.addClass('factive');
			break;
			
		

		default:
			if (checked == 0) {
				this.currentBtn.find('.info').text('All')
						.removeClass('factive');
			} else {
				this.currentBtn.find('.info').text(checked + ' of ' + total)
						.addClass('factive');
			}
			break;

		case "keywordFilter":
			if ($('#kwfilter').val()) {
				this.currentBtn.find('.info').text(
						$('#kwfilter').val().substring(0, 20)).addClass(
						'factive');
			} else {
				this.currentBtn.find('.info').text('All')
						.removeClass('factive');
			}
			break;

		}

	}

	this.applyFilters = function() {
		this.ajax.url = "/catalogue/s/?" + this.baseQ + "&offset=0";
		
		this.getNewPage();
		this.setFilterStats();
		if (this.currentDest) {
			this.currentDest.fadeOut();
		}
	}

	this.clearMyFilters = function(btn) {
		switch ($(btn).attr('title')) {

		default:
			$(btn).closest(".filterList").find('input').attr('checked', false);
			break;

		case "kwfilter":
			$('#kwfilter').val('');
			break;
		}

		this.setFilter();
		this.applyFilters();
	}
	
	this.closeMyFilters = function(btn) {
		if (this.currentDest) {
			this.currentDest.fadeOut();
		}
	}
	
	this.setInnerQV = function() {
		$('.qvPage .innerqvl').click(function(){ catalogue.reloadQV(this.href.replace("/catalogue","/ajax/catalogue")); return false;   });
		this.handleImgErrors();
	}
	
	this.reloadQV = function(url) {
		
		$.get(url,function(data) {
			$('#cboxLoadedContent').html(data).scrollTop(0);
			catalogue.setInnerQV();
		});
		
	}

	this.getVC = function(prog) {
		
		var url = "/gvc.php"+"?names="+escape(prog);
		
		$.post(url,{getMe:'yes'},function(data) {
			if (data !='') { 
			$('#vcodes').html('<a name="vcodes"></a>'+data);
			 $('#price').append(' <a href="#vcodes" class="vcl">Also See Discount Codes</a>');
			} else {
				 $('#price').append(' <span class="vcl">No Current Discount Codes</span>');
			}
		});
		
	}
	
	

}

function moreInfo() {
	window.open($('#mainLink').attr('href'));
}

var catalogue = new catalogue_obj();
$().ready(function() {
	
	$(window).bind( 'hashchange', function( event ) {  	
		var hash_str = $.param.fragment();
		var loc = new String(location);
		catalogue.ajax.url = jQuery.param.querystring (loc,hash_str)
		catalogue.getNewPage();
	});
	catalogue.init();
});

