(function($) {

	$.fn.starRating = function(){
		var element = $(this);
		var fieldName = element.attr('title');
		$(this).find('li').click(function(){
			var value = $(this).attr('value');
			element.find('li:lt('+value+')').addClass('active');
			//$(this).addClass('active');
			$('input[name='+fieldName+']').val(value);
			return false;
		});
		$(this).find('li').mouseover(function(){
			var value = $(this).attr('value');
			element.find('li').removeClass('active');
			element.find('li:lt('+value+')').addClass('active');
		});
		$(this).mouseout(function(){
			element.find('li').removeClass('active');
			element.find('li:lt('+$('input[name='+fieldName+']').val()+')').addClass('active');
		});
	};

	$.fn.formRequest = function(){
		var form = $(this);
		var success = $('.success',this);		
		var data = form.serialize();
		var onlyData = $('input[name=onlyData]',this).val();
		if(onlyData!=undefined && onlyData!=''){
			data = onlyData;
		}

		$.ajax({
			url : $(this).attr('action'),
			data: data,
			type : $(this).attr('method'),
			success: function(){				
				success.show();				
				form.get(0).reset();
			}
		});
	}
	
})(jQuery);

var xhr = null;

$(document).ready(function(){

	if($.browser.msie){
		$('label.required').each(function(){
			this.innerHTML = this.innerHTML+'<span class="redstar"> * </span>';
		});
	}

	$.alerts.overlayOpacity = '0.3';
	$.alerts.overlayColor = '#666666';

	$("a.popTip").fancybox();
	$('ul.sf-menu').superfish();

	/* star rating */
	$('ul.starRating').starRating();
	
	$("#search_input").click(function(){
		$(this).val("");
	});

	$("#writeReviewLink").click(function(){
		$('#writeReview').slideToggle();
		return false;
	});
	
	/*TABS*/
	$('.tabs div.nav').find('ul li a').removeClass('current');
	$('.tabs div.content').find('div.tab').removeClass('active');
	$('.tabs div.nav ul li:first a').addClass('current');
	$('.tabs div.content div.tab:first').addClass('active');
	$('.tabs').find('div.nav ul li a').click(function(){
		if($(this).attr('id')!=''){
			$('.tabs').find('div.nav ul li a').removeClass('current');
			$(this).addClass('current');
			$('.tabs div.content').find('div.tab').css('display','none');
			$('.tabs div.content').find('div.tab').removeClass('active');
			$('.tabs div.content').find('div.tab.'+$(this).attr('id')+'').css('display','block');
			$('.tabs div.content').find('div.tab.'+$(this).attr('id')+'').addClass('active');
		}
		return false;
	});

	/*ATTRIBUTES*/
	if($('.categories_list').length > 0){
		$('.attChildOpen').click(function(){
			if( $('.'+this.id).is(":visible")){
				$('.'+this.id).slideUp();
				$('#'+this.id).removeClass('open');
			} else {
				$('.'+this.id).slideDown();
				$('#'+this.id).addClass('open');
			}
			return false;
		});
	}

	$('#openTerms').fancybox({
		'hideOnContentClick' : true,
		'autoScale' : true,
		'autoDimensions' : true
	});

	/** BOOKMARKS **/
	$("#favoList").change(function() {
		if ($(this).val() > 0) {
			location.href="/productbookmark/view/"+$(this).val();
		}
	});

	$("#deleteBookmarkList").click(function() {
		jConfirm('Alles löschen?', 'Achtung!', function(result) {
			if(result){
				var uri="/productbookmark/deleteList/"+$("#favoList").val();
				var data = "";
				$.ajax({
					type: 'post',
					url: uri,
					data: data,
					success: function(html){
						location.href="/productbookmark/view";
					}
				});
			}
		});
		
	});

	$('textarea#comment').keyup(function(){
		countCommentChars();
	});

	$("#search_input").attr({
		autocomplete:"off"
	});

	$('.searchType').change(function(){
		if($(this).val() == 'content'){
			$('#navigation_searchform').attr('action', '/contentsearch');
		} else {
			$('#navigation_searchform').attr('action', '/productsearch');
		}
	});

	$('#search_input').keyup(function() {
		/*if($('.searchType:checked').val() == 'product'){
			var surl = '/productsearch';
		} else {
			var surl = '/contentsearch';
		}
		var surl = '/search';
		if($('#search_input').val().length > 2) {
			if(xhr!=null){
				xhr.abort();
			}			
			xhr = $.ajax({
				type: "post",
				url: surl,
				data: {
					query : $('#search_input').val()
					},
				success: function(html){
					$('#quicksearch').html(html);
					$('#quicksearch').show();
				}
			});
		}*/
	});

	$('select#selectSort').change(function(){
		$('form#formSort').submit();
	});


});

function deleteBookmark(intProductId, listId) {
	if(!listId || typeof(listId)=='undefined'){
		var list = $("#favoList").val();
	} else {
		var list = listId;
	}	
	var uri="/productbookmark/delete";
	var data = "intListId="+list+"&intProductId="+intProductId;
	$.post(uri, data, function(response){
		if (response == "true") {
			$("#productRow"+intProductId).remove();
			$("#productRowDelete"+intProductId).remove();			
		}
	});
	return false;
}

/** SEARCH **/
var strAttributeRestriction = "";
function addAttributeRestriction(attributeId, value, query) {
	var action;
	if (strAttributeRestriction.indexOf("["+attributeId+":"+value+"]") != -1) {
		strAttributeRestriction = strAttributeRestriction.replace("["+attributeId+":"+value+"]");
		action = "remove";
	} else {
		strAttributeRestriction = strAttributeRestriction+"["+attributeId+":"+value+"]";
		action = "add";
	}
	var uri="/productsearch/restriction";
	var data = "query="+query+"&attributes="+strAttributeRestriction;
	$.post(uri, data, function(response){
		$("#ajaxProductList").html(response);
		if (action == "add") {
			$("#productAttribute"+attributeId+"_"+value).parent("li").siblings(".hasNoParent").css("visibility", "hidden");
			$("#productAttribute"+attributeId+"_"+value).css("font-weight", "bold");
		} else {
			$("#productAttribute"+attributeId+"_"+value).parent("li").siblings(".hasNoParent").css("visibility", "visible");
			$("#productAttribute"+attributeId+"_"+value).css("font-weight", "normal");
		}
	});
	return false;
}

function getCommentChars(){
	var text = $('#comment').val();
	var count = 1500 - text.length;
	return count;
}

function countCommentChars(){
	var chars = '';
	var count = getCommentChars();
	if(count >=0){
		chars = count;
	} else {
		chars = '<span class="red">' + count + '</span>';
	}
	$('#chars').html(chars);
}

function productReview(){
	var form = $('#productReviewForm');
	var success = $('#reviewSuccess');
	var error = $('#reviewError');
	var data = form.serialize();
	var onlyData = $('input[name=onlyData]',form).val();
	if(onlyData!=undefined && onlyData!=''){
		data = onlyData;
	}
	$.ajax({
		url : form.attr('action'),
		data: data,
		type : form.attr('method'),
		success: function(response){
			if($.isXMLDoc(response)){
				var validate = $(response).find('validate');
				if(validate){
					var errorText = '';
					validate.find('element').each(function(){
						errorText += $(this).attr('name')+": "+$(this).text()+"<br>";
					});
					error.html(errorText);
				}
				error.show();
			} else {
				$('#writeReviewLinkContainer').hide();
				error.hide();
				success.show();
				$('#writeReview').hide();
				form.get(0).reset();
			}
		}
	});
}
