var formstatus_message=false;
var formstatus=false;

var publications_title;
var publications_id;

var set_title;
var set_id;

var cookieList = function(cookieName, t) {

	var cookie = $.cookie(cookieName);
	var type = t; 
	var items = parseCookie();
	
	function parseCookie(){
		if(type == "map"){
			var obj = new Object();
			
			if(cookie){
				var c = cookie.split("|");
				for(var i in c){
					var temp = c[i].split("=");
					obj[temp[0]] = temp[1];
				}
			}
			
			return obj;
		} else {
			return cookie ? cookie.split("|") : new Array();
		}
	}
	
	this.add = function(val, v) {
		if(type == "map"){
			if(val && v != undefined && v != null){
				items[val] = v;
			}
			
			var temp = new Array();
			for(var i in items){
				if(items[i] != undefined){
					temp.push(i+"="+items[i]);
				}
			}
			
			$.cookie(cookieName, temp.join('|'), { path: '/'} );
		} else {
			var valueExist = false;
			for( f=0; f< items.length; f++) {
				if( items[f] == val ) {
				   valueExist = true;
				   break;
				}
			}
			if ( !valueExist ) {
				items.push(val);
				$.cookie(cookieName, items.join('|'), { path: '/'} );
			}
		}
	};
	
	this.set = this.add;
	
	this.remove = function (removeItem) {
		if(type == "map"){
			delete items[removeItem];
			
			var temp = new Array();
			for(var i in items){
				if(items[i] != undefined){
					temp.push(i+"="+items[i]);
				}
			}
			
			$.cookie(cookieName, temp.join('|'), { path: '/'} );
		} else {
			for ( var i = 0, length = items.length; i < length; i++ ) {
				if ( items[i] == removeItem ) {
					var index = i;
					break;
				}
			}
			items.splice(index, 1);
			$.cookie(cookieName, items.join('|'), { path: '/'} );
		}
	};
	
	this.clear = function() {
		if(type == "map"){
			items = new Object();
		}else{
			items = new Array();
		}
		$.cookie(cookieName, null, { path: '/'});
	};
	
	this.length = function(){
		if(type == "map"){
			var count = 0;
			for(var i in items){
				if(items[i] != undefined){
					count++;
				}
			}
			return count;
		} else {
			return items.length;
		}
	};
	
	this.items = function() {
		return items;
	}
};



function addFileToCart(e, title, uid) { 
	publications_title.add(uid, title);
	publications_id.add(uid, 1);
	refreshCart();
	showTooltip(e, title+" wurde dem Einkaufswagen hinzugefügt");
	
	var target = $(getTarget(e));
	target.addClass("alreadyInCart");
	target.unbind(e);
	target.unbind("click");
	target.attr("onclick", "")
	target.click(function(ev){ return removeFileFromCart(ev, uid, title) });
	
	return false;
}

function removeFileFromCart(e, uid, title) {     
	publications_title.remove(uid);
	publications_id.remove(uid);
	refreshCart();
	showTooltip(e, title+" wurde aus dem Einkaufswagen entfernt");
	
	if($('#selectors').length == 0){
		var target = $(getTarget(e));
		target.removeClass("alreadyInCart");
		target.unbind(e);
		target.unbind("click");
		target.attr("onclick", "")
		target.click(function(ev){ return addFileToCart(ev, title, uid) });
	}
	
	return false;
}

function addSetToCart(e, title, uid) { 
	set_title.add(uid, title);
	set_id.add(uid, 1);
	refreshCart();
	showTooltip(e, title+" wurde dem Einkaufswagen hinzugefügt");
	
	var target = $(getTarget(e));
	target.addClass("alreadyInCart");
	target.unbind(e);
	target.unbind("click");
	target.attr("onclick", "")
	target.click(function(ev){ return removeSetFromCart(ev, uid, title) });
	
	return false;
}

function removeSetFromCart(e, uid, title) {     
	set_title.remove(uid);
	set_id.remove(uid);
	refreshCart();
	showTooltip(e, title+" wurde aus dem Einkaufswagen entfernt");
	
	if($('#selectors').length == 0){
		var target = $(getTarget(e));
		target.removeClass("alreadyInCart");
		target.unbind(e);
		target.unbind("click");
		target.attr("onclick", "")
		target.click(function(ev){ return addSetToCart(ev, title, uid) });
	}
	
	return false;
}

function isArray(a) {
	return Object.prototype.toString.call(a) === '[object Array]';
}

function refreshCart() {
	var count = 0;
	
	if(publications_id !== null) {
		var len = publications_id.length();
		if(len) {
			count += len;
		}
	}
	
	if(set_id !== null) {
		var len = set_id.length();
		if(len) {
			count += len;
		}
	}
	
	$('#publication-items-cart-number').html(count);
}


