/**
 * JS-Logik der Image-Komponente
 * 
 * 
 */

function ImageControl()
{
	//"globale" Variabeln in dieser "Klasse"
	var json = jsonobj_Image;
	var json_obj;
	var blende;
	var objdiv;		//Der DIV-Bereich im Frontend, welcher das Editier-Objekt enthält
	
	
	var imgs = _contentdiv.select("div.image");
	
	
	for(var a=0; a<imgs.length; a++) {
		
		imgs[a].observe('click', function(event) {

			var elems = (event.element()).ancestors();	//DOM-Elemente bis zur Wurzel
			elems.unshift(event.element());
			
			for(var i=0; i<elems.length; i++) {
				var css = String(elems[i].classNames());
				if(css.match(/image/)) {
					objdiv = elems[i];
					create( event );
					break;
				}
			}
			
			//alert(rtes[a]);
			//textdiv = rtes[a];
			//create( Event.pointerX(event), Event.pointerY(event) );
		});
	}
	
	

	
	
	function create(event)
	{
		try {
			
			json_obj = eval("json."+objdiv.id);
			
			var editordiv = document.createElement('div');
			
			//Style-String zur Positionierung des Editor-DIV's zusammenbauen
			if(typeof json_obj.style != "undefined") {
				
				
				
				try {
					
					var setWidth = parseInt( eval("json_obj.style.width") );
					var setHeight = parseInt( eval("json_obj.style.height") );
					var clickX = Event.pointerX(event);
					var clickY = Event.pointerY(event);
					var screenWidth = document.viewport.getWidth();
					var screenHeight = document.viewport.getHeight();
					
					var diffTop = 0;
					var diffLeft = 0;
					var padding = 100;
					
					clickY -= Math.round(setHeight/3);
					clickX -= Math.round(setWidth/3);
					
					if( (clickY+setHeight+padding) > screenHeight) diffTop = (screenHeight - (clickY + setHeight)) - padding;
					if( (clickX+setWidth+padding) > screenWidth) diffLeft = (screenWidth - (clickX + setWidth)) - padding;
					
					if(clickY < 0) diffTop = -1 * clickY + padding;
					if(clickX < 0) diffLeft = -1 * clickX + padding;

					
					var calcTop = clickY + diffTop;
					var calcLeft = clickX + diffLeft;

					
					stylestr = "top: '" + calcTop + "px', left: '" + calcLeft + "px',";

					for(prop in json_obj.style) {
						if(prop != "top" && prop != "left")
						stylestr += prop + ":'" + eval("json_obj.style."+ prop) + "',";
					}
					
				} catch(e) {  
				
					var stylestr = "";
					var propstr;
					for(prop in json_obj.style) {
						stylestr += prop + ":'" + eval("json_obj.style."+ prop) + "',";
					}
				}

				stylestr = stylestr.substr(0, stylestr.length-1);			
				eval("editordiv.setStyle({" + stylestr + "});");

			}
			
			
			blende = new Blende( json.component_root, editordiv );
	
			//Bildgröße ermitteln (steht im style-Attr des Eltern-Elements)
			var pelem = ((Event.findElement(event)).ancestors())[1];
			
			
			editordiv.id = "fileupload";
			editordiv.innerHTML = "<iframe id=\"aframe\" name=\"aframe\"></iframe>";
			
			
			var now = new Date();
			
			var form = document.createElement('form');
			form.id = "fileupload";
			form.writeAttribute({ method: 'post', target: 'aframe', action: json.ajaxcall.updateimage_url, enctype: 'multipart/form-data'});
		    form.addClassName('visible');

			var headline = document.createElement('span');
			headline.addClassName("headline");
			headline.innerHTML = "Eine neue Bilddatei hochladen...";

			var imgdimension = document.createElement('span');
			imgdimension.addClassName("imgdimension");
			imgdimension.innerHTML = "Breite: " + pelem.style.width + " | H&ouml;he: " + pelem.style.height;

			var uploadfield = document.createElement('input');
			uploadfield.id = "loadfile";
			uploadfield.writeAttribute({ type: 'file', name: 'loadfile'});
			form.appendChild(uploadfield);
			
			//Filename für upzuloadene Datei: Pfad + Dateinamen vorgeben.. Endung entsprechend
			var filename_field = document.createElement('input');
			filename_field.id = "filename_field";
			filename_field.writeAttribute({ type: 'hidden', name: 'filename_field'});
			filename_field.value = json.image_uploaddir + objdiv.id;
			form.appendChild(filename_field);
			
			//relativer Dateiname, damit Bild dann angezeigt werden kann (Endung wird entsprechend hnzugefügt)
			var relfilename_field = document.createElement('input');
			relfilename_field.id = "relfilename_field";
			relfilename_field.writeAttribute({ type: 'hidden', name: 'relfilename_field'});
			relfilename_field.value = json.image_dir + objdiv.id;
			form.appendChild(relfilename_field);

			//Name des Mediums, damit in der DB gespeichert werden kann
			var mediumname_field = document.createElement('input');
			mediumname_field.id = "mediumname_field";
			mediumname_field.writeAttribute({ type: 'hidden', name: 'mediumname_field'});
			mediumname_field.value = objdiv.id;
			form.appendChild(mediumname_field);
			
			var loadpic = new Image();
			loadpic.id = "loadingimage";
			loadpic.src = json.component_root + "img/ajax-loader.gif";
			loadpic.hide();

			editordiv.appendChild(headline);
			editordiv.appendChild(imgdimension);
			editordiv.appendChild(loadpic);
			editordiv.appendChild(form);
			
			var wv = 0;
			if(typeof json_obj.style.width != undefined) wv = parseInt(json_obj.style.width) + 15;
	
			blende.addCloseButton({top:"-15px", left: wv+"px"});
			
			blende.addElement(editordiv);
			blende.show();
			

			//Upload der Datei initieren, wenn die Datei einfachen Kriterien (passende Dateiendung) entspricht
			uploadfield.observe("change", function(event) {
				 
				var re_text = /\.jpg|\.jpeg|\.png|\.gif/i;
				var element = event.element();
				var form = element.ancestors()[0];
				var filename = element.value;
				
			    if (filename.search(re_text) == -1)
			    {
			        alert("Die Datei ist keine JPG, PNG oder GIF-Datei !");
			        form.reset();
			        return false;
			    }

			    form.submit();
			    form.hide();
			    loadpic.show();
			    form.disabled = true;
			    return true;
			    
			});			
	
		} catch(e) {
			alert("Fehler in ImageControl.create():\n" + e);
		}		
	
	}
	
	this.adjustImage = function(filename, styleImgPos)
	{
		window.setTimeout(function() {

			var imgobj = objdiv.select('div')[0];
			
			//Setzen der neuen (kopierten, mit Timestamp) versehenen Datei
			imgobj.style.backgroundImage = "url(\"" + filename + "\")";
			imgobj.style.backgroundPosition = styleImgPos;
			
			
			blende.exitBlende();
		
		}, 500);
		
	};
	
	
	this.close = function() { blende.exitBlende(); };
	
	

}

