countPictureUpload = 0;
/**
 * Die Klasse für den MIRAL-Soft-Upload, der den Upload für die jeweiligen Elemente in die Hand nimmt.
 * 
 * @param options
 */
function MIRALUpload(options){
	this.defaults = {
		'ids' 				: 		false,
		'classes'			:		false,
		'uploadImage'		:		'Texturen/ajax-loader.gif',
		'stdBild'			:		'Texturen/neuesGaleriebildDummy.png',
		'uploadType'		:		0,
		'nrIdentifier' 		:		'#uploadEintrag',
		'pictureNrID'		:		'.bildNr',
		'pictureParent'		:		'.bildParent',
		'rootPath'			:		CD_ROOT,
		'tabType'			:		'',
		'autoUpdate'		:		true,
		'success'			:		function(){}
	};
	
	//Alle Felder löschen, damit die nicht überlaufen
	$('input[type=file]').remove();
	
	//Standard und neue Optionen mergen
	this.options = $.extend(this.defaults, options);
	this.upload = loadPictureFunctions;
	this.ajaxUpLoad = ajaxUpLoad;
	this.uploadedFile = null;
	this.setCountBack = function(){countPictureUpload = 0;};
	
	this.upload();
}

/**
 * Die Funktion, die die ganzen Funktionen zu den Elementen hinzufügt
 */
function loadPictureFunctions(){
	var i;
	var ids = this.options.ids;
	var classes = this.options.classes;
	if(ids != false && ids.length > 0){
		for(i in ids){
			this.ajaxUpLoad(ids[i], false);
		}
	}
	if(classes != false && classes.length > 0){
		for(i in classes){
			this.ajaxUpLoad(classes[i], true);
		}
	}
}

/**
 * Fügt den Upload zu den jeweilgen Element hinzu
 * 
 * @param id			Welches Element muss der Upload hinzugefügt werden
 * @param isClass		Ist die Eingabe eine Klasse oder eine ID
 */
function ajaxUpLoad(id, isClass){
	var selector = (isClass != null && isClass == true ? '.' : '#') + id;
	var self = this;
	
	//Jedes Galeriebild durchlaufen
	$(selector).each(function(){
		new AjaxUpload($(this), {
			  onSubmit: function(file, extension){
				  this.disable();
				  
				  if(this.checkExtension(extension) == false){
					  alert(unescape('Dieser Dateityp wird nicht unterst%FCtzt!'));
					  this.enable();
					  return false;
				  }
				  
				  if(self.options.autoUpdate){
					  //Falls es ein neues Galeriebild ist, müssen die Felder neu gesetzt werden
					  var bild = $(this._button);
					  
					  $(bild).attr('src', self.options.uploadImage);
				  }
				  
				  //Bevor alle Daten gesendet werden, müssen die richtigen POST-Daten gesetzt werden
				  this.setData({
					  	'uploadArt'		:	self.options.uploadType,
					  	'eintragID'		:	$(self.options.nrIdentifier).val(),
			  			'bildNr'		:	$(bild).parents(self.options.pictureParent).find(self.options.pictureNrID).val(),
			  			'anzahlBilder'	:	countPictureUpload,
			  			'tabArt'		:	$(self.options.tabType).val()
			  		});
			  },
			  onComplete: function(file, response){
				  //Wenn kein Fehler eins incrementieren
				  if(response.fehler != 1){
					  countPictureUpload++;
				  }
				  
				  if(self.options.autoUpdate){
					  //var bild = $(this._button.parentNode).find(selector);
					  var bild = $(this._button);
					  
					  if(response.fehler != 1){
						  bildUpdate((self.options.rootPath + response.datei), bild);
					  }
					  else{
						  bildUpdate(self.options.stdBild, bild);
						  alert(response.nachricht);
					  }
				  }
				  
				  self.uploadedFile = response.datei;
				  
				  self.options.success(self);
				  
				  //Upload wieder aktivieren
				  this.enable();
			  }
		});
	});
}

/**
 * Updatet das Bild nachdem es hochgeladen wurde.
 * 
 * @param datei			Die Datei, die hochgeladen wurde (Pfad)
 * @param id			Die ID des Bild-Elements.
 */
function bildUpdate(datei, id){
	var zusatz = '?' + parseInt((Math.random()*20000), 10);
	$(id).attr('src', datei + zusatz);
}
