

var user_api = new Class({

    initialize: function(api_url){
	    this.api_url 	= api_url;
	    this.nextCount	= new Array();
	},
	
	getHtmlContent: function(replace_id, action){
		
		var loaderRequest = new Request.HTML({
			url: this.api_url,
			evalResponse: true,
			
			// evalScripts: true,
			update: (replace_id),
		
			onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
				// $(replace_id).set('load', {evalScripts: true});
				// $(replace_id).adopt(responseTree);
				$exec(responseJavaScript);
			},

			onFailure: function() {
				$(replace_id).set('html', '<div class="error">Es trat ein Fehler auf.</div>');
			}

		});

		loaderRequest.post({'action' : action});
		loaderRequest.send();
    },
    
    submitForm: function(form_id, replace_id) {
    	this.replace_id = replace_id;
    	
    	$(form_id).set('send', {onComplete: function(response) { 
			$(replace_id).set('html', response);
		}});
    	
    	$(form_id).send();
    },
    
    
    initInject:function(injectInto_id, count) {
    	this.nextCount[injectInto_id] = count;
    },

    injectElement:function(injectInto_id, action) {
    	
    	this.nextCount[injectInto_id]++;
    	
    	var nextCount = this.nextCount[injectInto_id];
    	
		var loaderRequest = new Request.HTML({
			url: this.api_url,
			// evalResponse: true,
			
			onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {

				var newElementId 	= 'myInjectElement' + nextCount;
				var injectElement 	= new Element('div', {'id' : newElementId});
				
				$(injectInto_id).adopt(injectElement);
				var newHtml = injectElement.get('html') + responseHTML;
				$(newElementId).set('html', newHtml);
				
				CKEDITOR.replace('content[imagecaption]['+ nextCount +']');
			},

			onFailure: function() {
				$(replace_id).set('html', '<div class="error">Es trat ein Fehler auf.</div>');
			}

		});

		loaderRequest.post({'action' : action, 'count' : this.nextCount[injectInto_id]});
		loaderRequest.send();
		
    }
 
 });



var ad_slider = new Class({
	
	Extends: user_api,
	
	setCurrent: function(uid) {
		this.current_record = uid;
	},
	
	
	// Public
	initSlider: function(current_record_uid) {
		this.current_record	= current_record_uid;
		this.idArray		= new Array();
		this.setIdArray();

		this.teaserContent	= '';
		this.inMotion		= false;
		this.scrollMotion	= false;
		this.firstClick		= false;
		this.currentItem	= 1;

		this.top_position	= $('aktionen_container').getPosition().y;
		this.currentYPos	= 0;
		
		this.menu			= $('aktionen_liste_ul');
		this.menu_top		= 0;
		this.menu_minTop	= 0 - (this.menu.getSize().y - $('aktionen_liste').getSize().y);
		this.myMenuFx	 	= new Fx.Tween(this.menu, {duration: 'short'});
		
		this.overlayDiv		= $('overlay');
		this.myOverlayFx 	= new Fx.Tween(this.overlayDiv, {duration: 'short'});
		
		this.verticalSlider	= $('vertical_slider');
		this.myVSFx 		= new Fx.Tween(this.verticalSlider, {duration: 'long'});
	},
	
	switchToCurrent: function(uid) {
		if(this.inMotion == true) return false;
		this.inMotion	= true;
		this.fadeMenuOut(uid);
		this.scrollToTeaserElement(uid);
	},
	
	fadeMenuOut: function(uid) {
		this.myOverlayFx.start('left', '-15', '350');
		window.setTimeout('mySlider.switchToNextElement('+uid+')', 350);
	},
	
	scrollMenuUp: function() {
		if(this.scrollMotion == true) return false;
		this.scrollMotion = true;
		this.scrollMenuBlock(83);
		var nextId = this.getId(-1);
		if(nextId == false) return this.removeLock();
		this.switchToCurrent(nextId);
	},
	
	scrollMenuDown: function() {
		if(this.scrollMotion == true) return false;
		this.scrollMotion = true;
		this.scrollMenuBlock(-83);
		var nextId = this.getId(+1);
		if(nextId == false) {
			this.removeLock();
			return false;
		}
		this.switchToCurrent(nextId);
	},

	registerTeaser: function(teaser) {
		this.teaserContent += teaser;
	},
	
	writeTeaser: function() {
		var currentContent = $('vertical_slider').innerHTML;
		$('vertical_slider').set('html', currentContent + this.teaserContent);
	},
	
	startAnimation: function() {
		if(this.firstClick == true) return false;
		
		if(this.currentItem < 3 && this.idArray.length >= 3) {
			this.switchToCurrent(this.idArray[this.currentItem]);
		} else {
			var res = this.scrollMenuDown();
			if(res == false) {
				this.scrollMenuBlock(-this.menu_minTop);
				this.switchToCurrent(this.idArray[0]);
				this.currentItem = 0;
			}
		}
		this.currentItem++;
		
		window.setTimeout('mySlider.startAnimation();', 6000);
	},
	
	// Private
	getId: function(direction) {
		for (var i = 0; i < this.idArray.length; ++i) {
			if((i + direction) >= (this.idArray.length)) return false;
			if(this.idArray[i] == this.current_record) {
				if((i + direction) < 0) return false;
				return this.idArray[i + direction];
			}
		}
		return false;
	},
	
	setToIdArray: function(elementId) {
		var i = this.idArray.length;
		this.idArray[i] = elementId;
	},
	
	setIdArray: function() {
		$$('#aktionen_liste_ul li').each(function(element) {
			var elementId = element.get('id').replace('sliderMenuItem', '');
			mySlider.setToIdArray(elementId);
		});
	},
	
	scrollToTeaserElement: function(uid) {
		var nextVSYPos	= this.currentYPos - ($('singleElement'+uid).getPosition().y - this.top_position);
		this.myVSFx.start('top', this.currentYPos, nextVSYPos);
		this.currentYPos	= nextVSYPos;
	},
	
	scrollMenuBlock: function(value) {
		if((this.menu_top <= this.menu_minTop && value < 0) || (this.menu_top >= 0 && value > 0)) return false;
		var newTop = this.menu_top + value;
		this.myMenuFx.start('top', this.menu_top, newTop);
		this.menu_top = newTop;
	},

	setElementToMenuOverlay: function(uid) {
		$('fixme').set('html', $('sliderMenuInnerContainer'+uid).get('html'));
		$$('#overlay span.grey_thumbnail'+uid).setStyle('display','none');
		$$('#overlay span.thumbnail'+uid).removeClass('hiddenElement');
		$$('#overlay span.thumbnail'+uid).setStyle('display','block');
	},
	
	switchToNextElement: function(uid) {
		this.nextYPos 	= $('sliderMenuItem'+uid).getPosition().y - this.top_position - 6;
		this.setElementToMenuOverlay(uid);
		
		this.overlayDiv.setStyle('top', this.nextYPos);
		this.myOverlayFx.start('left', '350', '-15');
		this.current_record	= uid;
		
		window.setTimeout('mySlider.removeLock()', 700);
	},
	
	removeLock: function() {
		this.inMotion 		= false;
		this.scrollMotion	= false;
	},
	
	setFirstClick: function() {
		this.firstClick = true;
	}
});



