
lv_alreadyOpen = false; 	// lv-status
lv_editDescription = 50; 	// height in px

Event.observe(window, 'load', function() { 
	if($F('ph_type') != 0) {
		Event.fireEvent = function(eventType, element) { 
			if (document.createEvent) { 
				if ( eventType == 'click' ) {
					var evt = document.createEvent("MouseEvents");
					evt.initMouseEvent('click', true, true, window,
						0, 0, 0, 0, 0, false, false, false, false, 0, null
					);
				} else {
					var evt = document.createEvent("Events");
					evt.initEvent(eventType, true, true);
				}
				$(element).dispatchEvent(evt);
			} else if (document.createEventObject) {
				var evt = document.createEventObject();
				$(element).fireEvent('on' + eventType, evt);
			}
		}
	}
});

document.observe('lightview:opened', function(event) { 
	currentPic	= get_currentLv();
	if($(Event.element(event)).readAttribute('id') != 'ph_editlink') hook_insert(); 	// != 'ph_editlink' // == null
});

function wheel(event) {
	window.scrollTo(0, 0);
	if (event.preventDefault)
		event.preventDefault();
		event.returnValue = false;
}

function hook_insert(){
	Tips.hideAll();
	window.scrollTo(0, 0);

	var lv_img = $('lightviewContent');
	if(!lv_img){
		var lv_img = $$('div.lv_contentTop').first();
	}
	var ph_edit = $F('ph_edit');
	var lv_width = lv_img.getWidth().round();
	var img_height = lv_img.getHeight().round();
	var lv_height = parseInt(img_height + lv_editDescription);

	if(!lv_alreadyOpen){
		lv_alreadyOpen = true;
		Event.observe('lightview', 'DOMMouseScroll', wheel); 	Event.observe('lv_overlay', 'DOMMouseScroll', wheel); 	// Mozilla
		Event.observe('lightview', 'mousewheel', wheel); 		Event.observe('lv_overlay', 'mousewheel', wheel);		// IE/Opera
		Event.observe('lightview', 'mouseover', function() { window.scrollTo(0, 0); });

		var imgNumberObj = $$('#lightview li.lv_ImgNumber').first();
		var hook_editor = '<span id="hook_edit" style="float:left; border-right:1px solid #D7D7D7; padding-right:5px; margin-right:5px;"><a id="ph_editlink" href="#ph_add" class="lightview" title=" :: :: menubar: true, topclose: true, autosize: false, width: '+lv_width+', height: '+lv_height+'"><img title="Verlinkungen hinzuf&uuml;gen" alt="edit" src="'+ph_edit+'" /></a></span>';
		var hook_toggle = '<li id="hook_toggle" class="lv_ImgNumber">'+hook_editor+'<input id="hook_check" name="hook_check" onclick="show_hooks();" checked="checked" style="float:left;" value="true" type="checkbox" />';

		if($('hook_toggle')) $('hook_toggle').remove();

		var img_count = $$('div.hookable a.lightview').size();
		if( img_count > 1 ) {
			if(!$('hook_toggle')) {
				hook_toggle = hook_toggle+'&nbsp;Verlinkungen auf</li>';
				imgNumberObj.insert({before: hook_toggle});
			}
		}else{
			hook_toggle = hook_toggle+'&nbsp;Verlinkungen auf diesem Bild anzeigen</li>';
			if(hookedList) {
				$$('#lightview li.lv_DataText').first().insert({after: hook_toggle});
			}else{
				$$('#lightview li.lv_DataText').first().update('').insert({before: hook_toggle});
			}
		}
	}else{
		var hook_editor = '<a id="ph_editlink" href="#ph_add" class="lightview" title=" :: :: menubar: true, topclose: true, autosize: false, width: '+lv_width+', height: '+lv_height+'"><img title="Verlinkungen hinzuf&uuml;gen" alt="edit" src="'+ph_edit+'" /></a>';
		$$('#lightview a#ph_editlink').first().remove();
		$('hook_edit').update(hook_editor);
	}
	$('ph_editlink').observe('lightview:opened', function(event) {
		add_hooks();
	});
	if($('ph_img')) $('ph_img').remove();
	var img_src = $$('div.hookable a.lightview')[parseInt(get_currentLv())].readAttribute('href');
	var ph_img = '<div id="ph_img"><img width="'+lv_width+'" height="'+img_height+'" style="cursor:crosshair;" src="'+img_src+'" title="Neue Verlinkung setzen" alt=""/><br/><span style="position:absolute;padding-top:10px;font-size:11px;">Klick ins Bild, um eine neue Verlinkung hinzuzuf&uuml;gen. (Vorgang <a href="javascript:showCurrent();">abbrechen</a>)</span></div>';
	$('ph_add').update(ph_img);

	lv_downloadlink();
	show_hooks();
}