var jsonobj_Image = {"component_root":"\/webframework\/Component\/Image\/","document_root":"\/perform\/site\/","contact_1303995715_image":{"style":{"position":"absolute","top":"300px","left":"400px","width":"300px","height":"90px"},"img":{"height":"160px","width":"240px"}},"image_uploaddir":"\/home\/www\/doc\/1497\/alexl.de\/www\/perform\/site\/img\/upload\/","image_dir":"\/perform\/site\/img\/upload\/","ajaxcall":{"updateimage_url":"6240783fhdeblsa\/ajax\/updateimage"},"contact_1303995798_image":{"style":{"position":"absolute","top":"300px","left":"400px","width":"300px","height":"90px"},"img":{"height":"160px","width":"240px"}},"contact_1306501134_image":{"style":{"position":"absolute","top":"300px","left":"400px","width":"300px","height":"90px"},"img":{"height":"160px","width":"240px"}},"contact_1306501167_image":{"style":{"position":"absolute","top":"300px","left":"400px","width":"300px","height":"90px"},"img":{"height":"160px","width":"240px"}},"contact_1306501174_image":{"style":{"position":"absolute","top":"300px","left":"400px","width":"300px","height":"90px"},"img":{"height":"160px","width":"240px"}},"contact_1306501299_image":{"style":{"position":"absolute","top":"300px","left":"400px","width":"300px","height":"90px"},"img":{"height":"160px","width":"240px"}},"contact_1325600966_image":{"style":{"position":"absolute","top":"300px","left":"400px","width":"300px","height":"90px"},"img":{"height":"160px","width":"240px"}}};_dynascript = _dynascript + "try { _img = new ImageControl(); } catch(e) { alert(\"Initialisierung ImageControl()\\n\" + e); }";
