/*
biketowork.ch
interactive functions
frappant.ch mhm - v1 2011
*/

var btw_string_forminvalid,btw_string_kosten;

function Biketowork(){};// javascript equivalent of Class initialization

	Biketowork.prototype.showFormMessage = function(message,mode){
		if(!message){message='';}
		messageHolder=$('.formmessage');
		if(mode&&mode!=''){
			messageHolder.attr('class','formmessage '+mode);
		}
		messageHolder.html(message);
	}//resetFormMessage


	Biketowork.prototype.registerCompany = function(theForm){
		// Validierung der Formularfelder
		// Teil 1 - Bei Fehlern: Fehler anzeigen, Formular nicht abschicken
		// Teil 2 - Wenn alles OK: Formular per AJAX abschicken
		// 	- Firma erstellen
		// 	- Koordinator mit username=email, email=email, password = automatisch generiert erstellen
		//  - Zugangsdaten an Koordinator mailen
		//  - Koordinator einloggen und auf "nächste Seite" 2.1 senden
		//  - auf "nächster Seite" einen fetten Button "Ihr Benutzerkonto" anbieten mit hidden-Feldern für Login (?)

		var fields = $(theForm).serialize();
		var d = new Date();
		getPath = "index.php?id=59&no_cache=1&mode=firmaAnmelden&" + fields +"&time=" + d.getTime();
		$.ajax({
			url: getPath,
			cache: false,
			dataType:'json',
			success: function(data){
				FRP_BIKETOWORK.JSONsuccess(data);
			},
			error:function(data){
				FRP_BIKETOWORK.showFormMessage(data.result?data.result:'Error','error');
			}
		});
	}//registerCompany


	Biketowork.prototype.registerTeam = function(theForm,mode){
		var fields = $(theForm).serialize();
		var d = new Date();
		getPath = 'index.php?id=59&no_cache=1&mode='+mode+'&' + fields +"&time=" + d.getTime();
		$.ajax({
			url: getPath,
			cache: false,
			dataType:'json',
			success: function(data){
				FRP_BIKETOWORK.JSONsuccess(data);
			},
			error:function(data){
				FRP_BIKETOWORK.showFormMessage(data.result?data.result:'Error','error');
			}
		});
	}//registerTeam


	Biketowork.prototype.orderPrintStuff = function(theForm){
		var fields = $(theForm).serialize();
		var d = new Date();
		getPath = 'index.php?id=59&mode=drucksachenBestellen&' + fields +"&time=" + d.getTime();
		$.ajax({
			url: getPath,
			cache: false,
			dataType:'json',
			success: function(data){
				FRP_BIKETOWORK.JSONsuccess(data);
			},
			error:function(data){
				FRP_BIKETOWORK.showFormMessage(data.result?data.result:'Error','error');
			}
		});
	}//registerTeam


	Biketowork.prototype.JSONsuccess = function(data){
		switch(data.status){
			case 302://redirect
				self.location.href="/index.php?id="+ data.result;
				break;
			case 200:// Nur Meldung hinten anhängen
				FRP_BIKETOWORK.showFormMessage(data.result,'ok');
				break;
			case 201: // Formular ersetzen durch Text
			
			case 400:// Nur Meldung hinten anhängen
				FRP_BIKETOWORK.showFormMessage(data.result,'error');
				break;
		}
	};//handleJSONResponse


	Biketowork.prototype.formError = function(data){
		FRP_BIKETOWORK.showFormMessage('<p>'+$.validator.messages.formIncomplete+'</p>','error');
	};//formError

	Biketowork.prototype.calculateCosts = function(anzmitarbeiter){
		var kosten = 0;
		if (anzmitarbeiter <= 25) {
			kosten = 100;
		} else {
			if (anzmitarbeiter <= 200) {
				kosten = 200;
			} else {
				if (anzmitarbeiter <= 5000) {
					kosten = (((anzmitarbeiter-200)*0.5)+200).toFixed(2);
				} else {
					kosten = (2600+((anzmitarbeiter-5000)*0.1)).toFixed(2);
				}
			}
		}
		return kosten
	};//calculateCosts


	Biketowork.prototype.displayCosts = function(anzmitarbeiter,displayString){
		var costs = this.calculateCosts(anzmitarbeiter);
		return displayString.replace(/\%s1/i, costs).replace(/\%s2/i, anzmitarbeiter);
	}//displayCosts


	Biketowork.prototype.fieldHelper = function(field,on){
		field = $(field);
		helperspan = field.parent().find('span.helper');
		if(on){
			helptext=field.data('help');
			if(helptext){
				$(helperspan).addClass('active help');
				$(helperspan).attr('title',helptext);
			}
		}else{
			$(helperspan).attr('class','helper').attr('title','');
		};
	};//fieldHelperAdd

	Biketowork.prototype.fieldHelperAdd = function(field){
		this.fieldHelper(field,true);
	};//fieldHelperAdd

	Biketowork.prototype.fieldHelperReset = function(field){
		this.fieldHelper(field,false);
	};//fieldHelperReset

	Biketowork.prototype.initCostDisplay = function(field){

		if(field){
			field.change(function() {
				if(btw_string_kosten!=''){
					$this = $(this);//form field
					$thisVal = parseInt($this.val(),10);
					if(!$thisVal || $thisVal==0 || $thisVal=='NaN' || $thisVal==null){
						$("p.betrag").empty();
						$("input[name=betrag]").val(0);
					}else{
						// btw_string_kosten written directly in sourcecode by plugin (eg pi2)
						kosten = FRP_BIKETOWORK.displayCosts($thisVal,btw_string_kosten);
						// String anzeigen im <span>
						$("p.betrag").text(kosten);
						betrag = FRP_BIKETOWORK.calculateCosts($thisVal);
						$("input[name=betrag]").val(betrag);
					}
				}
			});
		}

	}//initCostDisplay


	Biketowork.prototype.formValidator = function(form){
		$(form).data('invalid',true);//temporary!!!!!!!

		if(FRP_BIKETOWORK.checkFields($(form))){
			return true;

		}else{
			$messageform = $(form).find('.formmessage');
			if($(form).data('invalid')){
				$messageform.html('<p>'+btw_string_forminvalid+'</p>');
				$messageform.addClass('invalid');
				return false;
			}else{
				$messageform.removeClass('invalid');
				$messageform.empty();
				return true;
			}
			return false;
		}

	}//formValidator


	Biketowork.prototype.checkFields = function(form){
		/*
		//WORK IN PROGRESS
		$fields = $(form).find(':input');

		$fields.filter('[type=number]').change(function(){
			$field = $(this);
			$form = $field.parents('form');
			thisVal = $field.val();
			if(!($.type(thisVal) === "number") && !(thisVal===0 || thisVal==='')){
				$field.addClass('invalid');
			}else{
				$field.removeClass('invalid');
			}
		});*/

		return true;

	}//formValidator


	Biketowork.prototype.checkFieldValidity = function(field){
		$field = $(field);
		if($field.data('required') && !$field.val()){
			$field.addClass('invalid');
		}else{
			$field.removeClass('invalid');
		}

	}//checkFieldValidity


	Biketowork.prototype.initializeBillingAddress = function(){
		$('.address.alternate.billing').fadeToggle();
		$("input:checkbox[name=billingaddress]").click(function() {
			billingAddressBlock = $('.address.alternate.billing');
			billingAddressBlock.fadeToggle("fast");
			if($(this).is(':checked')){
				billingAddressBlock.fadeIn("fast");
				billingAddressBlock.scrollToElement();
			}
		});



		if($("input:checkbox[name=billingaddress]").is(':checked')){
				billingAddressBlock = $('.address.alternate.billing');
				billingAddressBlock.fadeIn("fast");
			}
	}


