$(document).ready(function(){
	// make the window scroll to initial starting point
	$('html, body').animate({scrollTop: 204}, 250);
	
	// turn off automcompletion for input fields
	$('.autocomplete').attr('autocomplete', 'off');
	
	// autocomplete search_input field
	$('#search_input').keyup(function(key){
		autoComplete(this.value, key.keyCode);							
	});
	
	// make all menu buttons with an anchor tag return false upon click
	$('a[href=#]').click(function(evt){
		return false;										
	});
	
	// make all image show their serie_combine div
	attachMouseOvers();
	
	// load the content according to anchor link if any
	/*
	var location = document.location.toString();
	var path	 = document.location.pathname.toString();
	if(location.match('#')) {
		path = location.split(path+'#')[1];
		pID  = path.split('/')[1];
		a    = path.split('/')[0];
		if($('#body_text').attr('class') == a+'-'+pID && $('#body_text_container').is(':visible')) {
			return false;	
		}
		pageTracker._trackPageview(path);
		$('#body_text').removeClass().addClass(a+'-'+pID);
		var postData = 'pID='+pID+'&a='+a;
		$.post('../php.parsers/load-page.php', postData, function(data, textStatus) {
			$('#body_text_container').slideUp(150, function() {
				$(this).removeAttr("style");
				$('#body_text').removeAttr("style");
				if(textStatus=='success') {
					$('#body_text_container h1').html(data['title']);
					$('#body_text').html(data['body']);
				}
				$('#body_text_container').resizeAndShowMe();
			});
		}, "json");
		return false;
	}
	*/
	
	// make all menu buttons load their corresponding content
	$('#nav li').find('a.page').click(function(evt){
		/*
		if(location.match('#')) {
			location = location.split('#')[0];
		}
		document.location = location+'#'+$(this).attr('href');
		*/
		pID = $(this).attr('href').split('/')[1];
		a = $(this).attr('href').split('/')[0];
		if($('#body_text').attr('class') == a+'-'+pID && $('#body_text_container').is(':visible')) {
			return false;	
		}
		pageTracker._trackPageview($(this).attr('href'));
		$('#body_text').removeClass().addClass(a+'-'+pID);
		var postData = 'pID='+pID+'&a='+a;
		$.post('../php.parsers/load-page.php', postData, function(data, textStatus) {
			$('#body_text_container').slideUp(150, function() {
				$(this).removeAttr("style");
				$('#body_text').removeAttr("style");
				if(textStatus=='success') {
					$('#body_text_container h1').html(data['title']);
					$('#body_text').html(data['body']);
				}
				$('#body_text_container').resizeAndShowMe();
			});
		}, "json");
		return false;
	});
	
	// make all buttons in search_buttons div popup the search window and do some other fancy stuff
	$('#search_buttons li:lt(2)').find('a').click(function(evt){
	//$('#search_buttons li').find('a').click(function(evt){
		$('#search_type').val($(this).attr('class').toLowerCase());
		$('#search_container h2 span').text(', '+$(this).text().toLowerCase()); 
		$('#search_container').slideDown(150, function() { $('#search_input').focus(); } );
			$('#search_input').show();
			$('#search_form .form-submit').show();
			$('#search_options').hide();
			$('#search_options').removeClass('scroll');
			$('#search_input').val('');
			$('#search_input').css('direction', 'ltr');
			
		return false;
	});
	$('#search_buttons li a.themes').click(function(evt){
		$('#search_type').val($(this).attr('class').toLowerCase());
		$('#search_container h2 span').text(', '+$(this).text().toLowerCase());
		$('#search_container').slideDown(150);
		$('#search_input').hide();
		$('#search_form .form-submit').hide();
		$('#search_options').show();
		$('#search_options').addClass('scroll');
		autoComplete(' ', 1);
		return false;
		//
	});
	$('#search_buttons').parent().find('a:first').click(function(evt){
		$('#search_type').val('tags');
		$('#search_container h2 span').text(', ingredient'); 
		$('#search_container').slideDown(150, function() { $('#search_input').focus(); } );
			$('#search_input').show();
			$('#search_form .form-submit').show();
			$('#search_options').hide();
			$('#search_input').val('');
			$('#search_input').css('direction', 'ltr');
			
		return false;
	});
	
	// make all .closer divs close their parent window onclick
	$('.closer').click(function(evt){
		closeWindow(this);
	});
	
	// make all windows close if page clicked outside window
	$(document).click(function(e) {
		if(!$(e.target).isChildOf('.window') && $(e.target).attr('class') != 'window' && $(e.target).width()) {
			$('.window').slideUp(150, function() {
				if($('#lightbox').is(':visible')) {
					setTimeout( function() { 
						$('#lightbox_container').fadeOut(250);
					}, 150); 
				}
			});
		}
	});
	
	// setup infinite scrolling
	$(document).infiniteScroll({
		trigger: 250,
		triggerDelay: 500,
		insertAfter: insertAfter,
		//insertData: function(i) { return getData(i); },
		insertDone: function(i) { $('#insertid'+i).fadeIn(750); attachMouseOvers(); if(window.liHovers) { liHovers(); } }
	});
});