var ad_searchForm = new Class({
	
	// Extends: user_api,
	
	setCurrent: function(uid) {
		this.current_record = uid;
	},
	
	
	// Public
	initSearchForm: function() {
		this.formContainer		= $$('#fixSearchContainer div.searchFormContainer');
		this.formMenu			= $$('#reiter_navi_ul li');
		
		this.formMenu[1].setStyle('display', 'none');
		
		this.formContainer[0].grab($('pharmacySearchForm'));
		this.formContainer[1].grab($('mapSearchContainer'));
		this.formContainer[2].grab($('apotheke_liste'));
		
	},
	
	setActiveElement:function(element) {
		element -= 1;
		
		for (var i = 0; i < this.formMenu.length; ++i) {
			if(element == i) {
				this.formContainer[i].setStyle('display', 'block');
				this.formMenu[i].addClass('active');
				this.formMenu[i].setStyle('display', 'block');
			} else {
				this.formContainer[i].setStyle('display', 'none');
				this.formMenu[i].removeClass('active');
			}
		}
	}
});



var elementActivator = new Class({
	
	// Public
	init: function(elementChooser, updateElement) {
		this.elementContainer	= $$(elementChooser);
		this.updateElement		= $(updateElement);
	},
	
	setActiveElement:function(element) {
		element -= 1;
		
		for (var i = 0; i < this.elementContainer.length; ++i) {
			if(element == i) {
				this.elementContainer[i].addClass('active');
			} else {
				this.elementContainer[i].removeClass('active');
			}
		}
		
		this.updateElement.value = element + 1;
	}
});


var websiteBuilder = new Class({
	
	Extends: user_api,
	
	// Public
	initWebsiteBuilder: function() {

	},

	
	deletePage: function(uid, replace_id) {
		var deleteConfirmation = confirm("Bitte bestätigen Sie das Löschen der Seite.");
		
		if(deleteConfirmation == false) return false;
		
		var loaderRequest = new Request.HTML({
			url: this.api_url,
			evalResponse: false,
			update: (replace_id)
		});

		loaderRequest.post({'action' : 'deletePage', 'uid' : uid});
		loaderRequest.send();
	},

	
	editPage: function(uid, replace_id) {
		var loaderRequest = new Request.HTML({
			url: this.api_url,
			evalResponse: false,
			update: (replace_id)
		});

		loaderRequest.post({'action' : 'editPageTitle', 'uid' : uid});
		loaderRequest.send();
	},
	
	loadContent: function(pid, replace_id) {
		var loaderRequest = new Request.HTML({
			url: this.api_url,
			evalResponse: false,
			update: (replace_id)
		});

		loaderRequest.post({'action' : 'getContentOnPid', 'pid' : pid});
		loaderRequest.send();
	},
	
	deleteContent: function(uid, replace_id) {
		var deleteConfirmation = confirm("Bitte bestätigen Sie das Löschen des Inhaltselements.");
		
		if(deleteConfirmation == false) return false;
		
		var loaderRequest = new Request.HTML({
			url: this.api_url,
			evalResponse: false,
			update: (replace_id)
		});

		loaderRequest.post({'action' : 'deleteContent', 'uid' : uid});
		loaderRequest.send();
	}
	
});

