


	/**
	 * Kohana_Ajax
	 *
	 *	Ajax-Schnittstelle JS <-> Kohana (Controller_Template_Ajax)
	 *
	 *	Action:		ajax
	 *	Bootstrap: 	'controller'/ajax/'request'/'type'/'options.url'/
	 *
	 *
	 *	@param controller		Kohana Controller
	 *	@param request			action bzw Variable
	 *	@param options			Optionen
	 *		 					- url: 			ergänzender URL-String für erweiterte Parameter; z.B. 'type/option1'
	 *							- data:			zu versendendes Datenobjekt
	 *							- onSuccessFun:	Funktion, die bei erfolgreichem Request aufgerufen wird. enthält result['data']
	 */
	var Kohana_Ajax = new Class({
	
		Implements: [Options],
		
		options: {

			url:			'',			// weitere URL-Parameter (Variablen)
			data:			null,		// zu versendendes Datenobjekt
			onSuccessFun:	null		// Funktion, die bei erfolgreichem Request aufgerufen wird. enthält result['data']
		},
	
		initialize: function( controller, action, options ) {
		
			this.setOptions(options);
			
			
			// Daten nach JSON konvertieren
			
			var dataJSON = JSON.encode( this.options.data );
		
		
			// Request aufbereiten
			var url = action+'/'+this.options.url;
			if( controller != '' ) url = controller + '/' + url;
			//if( $defined(SITEURL) )
			url = SITEURL+url;
			
			new Request.JSON({ url: url,
			
			
				// Daten übergeben
				data:		'data='+dataJSON,
	    	
	    		    		
	    		// Daten erfolgreich geladen
	    		onSuccess:	function(result) {
	    	
	    			
	    			// übergebene Daten korrekt
	    			if( $defined(result) && result['success'] ) {

	    				// Success-Funktion aufrufen
						if( $defined(this.options.onSuccessFun) ) this.options.onSuccessFun( result['data'] );
	    					    				
	
					// korrupte Daten
	    			} else {
	    			
	    				if( $defined(result) ) {
	    				
	    					//alert( url+': '+"Fehlerhaft geladene Daten: " + result['debug']);
	    					
	    				} else {
	    				
	    					//alert( url+': '+" Syntaxfehler");
	    				}
	    			} 
	    			
	    		}.bind(this),
	    		

	    		// Fehler beim laden
	    		onFailure:	function(result) { /*alert('Probleme bei der Verbindung zu ' + url );*/ }	
			
			
			// Request abschicken
			
	    	}).send();
		}
	});