// make all image show their serie_combine div
function attachMouseOvers() {
	$('#content_container .image').mouseover(function() {
		$(this).parents('.serie_container').filter(':first').find('.serie_combine').show();													
	});
	$('#content_container .image').mouseout(function() {
		$(this).parents('.serie_container').filter(':first').find('.serie_combine').hide();													
	});
}

function getData(i) {
	var postData = 'index='+i;
	return $.ajax({
		type: "POST",
		url: "../php.parsers/load-row.php",
		data: postData,
		cache: false,
		async: false,
		dataType: "json"
	}).responseText;
}

function closeWindow(el) {
	$(el).parents('.window').slideUp(150, function() {
		$('#lightbox_container').fadeOut(150);
	});	
}

$.fn.resizeAndShowMe = function(params) {
	$(this).css('visibility', 'hidden');
	$(this).show();
	maxH = $(window).height() - ($(this).offset().top - $(window).scrollTop()) - 20;
	minH = $(this).height() + ($('#body_text')[0].scrollHeight - $('#body_text')[0].offsetHeight);
	height = Math.max(196, Math.min(maxH, minH));
	$(this).height(height);
	$('#body_text').height( height - $('#body_text').position().top - 10);
	if($.browser.msie) {
		while($('#body_text').height() > $('#body_text')[0].scrollHeight && $('#body_text').height() > 196) {
			$('#body_text').height($('#body_text').height()-1);
		}
		$(this).height( $('#body_text').position().top + $('#body_text').height() + 10 );
	}
	$(this).css('visibility', 'visible');
	$(this).hide();
	$(this).slideDown(150);
}

function saveEmail(el) {
	el.href = el.href.replace("@remove this part", "");
	el.href = el.href.replace("@remove%20this%20part", "");
}

function lightbox(sID, iID) {
	$('#lightbox_container').fadeIn(250, function() {
		$('#lightbox').css('top', ($(window).height()-$('#lightbox').height())/2);
		var postData = 'sID='+sID+'&iID='+iID;
		$.post('../php.parsers/load-lightbox.php', postData, function(data, textStatus) {
			if(textStatus=='success') {
				$('#lightbox').html(data);
				$('#lightbox').slideDown(150);
			}
		}, "text");
	});
}