function setDelHiddenFields() {
	$('#del-hidden-field').val("1");
}

function setOrderCountCookie(){
	var set_items = set_id.items();
	for(var i in set_items){
		var val = $("#set_counter_"+i).val();
		set_id.add(i, val);
	}
	
	var publication_items = publications_id.items();
	for(var i in publication_items){
		var val = $("#publication_counter_"+i).val();
		publications_id.add(i, val);
	}
	
}

function setPubHiddenFields() {

	var cumulativePublication = new Array();
	var cumulativeSet = new Array();
	
	var cumulativeCounterArray = new Array();
	var cumulativePublicationArray = new Array();
	var cumulativePublicationCounterArray = new Array();
	var cumulativeSetArray = new Array();
	var cumulativeSetCounterArray = new Array();
	
	
	$('div.publication-files').each( function() {    
	   cumulativePublicationArray.push($(this).attr('id'));
	});
	
	$('input.publication_counter').each( function() {
	   cumulativePublicationCounterArray.push($(this).val());
	});
	
	$('div.set-files').each( function() {    
	   cumulativeSetArray.push($(this).attr('id'));
	});
	
	$('input.set_counter').each( function() {
	   cumulativeSetCounterArray.push($(this).val());
	});	
	
	for (var i=0; i < cumulativePublicationArray.length; i++) {
		cumulativePublication.push(cumulativePublicationArray[i] + ' (' + cumulativePublicationCounterArray[i] +')');
	}
	
	for (var i=0; i < cumulativeSetArray.length; i++) {
		cumulativeSet.push(cumulativeSetArray[i] + ' (' + cumulativeSetCounterArray[i] +')');
	}

	// put the value to hidden field
	summarizeOrder();
	$('#text_publication_numbers').val(cumulativePublication.join(",\n"));
	$('#text_set_numbers').val(cumulativeSet.join(",\n"));
	
	if($('#title_select').val() === "Firma"){
		$('#institution_greeting').val($('#text_institution').val());
	} else {
		$('#institution_greeting').val($('#text_first_name').val() + ' ' + $('#text_last_name').val());
	}
	
}

// http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:splice
// ----------------------------------------------------------------
if(!Array.prototype.splice) Array.prototype.splice = function(iStart, iLength) {
// ----------------------------------------------------------------
	if(iLength < 0) iLength = 0;

	var aInsert = new Array();
	if(arguments.length > 2) {
		for(var i=2; i<arguments.length; i++) {
			aInsert.push(arguments[i]);
		}
	}

	var aHead = this.subarray(0, iStart);
	var aDelete = this.subarr(iStart, iLength);
	var aTail = this.subarray(iStart + iLength);

	var aNew = aHead.concat(aInsert, aTail);

	// Rebuild yourself
	this.length = 0;
	for(var i=0; i<aNew.length; i++) {
		this.push(aNew[i]);
	}

	return aDelete;
}


function pausecomp(millis) {
	var date = new Date();
	var curDate = null;

	do { curDate = new Date(); } 
	while(curDate-date < millis);
}

function formSent(){
	var sets = set_id.items();
	var set_names = set_title.items();
	var publications = publications_id.items();
	var publications_names = publications_title.items();
	
	if(set_id.length() > 0){
		$("#thankyou").append("<p id='sets_ordered_header' class='order_list_header'>Infomappen:</p>");
		$("#thankyou").append("<ul id='sets_ordered'></ul>");
		for(var i in sets){
			if(i != undefined){
				$("#sets_ordered").append("<li>"+sets[i]+" x "+set_names[i]+"</li>");
			}
		}
	}
	
	if(publications_id.length() > 0){
		$("#thankyou").append("<p id='publications_ordered_header' class='order_list_header'>Broschüren:</p>");
		$("#thankyou").append("<ul id='publications_ordered'></ul>");
		for(var i in publications){
			if(i != undefined){
				$("#publications_ordered").append("<li>"+publications[i]+" x "+publications_names[i]+"</li>");
			}
		}
	}
	
	resetTab();
	openTab(2);
	//current_view.clear();
	publications_id.clear();
	publications_title.clear();
	set_title.clear();
	set_id.clear();
	refreshCart();
	//$('#publications').hide();
}

function summarizeOrder(){
	var sets = set_id.items();
	var set_names = set_title.items();
	var publications = publications_id.items();
	var publications_names = publications_title.items();
	var summary="";
	
	if(set_id.length() > 0){
		summary+="\nInfomappen:\n";
		for(var i in sets){
			if(i != undefined){
				summary+=""+sets[i]+" x "+set_names[i]+"\n";
			}
		}
	}
	
	if(publications_id.length() > 0){
		summary+="\nBroschüren:\n";
		for(var i in publications){
			if(i != undefined){
				summary+=""+publications[i]+" x "+publications_names[i]+"\n";
			}
		}
	}
	
	$('#text_order_summary').val(summary);
	//$('#publications').hide();
}