// nur fuer die verlinkte Liste //
hookedList = false;
function showHookedPic(pic){
	hookedList = true;
	var link = $$('div.hookable a.lightview')[pic];
	Event.fireEvent('click', link);
}

function show_hooks(){
	if($F('hook_check')) {
		add_hooks('show')
	}else{
		remove_tips();
	}
}

function add_hooks(target){
	remove_tips();
	if(target != 'show') var target = 'add';
	if(hookedList) $('ph_type').setValue($$('div.hookable input.type')[currentPic].getValue());
	var fotoID	= $$('div.hookable input.fotoId')[currentPic].getValue();
	new Ajax.Request('/ajax/getHooks.php?id='+fotoID+'&type='+$F('ph_type')+'&owner='+$F('ownerId'), {
		onComplete: function(transport, json) {
			if(!json) {
				json = transport.responseJSON;
			}
			ajaxComplete(json, target);
		}
	});
}

// erhaltene hooks setzen //
function ajaxComplete(json, target){
	var ph_hook = $F('ph_hook');
	var ph_hooking = $F('ph_hooking');
	if(target == 'show') {
		var lv_border = $$('div.lv_Liquid').last().getHeight().round(); 	// Abstand in Pixeln = Rahmenbreite
		var lv_img = $('lightviewContent');
		if(!lv_img){
			var lv_img = $$('div.lv_contentTop').first();
		}
		var lv_hook = $$('#lightview li.lv_PrevNext').first();
	}else{
		var lv_border = 0;
		var lv_img = $('ph_img');
		var lv_hook = $$('#lightview div.lv_contentTop').first();
	}
	for (var i=0; i<json.length; i++) {
		if(json[i].x_pos){
			var hook_i = 'hook_'+i;
			var hooks_i = 'hooks_'+i;
			var hooking_i = 'hooking_'+i;
			var x_value = json[i].x_pos;
			var x_actual = lv_img.getWidth();
			var x_original = $$('div.hookable input.fotoWidth')[currentPic].getValue();
			var y_value = json[i].y_pos;
			var y_actual = lv_img.getHeight();
			var y_original = $$('div.hookable input.fotoHeight')[currentPic].getValue();
			var x_pos = get_scaledPos(x_value, x_actual, x_original);
			var x_pos = parseInt(x_pos) + parseInt(lv_border);
			var y_pos = get_scaledPos(y_value, y_actual, y_original);
			if(json[i].m2_mw == 'm'){
				var m2_mw = 'spioncomm_male';
			}else{
				var m2_mw = 'spioncomm_female';
			}
			var m_editor = json[i].m1_name;		var l_editor = json[i].m1_link;
			var m_edited = json[i].m2_name;		var l_edited = json[i].m2_link;
			var id_edited = json[i].m2_id;

			var hooks_mouseover = "$('"+hooking_i+"').setStyle('opacity: 1'); $('"+hook_i+"').setStyle('opacity: 0'); ";
			var hooks_mouseout = "$('"+hook_i+"').setStyle('opacity: 1'); $('"+hooking_i+"').setStyle('opacity: 0'); ";

			lv_hook.insert({bottom:'<div id="'+hooks_i+'" class="hooks" onmouseover="'+hooks_mouseover+'" onmouseout="'+hooks_mouseout+'" style="z-index:6000;position:absolute; top:'+y_pos+'px; left:'+x_pos+'px; width: 50px; height: 50px; margin-top: -25px; margin-left: -25px;"><a href="'+l_edited+'"><img id='+hook_i+' style="position:absolute;top:0px;left:0px;" src="'+ph_hook+'" alt="" /><img id="'+hooking_i+'" style="position:absolute;top:0px;left:0px;" src="'+ph_hooking+'" alt="" /></a></div>'});
			$$('img#'+hooking_i).first().setStyle({ opacity: 0 });

			if(json[i].deleteable == 'true') {
				var deleteOption = '<tr><td colspan="2">Diese Verlinkung <a href="javascript:ph_delete('+id_edited+');">l&ouml;schen</a>?</td></tr>';
			}else{
				var deleteOption = '';
			}

			new Tip(hooks_i, '<div class="spioncomm_middle"><table style="width:100%;"><tr><td width="70px">Verlinkt von:</td><td><a href="'+l_editor+'">'+m_editor+'</a></td></tr>'+deleteOption+'</table></div><div class="spioncomm_bottom"></div>', {
				title: '<div class="'+m2_mw+'">'+m_edited+'</div>',
				style: 'spioncomm_new',
				hideOn: false,
				target: hooks_i,
				offset: { x: -1, y: 0 },
				hook: { target: 'rightMiddle', tip: 'leftMiddle' }
			});
			$(hooks_i).observe('prototip:shown', function() {
				if(target == 'show') {
					$$('.lv_Button').each(function(e) {
						Event.observe(e, 'mousemove', hide_tips);
					});
				}else{
					Event.observe($('ph_img'), 'mousemove', hide_tips);
				}
				Event.observe('lv_overlay', 'mousemove', hide_tips);
			});
		}
	}
	if(hookedList && json[0].album_name && $$('div#lightview div.lv_Title').any()) {
		var albumLink = '<tr><td colspan="2">Fotoverlinkungen aus dem Album: <i><a href="'+json[0].album_link+'">'+json[0].album_name+'</a></i></td></tr>';
		$$('div#lightview div.lv_Title').first().update(albumLink);
	}
	if(target == 'add') {
		// event-listener fuers hinzufuegen setzen //
		var img_obj = $$('#lightview div#ph_img img').first();
		var addEvent = Event.observe(img_obj, 'click', function(event) {
			addEvent.stopObserving();
			img_obj.setStyle({'cursor':'default'}).writeAttribute('title', '');
			var x_new = Event.pointerX(event) - this.cumulativeOffset()[0];
			var y_new = Event.pointerY(event) - this.cumulativeOffset()[1];

			// Marker soll nicht aus den Bildgrenzen ragen //
			var img_m = this.getWidth() / 2;
			if(x_new < img_m) editPos = 'left'; else editPos = 'right';
			var img_w = this.getWidth() - 25;
			var img_h = this.getHeight() - 25;
			if(x_new < 25) x_new = 25;
			if(y_new < 25) y_new = 25;
			if(x_new > img_w) x_new = img_w;
			if(y_new > img_h) y_new = img_h;

			// Marker setzen und Freundesliste holen //
			if($('added_hook') != undefined) $('added_hook').remove();
			var lv_hook = $$('#lightview div.lv_contentTop').first();
			var ph_hook = $F('ph_hook'); 	var ph_hooking = $F('ph_hooking');
			lv_hook.insert({top:'<div id="added_hook" class="hooks" style="z-index:8000; position:absolute; top:'+y_new+'px; left:'+x_new+'px; width: 50px; height: 50px; margin-top: -25px; margin-left: -25px;"><img title="Wer soll hier verlinkt werden?" style="cursor:help;position:absolute;top:0px;left:0px;" src="'+ph_hook+'" alt="" /><div id="added_selector" style="display:none;position:absolute;top:50px;'+editPos+':0px;"><select id="chooseFriend" name="chooseFriend" size="1"></selcet><input onclick="ph_done('+x_new+', '+y_new+');" style="width:100%;" type="button" value="Speichern"></div></div>'});
			new Ajax.Updater('chooseFriend', '/ajax/getBuddySelector.php', {
				onComplete: function(transport){ 
					if(transport.responseText == '') {
						$('added_hook').hide();
						alert('Bitte einloggen, um hier weiter zu machen!');
						showCurrent();
					} else {
						$('added_selector').show(); 
					}
				}
			});
		});
	}
}