function lightboxSwitch(el) {
	$("#lightbox_bigimage").fadeOut(150, function() {									  
		if($('#lightbox_bigimage').attr('src') == $(el).attr('src').replace('[sml]','[big]')) {
			$('#lightbox_bigimage').attr('src', $(el).attr('src').replace('[sml]','[big]')+'?'+new Date());
		} else {
			$('#lightbox_bigimage').attr('src', $(el).attr('src').replace('[sml]','[big]'));
		}
		$('#lightbox_bigimage').attr('title', $(el).attr('title'));
		$('#lightbox_text h2').filter(":first").html($(el).attr('title'));
		$('#lightbox_bigimage').attr('alt', $(el).attr('id'));
		var tags = $(el).attr('alt').split(', ');
		$.each(tags, function(key, value) { 
			tags[key] = '<a href="http://'+document.domain+'/tags/'+value+'">'+value+'</a>';
		});
		$('#tags').html(tags.join(', '));
		
		$('#image-price span').html($(el).attr('class'));
		var lemonize_basket = Array();
		if($.cookie('lemonize_basket')) {
			lemonize_basket = $.merge(lemonize_basket, $.cookie('lemonize_basket').split(','));
		}
		if(jQuery.inArray($(el).attr('id').replace('iID',''), lemonize_basket) !== -1) {
			$('#select-image a').html('remove image from basket');
		} else {
			$('#select-image a').html('add image to basket');
		}
		if(isSerieInCookie()) {
			$('#select-serie a').html('remove serie from basket');
		} else {
			$('#select-serie a').html('add serie to basket');
		}
		$('#lightbox_bigimage').load( function() {
			$("#lightbox_bigimage").fadeIn(250);						  
		});
	});
}

function lightboxSer2Cookie() {
	var lemonize_basket = Array();
	if($.cookie('lemonize_basket')) {
		lemonize_basket = $.merge(lemonize_basket, $.cookie('lemonize_basket').split(','));
	}
	if(isSerieInCookie()) {
		delFromCookie($('#imgIDs').val().split(','));
		$('#select-image a').html('add image to basket');
		if(location.pathname == '/mybasket') {
			jQuery.each($('#imgIDs').val().split(','), function(i, val){
				$('#image'+val).fadeOut(150, function() { $(this).remove(); })
			});
		}
	} else {
		addToCookie($('#imgIDs').val().split(','));
		$('#select-image a').html('remove image from basket');
		var postData = 'url='+document.location;
		$.post('../php.parsers/load-mybasket.php', postData, function(data, textStatus) {
			if(textStatus=='success') {
				$('#content_container').html(data['insertData']);
			}
		}, "json");
	}
}

function lightboxImg2Cookie() {
	var lemonize_basket = Array();
	if($.cookie('lemonize_basket')) {
		lemonize_basket = $.merge(lemonize_basket, $.cookie('lemonize_basket').split(','));
	}
	if(jQuery.inArray($('#lightbox_bigimage').attr('alt').replace('iID',''), lemonize_basket) !== -1) {
		delFromCookie(Array($('#lightbox_bigimage').attr('alt').replace('iID','')));
		$('#select-image a').html('add image to basket');
		if(location.pathname == '/mybasket') {
			$('#image'+$('#lightbox_bigimage').attr('alt').replace('iID','')).fadeOut(150, function() { $(this).remove(); })
		}
	} else {
		addToCookie(Array($('#lightbox_bigimage').attr('alt').replace('iID','')));
		$('#select-image a').html('remove image from basket');
		var postData = 'url='+document.location;
		$.post('../php.parsers/load-mybasket.php', postData, function(data, textStatus) {
			if(textStatus=='success') {
				$('#content_container').html(data['insertData']);
			}
		}, "json");
	}
}

function isSerieInCookie() {
	if(!$.cookie('lemonize_basket')) {
		return false;	
	}
	var iIDs = $('#imgIDs').val().split(',');
	var cookieIDs = $.cookie('lemonize_basket').split(',');
	for(i=0;i<iIDs.length;i++) {
		if(jQuery.inArray(iIDs[i], cookieIDs) == -1) {
			return false;
		}	
	} 
	return true;
}