// ermittelt das Ziel des Events
function getTarget(e){
	var targ;
	if (!e) e = window.event;
	if (e.target) targ = e.target;	// all Browsers
	else if (e.srcElement) targ = e.srcElement;	// IE
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;
	return targ;
}

// ermittelt die Position des Events relativ zum Viewport
function getEventPos(e) {
	var posx = 0;
	var posy = 0;
	if (!e) e = window.event;
	if (e.pageX || e.pageY) 	{
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
	
	return {x : posx, y : posy};
}

// ermittelt die Größe der Seite
function getPageSize(){
	var x = 0;
	var y = 0;
	
	if(window.innerHeight){
		x = window.innerWidth;
		y = window.innerHeight;
	} else if(document.body.clientHeight){
		x = document.body.clientWidth;
		y = document.body.clientHeight;
	} else {
		x = document.documentElement.clientWidth;
		y = document.documentElement.clientHeight;
	}
	
	return { x : x, y : y };
}

// ermittelt den Versatz der Seite durch Scrolling
function getPageOffset(){
	var x = 0;
	var y = 0;
	
	if(window.innerHeight){
		x = window.pageXOffset;
		y = window.pageYOffset;
	} else if(document.body.scrollLeft){
		x = document.body.scrollLeft;
		y = document.body.scrollTop;
	} else {
		x = document.documentElement.scrollLeft
		y = document.documentElement.scrollTop;
	}
	
	return { x : x, y : y };
}

function getTooltipPos(pos){
	var offset = getPageOffset();
	return {
		top : pos.y
	};
}

// Zeigt den Tooltip
function showTooltip(e, text){
	var pos = getEventPos(e);
	var tooltip = $("#info_tooltip");
	
	if(tooltip.length > 0){
		var oparent = tooltip.parent();
		
		while(oparent.css("position") == "static"){
			oparent = oparent.parent();
		}
		
		var o = oparent.offset();
		pos.y = pos.y - o.top;
		tooltip.attr("style", "");
		tooltip.removeAttr("style")
		tooltip.css(getTooltipPos(pos));
		tooltip.children(".text").text(text);
		tooltip.stop().stop().fadeIn("fast");
		tooltip.delay(5000).fadeOut("slow");
	}
}

function Tabs(){
	this.field = "#tabs .tab";
	this.cat = "#selectors .tab_selector";
	this.cats = $(this.cat);
	this.fields = $(this.field);
	
	this.resetTab = function(){
		$(this.cat).removeClass("tab_active");
		
		$(this.fields).css({display: "none"});
	}
	
	this.openTab = function(num){
	//	current_view.clear();
	//	current_view.add(num);
		
		if(num < this.cats.length){
			if(!formstatus_message && num == 2){
				$(this.cats[1]).addClass("tab_active");
			} else if(formstatus_message){
				$(this.cats[2]).addClass("tab_active");
			} else {
				$(this.cats[Math.min(num, 1)]).addClass("tab_active");
			}
		}
		
		if(num == 2 || formstatus_message) num = 1;
		if(num >= this.fields.length) return;
		
		$(this.fields[num]).css({display: "block"});
		
		if(num==1){
			$("#mainform").bind("submit", checkBoxes);
		}
		else{
			$("#mainform").unbind("submit", checkBoxes);
			
			}
	}
	
	this.initTabs = function(){
		this.resetTab();
		
		var num = 0;
		/*if(current_view.items().length > 0){
			num = current_view.items()[0];
		}*/
		
		this.openTab(num);
	}
	
	
	this.initTabs();
	
	var self = this;
	
	$(this.cats).click(function(e){
		var target = getTarget(e);
		var prev = $(target).prevAll();
		var num =  prev.length;
		
		self.resetTab();
		self.openTab(num);
		return false;
	});
}

function checkCart(){
	if($("#info_tooltip").length > 0){
		var pid = publications_id.items();
		
		$("#info_tooltip")[0].id = "info_temp";
		
		for(var i in pid){
			//$("#list_item_"+i+" .addToCart").addClass("alreadyInCart");
			$("#list_item_"+i+" .addToCart").click();
		}
		
		var sid = set_id.items();
		
		for(var i in sid){
			//$("#subcategory_"+i+" .addToCart").addClass("alreadyInCart");
			$("#subcategory_"+i+" .addToCart").click();
		}
		
		$("#info_temp")[0].id = "info_tooltip";
		
	} else {
		
		var set_items = set_id.items();
		for(var i in set_items){
			var val = $("#set_counter_"+i).val(set_items[i]);
		}
		
		var publication_items = publications_id.items();
		for(var i in publication_items){
			var val = $("#publication_counter_"+i).val(publication_items[i]);
		}
	}
}

var tabs;
var openTab;
var resetTab;

$(document).ready(function(){
	publications_title = new cookieList("publications_title", "map");
	publications_id = new cookieList("publications_id", "map");
	set_title = new cookieList("set_title", "map");
	set_id = new cookieList("set_id", "map");
	
	checkCart();
	
	//current_view = new cookieList("view");
	tabs = new Tabs();
	resetTab = function(){ tabs.resetTab(); };
	openTab = function(num){ tabs.openTab(num); };
	
	if(formstatus_message){
		formSent();
	}
});


function EMail(s){
	var a = false;
	var res = false;
	if(typeof(RegExp) == 'function'){
		var b = new RegExp('abc');
		if(b.test('abc') == true){a = true;}
	}
	
	if(a == true){
		reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+
		                 '(\\@)([a-zA-Z0-9\\-\\.]+)'+
		                 '(\\.)([a-zA-Z]{2,4})$');
		res = (reg.test(s));
	} else {
		res = (s.search('@') >= 1 &&
		s.lastIndexOf('.') > s.search('@') &&
		s.lastIndexOf('.') >= s.length-5)
	}
	
	return(res);
}



   
function getIndex(array, elem){
   if(array.indexOf) return array.indexOf(elem);
	   
	   var res = -1;
	   
   for(var i= 0; i<array.length; i++){
		   if(array[i].toUpperCase() === elem.toUpperCase()){
			   res = i;
			   break;
		   }
	   }
	   
	   return res;
   }
   
   
   missing_fields = new Array();