/**
*
*	Checkbox für Lieferadresse Drucksachenbestellung
*
*
**/
	Biketowork.prototype.initializeShippingAddress = function(){
		$('.address.alternate.shipping').fadeToggle();
		$("input:checkbox[name=shippingaddress]").click(function() {
			shippingAddressBlock = $('.address.alternate.shipping');
			shippingAddressBlock.fadeToggle("fast");
			if($(this).is(':checked')){
				shippingAddressBlock.fadeIn("fast");
			//	shippingAddressBlock.scrollToElement();
			}
		});



		if($("input:checkbox[name=shippingaddress]").is(':checked')){
				shippingAddressBlock = $('.address.alternate.shipping');
				shippingAddressBlock.fadeIn("fast");
			}
	}


	Biketowork.prototype.initializeFieldHelpers = function(){
		helperspan = $('<span class="helper"></span>');

		$('.tx-frpbiketowork label').append(helperspan);

		$('.tx-frpbiketowork input,.tx-frpbiketowork select,.tx-frpbiketowork textarea').focus(function(){
			FRP_BIKETOWORK.fieldHelperAdd($(this),true);
		});
		/*$('.tx-frpbiketowork input,.tx-frpbiketowork select,.tx-frpbiketowork textarea').blur(function(){
			FRP_BIKETOWORK.fieldHelperReset(this);
			FRP_BIKETOWORK.checkFieldValidity(this);
		});
		$('.tx-frpbiketowork select').change(function(){
			FRP_BIKETOWORK.checkFieldValidity(this);
		});*/
		$('.tx-frpbiketowork input,.tx-frpbiketowork select,.tx-frpbiketowork textarea').blur(function(){
			FRP_BIKETOWORK.fieldHelperReset(this);
		});


	}//initializeFieldHelpers

	Biketowork.prototype.tabMenuClicked = function(event){
		event.stopImmediatePropagation();
		clickedLink = $(event.target);
		tabname = clickedLink.attr('href').replace('#','');

		tabWrapper=clickedLink.parents('.tabs');
		tabWrapper.find('.tab')

		tabWrapper.find('.tab').removeClass('active');
		tabWrapper.find('menu.tabs li').removeClass('active');
		tabWrapper.find('.tab.' +tabname).addClass('active');
		tabWrapper.find('.tab.' +tabname).addClass('active');
		clickedLink.parent().addClass('active');

		return false;

	};//tabMenuClicked


	Biketowork.prototype.optionSameAddress = function(){
		$(this).parent().next().fadeToggle();
    };



FRP_BIKETOWORK = new Biketowork();