function addToCookie(iIDs) {
	var lemonize_basket = Array();
	if($.cookie('lemonize_basket')) {
		lemonize_basket = $.merge(lemonize_basket, $.cookie('lemonize_basket').split(','));
	}
	jQuery.each(iIDs, function(i, val){
		lemonize_basket.push(val);
	});
	if(lemonize_basket.length) {
		$('#menu a.mybasket').removeClass().addClass('mybasketselected');
	}
	$.cookie('lemonize_basket', lemonize_basket.unique(), { expires: 1, path: '/', domain: document.domain });
	if(isSerieInCookie()) {
		$('#select-serie a').html('remove serie from basket');
	} else {
		$('#select-serie a').html('add serie to basket');
	}
}

function delFromCookie(iIDs) {
	var lemonize_basket = Array();
	if($.cookie('lemonize_basket')) {
		lemonize_basket = $.merge(lemonize_basket, $.cookie('lemonize_basket').split(','));
	}
	jQuery.each(iIDs, function(i, val){
		lemonize_basket.splice( lemonize_basket.search(val), 1 );
	});
	if(!lemonize_basket.length) {
		$('#menu a.mybasketselected').removeClass().addClass('mybasket');
	}
	$.cookie('lemonize_basket', lemonize_basket.unique(), { expires: 1, path: '/', domain: document.domain });
	if(isSerieInCookie()) {
		$('#select-serie a').html('remove serie from basket');
	} else {
		$('#select-serie a').html('add serie to basket');
	}
}

function lightboxNext(el) {
	if($('#'+ $(el).attr('alt')).next().length) {
		nxt = $('#'+ $(el).attr('alt')).next();	
	} else {
		nxt = $('#'+ $(el).attr('alt')).siblings().filter(":first");
	}
	lightboxSwitch(nxt);
}

jQuery.fn.isChildOf = function(b){ 
    return (this.parents(b).length > 0); 
};

function alphaNum(val) { 
	var nonAlphaNum=/[^0-9,a-z,A-Z]/gi;
    return val.replace(nonAlphaNum, "+");
};

function autoComplete(val, keyCode) {
	if(jQuery.inArray(keyCode, Array(38,40)) != -1) {
		return false;
	}
	if(val.length == 0) {
		$('#search_options').hide();
	} else {
		var postData = $('#search_form').serialize();
		$.post('../php.parsers/rpc.php', postData, function(data, textStatus) {
			if(textStatus=='success') {
				var returnData = '';
				if(data!='') {
					if($('#search_type').val() != 'themes') {
						for(var key in data) {					
							returnData += '<li class="unselected"><a hidefocus="true" href="'+$('input#search_type').val()+'/'+alphaNum(data[key])+'" onclick="autoFill(\''+data[key]+'\');return false;" value="'+data[key]+'">'+data[key]+'</a></li>';
						}
					} else {
						for(var key in data) {					
							returnData += '<li class="unselected"><a hidefocus="true" href="'+$('input#search_type').val()+'/'+alphaNum(data[key])+'" value="'+data[key]+'">'+data[key]+'</a></li>';
						}
					}
				}
				if(returnData!='') {
					$('#search_options').html(returnData);
					$('#search_options').slideDown(100);
					//$('#search_options').show();
					$(document).keydown(function(key){
						if(jQuery.inArray(key.keyCode, Array(38,40)) != -1) {
							return false;
						}
					});
					$('#search_input').keydown(function(key){
						switch(key.keyCode) {
							case 40: //down arrow
								$('#search_options li:first-child').addClass('focus');
								$('#search_options li:first-child a').focus();
								$('#search_options li').keydown(function(key){
									switch(key.keyCode) {
										case 40: //down arrow
											if($(this).next().width()) {
												$(this).removeClass('focus');
												$(this).next().addClass('focus');
												$(this).next().find('a').focus();
											}
										break;
										case 38: //up arrow
											$(this).removeClass('focus');
											if($(this).prev().width()) {
												$(this).prev().addClass('focus');
												$(this).prev().find('a').focus();
											} else {
												$(document).unbind('keydown');
												$('#search_input').focus();
												$('#search_input').keyup(function(){
													autoComplete(this.value, key.keyCode);							
												});
											}
										break;
										case 32: //space
											autoFill($(this).find('a').attr('value'));
										break;
										case 27: //esc
											$(this).removeClass('focus');
											$('#search_options').hide();
											$(document).unbind('keydown');
											$('#search_input').keyup(function(){
												autoComplete(this.value, key.keyCode);							
											});
											return false;
										break;
									}
								});
							break;
						}
					});
				}
			}
		}, "json");
	}
}