// neuen hook setzen //
function ph_done(x_new, y_new){
	var fotoID	= $$('div.hookable input.fotoId')[currentPic].getValue();
	var lv_img = $('ph_img');
	var x_actual = lv_img.getWidth();
	var x_original = $$('div.hookable input.fotoWidth')[currentPic].getValue();
	var y_actual = lv_img.getHeight();
	var y_original = $$('div.hookable input.fotoHeight')[currentPic].getValue();
	var x_pos = get_originalPos(x_new, x_actual, x_original);
	var y_pos = get_originalPos(y_new, y_actual, y_original);
	if(fotoID) new Ajax.Request('/ajax/setHooks.php', {
		method: 'post',
		parameters: {
			id: fotoID,
			type: $F('ph_type'),
			x: x_pos,
			y: y_pos,
			friend: $F('chooseFriend')
		},
		onCreate: function() {
			$('added_selector').update('<div style="background-color: black; border:1px solid lightgrey; padding:2px; width:150px; height:30px; text-decoration:blink;"><h2 style="color: grey; text-align:center; margin:5px;">Bitte warten...</h2></div>');
		},
		onComplete: function(transport) {
			$('added_hook').remove();
			if(transport.responseText != 'true') {
				alert('Fehler: '+transport.responseText);
			}
			showCurrent();
		}
	});
}

