$(function () {
	
	initArrowboxes('#main .heads .related', '.box_small', 1);
	initArrowboxes('#tp_start_heads .box_medium', '.item', 4);	
	initArrowboxes('#tp_start_projects .box_medium', '.item', 2);	
	
	initForms();
	
	if ($('#main .heads').length) 
		initPagination('#main', 10);
	
	var h = window.location.host.toLowerCase();
	$("a[href^='http']:not(a[href^='http://" + h + "']):not(a[href^='http://www." + h + "']), a[href$='.pdf']").attr("target", "_blank");

});

function initFormLabelToDefault() {
	
	var forms = $('form');
	
		forms.submit(function(){
			$(this)
				.find('input[type=text], textarea')
				.each(function(){
					toggleLabel($(this), 'remove')
				});
		})	
		.find('input[type=text], textarea')
		.each(function(){
			
			var $this = $(this);
			toggleLabel($this, 'add');
			
			$this.blur(function(){
				toggleLabel($this, 'add');
			});
			
			$this.focus(function(){
				toggleLabel($this, 'remove');
			});			
		});
		
		forms
			.find('select')
			.each(function(){
				var $this = $(this);
				var first = $this.children().eq(0);
				var label = !$this.is('.required') ? $this.attr('title') : $this.attr('title')+' *';
				
				if (first.text() == '') {
					first.html(label);
				}
				else {
					$this.prepend('<option>'+label+'</option>');
				}
				
				if ($this.children().eq(0).is(':selected')) {
					$this.addClass('default');
				}
				$this.blur(function(){
					if ($this.children().eq(0).is(':selected')) {
						$this.addClass('default');
					}
				});
				
				$this.focus(function(){
					$this.removeClass('default');
				});	
			});
}


function toggleLabel(obj, type){
	var input = $(obj);
	var value = input.val();

	var label = !input.is('.required') ? input.attr('title') : input.attr('title')+' *';
	
	if (type == 'remove' && value == label) {
		input.val('');
	}	
	if (type == 'add' && jQuery.trim(value) == '') {
		input.val(label);
	}	
	
	if (input.val() == label) {
		input.addClass('default');
	}
	else {
		input.removeClass('default');
	}
}

function initForms() {
	$('form label.qflabel').hide();
	initFormLabelToDefault();
}


function initArrowboxes(box_selector, item_selector,  steps) {
	
	var boxes = $(box_selector);

	if (!boxes.length) return false;

	boxes.each(function(){
		
		var box   = $(this);
		var items = box.find(item_selector);
		var total = items.length;
		if (total < (steps+1)) return true;
		
		box.css('overflow','visible');
		items.slice(steps).hide();

		var ar_left = $('<a href="#" class="tp_ar_left">&lt;</a>').appendTo(box);
		var ar_right = $('<a href="#" class="tp_ar_right">&gt;</a>').appendTo(box);
		
		ar_left.click(function() {
			updateArrowbox(steps);
			return false;			
		});
		
		ar_right.click(function() {
			updateArrowbox(steps*-1);
			return false;
		});
	
		var updateArrowbox = function(step) {

			var total = items.length;

			items.filter(':not(:hidden)').hide();
			//items.filter(':not(:hidden)').css('background','red');

			if (step > 0) {
				
				items.slice(0, step).clone().appendTo(box);
				items.slice(0, step).remove();
				items = box.find(item_selector);
				items.slice(0, step).fadeIn('fast');
			}
			else {
				items.slice(total+step, total).clone().prependTo(box);
				items.slice(total+step, total).remove();
				items = box.find(item_selector);				
				items.slice(0, step*-1).fadeIn('fast');
			}
		}
	});
	
}

function initPagination(selector, elements_per_page, paginations_per_page) {

	var container = $(selector);
	var pagination = container.find('.pagination');
	elements_per_page = elements_per_page*1

	if (pagination.length) return false;
	
	var items = container.children('div');
	var total = items.length;

	if (total <= elements_per_page) return false;

	if (paginations_per_page < 5) paginations_per_page = 5;
	
	var current_page = 0;
	var page_count = Math.ceil(total/elements_per_page)+1;		
	var one_side_paginations = Math.floor(paginations_per_page/2);
	
	var update_page_links = function(){
		
		left.empty();
		middle.empty();
		right.empty();
		
		if (current_page <= one_side_paginations) {
            var start = 1;
        } else {
            var start = current_page - one_side_paginations;
        }
        
        if (current_page != 0) {
        	$('<a href="#" title="Erste Seite" class="page_link first">&lt;&lt;</a>')
				.appendTo(left)
				.click(function(){
					current_page = 0;
					update_page();
		        	return true;
				});

			$('<a href="#" title="Vorherige Seite" class="page_link prev">&lt;</a>')
				.appendTo(left)
				.click(function(){
					current_page--;
					update_page();
		        	return true;
				});
        } else {
			left.html('&nbsp;');
        }
        
        if (page_count > 7 && page_count > 3) {
        	middle.append('<a href="#" class="page_link">1 ...</a>');        	
        }

        var begin_pagination = current_page - 3;
        var stop_pagination = current_page + 5;

        if (begin_pagination < 0) {
            stop_pagination -= begin_pagination;
            begin_pagination = 0;
        }
        if (page_count < stop_pagination ) {
            begin_pagination -= stop_pagination - page_count;
            stop_pagination = page_count;
        }
        if (page_count<=7) {
            begin_pagination = 0;
            stop_pagination = page_count;
        }

        for (var i = begin_pagination; i < stop_pagination-1; i ++) {
            if (current_page == i) {
            	middle.append('<a href="#" class="page_link current">'+(i+1)+'</a>');  
            } else {
            	middle.append('<a href="#" class="page_link">'+(i+1)+'</a>');  
            }
        }	
        
        if (page_count > 7 && current_page < (page_count -5) ) {
        	middle.append('<a href="#" class="page_link">'+page_count-1+'</a>');             	
        }
        
        if (current_page != (page_count -2)) {
        	$('<a href="#" title="Letzte Seite" class="page_link last">&gt;&gt;</a>')
				.prependTo(right)
				.click(function(){
					current_page = Math.floor(total/elements_per_page);				
		        	update_page();
		        	return true;
				});

    		$('<a href="#" title="Nächste Seite" class="page_link next">&gt;</a>')
				.prependTo(right)
				.click(function(){		
					current_page++;
		        	update_page();
		        	return true;
				});	
        } else {
        	right.html('&nbsp;');
        }
        
        middle.find('a.page_link').click(function(){
        	var $this = $(this);
        	current_page = ($this.text()*1)-1;
        	update_page();
        	return true;
        });
	}
	
	var update_page = function(){
		
		items.hide();
		var slice_start = current_page*elements_per_page;
		var slice_end   = slice_start+elements_per_page;
		
		items.slice(slice_start, slice_end).show();
		update_page_links();
	}
	
	pagination = $('<div class="pagination"></div>').appendTo(container);
	var left   = $('<div class="pagination_left"></div>').appendTo(pagination);
	var middle = $('<div class="pagination_middle"></div>').appendTo(pagination);
	var right  = $('<div class="pagination_right"></div>').appendTo(pagination);	
	
	update_page();
	
}