function autoFill(val) {
	$('#search_options').hide();
	$('#search_options li').remove();
	if($('#search_input').val().lastIndexOf(',') != -1) {
		$('#search_input').val( $('#search_input').val().substr(0, $('#search_input').val().lastIndexOf(',') ) +', '+val+', ' );
	} else {
		$('#search_input').val(val+', ');
	}
	$('#search_measure').html($('#search_input').val());
	if(!$.browser.msie && $('#search_measure').width()-5 > $('#search_input').width()) {
		$('#search_input').css('direction', 'rtl');
	}
	$('#search_input').mousedown(function() {
		$('#search_input').css('direction', 'ltr');
	}).focus(function(){
		$('#search_input').caret($('#search_input').val().length);
	}).keydown(function(key){
		$('#search_input').css('direction', 'ltr');
	});
	$('#search_input').focus();
	return false;
}


if(typeof Array.prototype.unique==='undefined') {
	Array.prototype.unique = function() {
		for (var i = 0; i < this.length; i++) {
			for (var j = (i + 1); j <= this.length; j++) {
				if (this[i] === this[j]) {
						this.splice(j, 1);
				}
			}
		}
		return this;
	}; 
}
if( typeof Array.prototype.splice==='undefined') {
	Array.prototype.splice = function(ind,cnt) {
			if(arguments.length == 0) return ind;
			if(typeof ind != "number") ind = 0;
			if(ind < 0) ind = Math.max(0,this.length + ind);
			if(ind > this.length) {
				if(arguments.length > 2) ind = this.length;
				else return [];
			}
			if(arguments.length < 2) cnt = this.length-ind;
			cnt = (typeof cnt == "number") ? Math.max(0,cnt) : 0;
			removeArray = this.slice(ind,ind+cnt);
			endArray = this.slice(ind+cnt);
			this.length = ind;
			for(var i=2;i<arguments.length;i++) {
				this[this.length] = arguments[i];
			}
			for(var i=0;i<endArray.length;i++) {
				this[this.length] = endArray[i];
			}
			return removeArray;
		};
}
if( typeof Array.prototype.search==='undefined' ) {
	Array.prototype.search = function( a, depth ) {
		var i = 0;
		for(i; i < this.length; i++) {
			if(isNaN(depth) && this[i] == a) {
				return i;
			}
			if(!isNaN(depth) && this[i][depth].indexOf(a) != -1) {
				return i;
			}
		}
		return -1;
	};
}

(function($) {
  $.fn.caret = function(pos) {
    var target = this[0];
    if (arguments.length == 0) { //get
      if (target.selectionStart) { //DOM
        var pos = target.selectionStart;
        return pos > 0 ? pos : 0;
      }
      else if (target.createTextRange) { //IE
		target.focus();
		var range = document.selection.createRange();
		if (range == null)
			return '0';
		var re = target.createTextRange();
		var rc = re.duplicate();
		re.moveToBookmark(range.getBookmark());
		rc.setEndPoint('EndToStart', re);
		return rc.text.length;
      }
      else return 0;
    } //set
    if (target.setSelectionRange) //DOM
      target.setSelectionRange(pos, pos);
    else if (target.createTextRange) { //IE
      var range = target.createTextRange();
      range.collapse(true);
      range.moveEnd('character', pos);
      range.moveStart('character', pos);
      range.select();
    }
  }
})(jQuery)