// hook loeschen //
function ph_delete(user){
	delConfirm = confirm('Bist du dir sicher?');
	if(delConfirm) {
		remove_tips();
		var fotoID	= $$('div.hookable input.fotoId')[currentPic].getValue();
		if(fotoID) {
			new Ajax.Request('/ajax/delHooks.php', {
				method: 'post',
				parameters: {
					id: fotoID,
					user: user,
					type: $F('ph_type')
				},
				onComplete: function(transport) {
					if(transport.responseText != 'true') {
						alert('Fehler: '+transport.responseText);
					}
					showCurrent();
				}
			});
		}else{
			alert('Da ist leider was bei der Bildzuordnung schief gegangen!');
		}
	}
}

function get_scaledPos(value, actual, original){
	if(parseInt(actual) < parseInt(original)){
		var scaled = (parseInt(value) * parseInt(actual)) / parseInt(original);
		return scaled.round();
	}else{
		return value;
	}
}
function get_originalPos(value, actual, original){
	if(parseInt(actual) < parseInt(original)){
		var scaled = (parseInt(value) * parseInt(original)) / parseInt(actual);
		return scaled.round();
	}else{
		return value;
	}
}

function get_currentLv(){
	var img_count = $$('div.hookable a.lightview').size();
	if( img_count > 1 ) {
		var writtenLv 	= $$('li.lv_ImgNumber').last().down('div').firstChild.data.split(' ')[1];
		return parseInt(writtenLv) - 1;
	}else{
		return 0;
	}
}

function remove_tips(){
	if($$('.hooks').any()) $$('.hooks').each(function(e) {
		Tips.remove(e);
		e.remove();
	});
}

function hide_tips(){
	if($$('.hooks').any()) {
		$$('.hooks').each(function(e) {
			if(e.prototip) e.prototip.hide();
		});
	}
}

function showCurrent() {
	if($$('div.hookable a.lightview').any()){
		remove_tips();
		Event.fireEvent('click', $$('div.hookable a.lightview')[currentPic]);
	}
}

function lv_downloadlink() { 	// lightview-downloadlinkergänzung für fotos 
	if($F('ph_type') == 1 && !hookedList){
		var insertObj = $$('#lightview li.lv_innerPrevNext').first();
		var lv_content = $$('img#lightviewContent').first();
		if(insertObj && lv_content) { if(insertObj.visible() && $$('div.hookable a.lightview').size() > 1) {
			if($('downloadlink')) $('downloadlink').remove();
			var imgUrl = lv_content.readAttribute('src');
			var basename = (split = imgUrl.split('/'))[split.length - 1];
			var ext = basename.split('.')[1];
			var block = basename.split('.')[0].split('_')[0];
			var label = basename.split('.')[0].split('_')[1];
			var fsUrl = '/filespread/dl/'+block+'/'+label+'.'+ext;
			insertObj.insert({before:'<li id="downloadlink" class="lv_Slideshow"><a href="'+fsUrl+'" class="lv_ImgNumber" title="Download">Download</a></li>'});
		}}
	}
}