function deleteFromArray(theArray, s){
   var i = getIndex(theArray, s);
   if(i != -1) theArray.splice(i, 1);
   }

   function checkfield(feldname){
	   if(document.forms["mainform"].elements[feldname].value==""){
		   document.forms["mainform"].elements[feldname].style.backgroundColor='#FFFFB2';
		   missing_fields.push(feldname);
	   }
	   else{
		   deleteFromArray(missing_fields, feldname);
		   document.forms["mainform"].elements[feldname].style.backgroundColor='#FFFFFF';	
		   }
   }

   function checkBoxes(){
		missing_fields = new Array();

	   var counter=0;
	   if(document.forms["mainform"].elements["tx_pilmailform_pi1[checkbox][branche1]"].checked=="1"){
		   counter++;
	   }
	   if(document.forms["mainform"].elements["tx_pilmailform_pi1[checkbox][branche2]"].checked=="1"){
		   counter++;
	   }
	   if(document.forms["mainform"].elements["tx_pilmailform_pi1[checkbox][branche3]"].checked=="1"){
		   counter++;
	   }
	   if(document.forms["mainform"].elements["tx_pilmailform_pi1[checkbox][branche4]"].checked=="1"){
		   counter++;
	   }
	   if(document.forms["mainform"].elements["tx_pilmailform_pi1[checkbox][branche5]"].checked=="1"){
		   counter++;
	   }
	   if(document.forms["mainform"].elements["tx_pilmailform_pi1[checkbox][branche6]"].checked=="1"){
		   counter++;
	   }
	   if(document.forms["mainform"].elements["tx_pilmailform_pi1[checkbox][branche7]"].checked=="1"){
		   counter++;
	   }
	   if(document.forms["mainform"].elements["tx_pilmailform_pi1[checkbox][branche8]"].checked=="1"){
		   counter++;
	   }
	   if(document.forms["mainform"].elements["tx_pilmailform_pi1[checkbox][branche9]"].checked=="1"){
		   counter++;
	   }
	   
	   if(counter > 0){
		   if(EMail(document.forms["mainform"].elements["text_email"].value)==false){
			   document.forms["mainform"].elements["text_email"].value="";
			   }
		   
		   checkfield("title_select");
		   checkfield("text_first_name");
		   checkfield("text_last_name");
		   checkfield("text_street");
		   checkfield("text_zip");
		   checkfield("text_city");
		   checkfield("text_phone");
		   checkfield("text_email");
		   
		   if(missing_fields.length < 1){					
			   return true;
			   document.forms["mainform"].submit();
		   }
		   else{			
			   var meldung="Bitte füllen Sie die gelb hinterlegten Felder aus.\n";
			   alert(unescape(meldung));
			   return false;	
			   }
		   
	   }
	   else{
		   alert("Bitte waehlen Sie oben mindestens eine Branche.");
		   return false;
		   }
   }
