var mySortables = new Sortables('gallery', {
	handle: '.move-photo',
	constrain: false,
	clone: true,
	opacity: 0,
	snap: 16,
	revert: false,
	requiresUpdate: false,
	
	onStart: function(element) {
		element.highlight();
	},
	
	onSort: function() {
		this.requiresUpdate = true;
	},
	
	onComplete: function() {

		if(!this.requiresUpdate) {
			return false;
		}
		this.requiresUpdate = false;
	
		foo = mySortables.serialize(function(element, index) {
			return element.getChildren('div.photo.moveable')[0].getProperty('id').replace('item_', 'item[') + ']=' + index;
		}).join('&');

		var myRequest = new Request.JSON({
			method: 'get',
			url: photo_baseurl+'/reorder',

			onSuccess: function(json, text) {
				if(json) {
					json.each(function(element) {
						var node = $(element.selector);
						if(node) {
							node.set(element.options);
						}
					});
				}
			}
		}).send('album_id='+photo_album_id+'&offset='+photo_album_offset+'&'+foo);
		
		
	}
});

function deleteImage(element, nGalleryId, nPhotoId) {

	var bStatus = confirm('Möchtest du dieses Bild wirklich löschen?');
	if(!bStatus) {
		return bStatus;
	}

	var foo = new Request.JSON({
		method: 'get',
		url: photo_baseurl+'/delete/album_id,' + photo_album_id+ '/photo_id,' + nPhotoId,
		onSuccess: function(json, text) {
			if(json) {
				json.each(function(element) {
					var node = $(element.selector);
					if(node) {
						node.set(element.options);
					}
				});
			}
			element.getParent().destroy();
		},
		onFailure: function() {
			alert('Das Bild konnte nicht gelöscht werden.');
		}
	});
	foo.send();
}

function setAvatar(nPhotoId) {

	var foo = new Request.JSON({
		method: 'get',
		url: photo_baseurl+'/avatar/photo_id,'+nPhotoId,
		onSuccess: function(json, text) {
			if(json) {
				json.each(function(element) {
					var node = $(element.selector);
					if(node) {
						node.set(element.options);
					}
				});
			}
			
			$('gallery').getElements('.photo').removeClass('special');
			var node = $('item_'+nPhotoId);
			if(node) {
				node.addClass('special');
			}
		},
		onFailure: function() {
			var node = $('item_'+nPhotoId);
			if(node) {
				node.highlight('#ff0000');
			}
		}
	});
	foo.send();
}

function save(element, target) {
	var foo = new Request({
		method: 'post',
		url: target,
		data: {
			title: element.value
		},
		onSuccess: function() {
			element.highlight('#98a506');
		},
		onFailure: function() {
			element.value = element.getAttribute('value');
			element.highlight('#ff0000');
		}
	});
	foo.send();
}

function saveComment(text, target) {
	new Request({
		method: 'post',
		url: target,
		data: {
			'nachricht-text': text,
			'submit_comment_overlay': true
		},
		onSuccess: function() {
			new Request({
				method: 'post',
				url: '/global/parser/',
				data: {
					'text': text
				},
				onSuccess: function(parse) {
					var container = $('foto_comment').getElements('div.content')[0];
					container.setStyle('opacity', '0');
					container.set('html', parse);
					container.fade.delay(100, container, 'in');					
					$$('.to_show').setStyle.delay(50, $$('.to_show'), [ 'display', 'block' ]);
				}			
			}).send();
		}
	}).send();	
}

function showUserPhotoBox(){
	
	if(Browser.Engine.trident == true){
		if(Browser.Engine.version < 6){
			alert("Diese Funktion kann leider erst mit dem Internet Explorer ab Version 8 genutzt werden.");
			return;
		}
	}
	
	var body = $('top');
	var photo = $('photo');
	var fader = new Element('div', {'id': 'user-photo-fader'});
	
	fader.inject(body);
	
	fader.setStyles({
		'background-color': 'black',
		'opacity': '0.5',
		'-ms-filter': '\"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)\"',
		'filter': 'alpha(opacity=50)',       
		'height': document.getScrollSize().y + 'px',
		'width': '100%',
		'position': 'absolute',
		'top': '0',
		'left': '0',
		'z-index': '2'
	});
	
	var options = photo.getCoordinates();
	overlay.show('/fotos/profilbildwaehlen/', {
		top: options.top + 16,
		left: '8px',
		width: '290px'
	}).addEvent('getcomplete', function(){
		pag.disabled = true;
		var mCrop = new MooCrop($('photo'), {min: { 'width': 200, 'height': 218 }, handleColor: '#B2CA26', cropBorder: '1px dashed #B2CA26'});

		$('user-photo-submit').addEvent('click', saveUserPhoto.bindWithEvent(mCrop));
		$('user-photo-submit').addEvent('click', removeCrobOverlay.bindWithEvent(mCrop));
		$('user-photo-cancel').addEvent('click', removeCrobOverlay.bindWithEvent(mCrop));
		mCrop.addEvent('onDblClk', saveUserPhoto.bindWithEvent(mCrop));
		mCrop.addEvent('onDblClk', removeCrobOverlay.bindWithEvent(mCrop));

		// Das MooCrop Div is shit und muss angepasst werden.
		$('photo').getParent('div').getElement('div').setStyles({'margin': '0 auto', 'position': 'relative', 'z-index': '50'});
	}); 
	
	
}

function removeCrobOverlay(){
	this.removeOverlay();
	$('photo').getParent('div').getElements('div').each(function(item){ item.dispose().destroy(); });
	$('user-photo-fader').dispose().destroy();
	$('user-photo-submit').removeEvents('click');
	$('user-photo-cancel').removeEvents('click');
	overlay.removeEvents('getcomplete');
	overlay.hide();
	pag.disabled = false;
	this.img = null;
}


function saveUserPhoto(event){
	var url = document.location.href;
	var photo_url_id = url.replace(/.*photo_id,([0-9]+)(#.*)?/g, '$1');
	var photo_hash_id = document.location.hash.replace(/#/, '');

	if(parseInt(photo_url_id) != parseInt(photo_hash_id) && !isNaN(photo_hash_id) && photo_hash_id.length > 0){
		url = url.replace(/photo_id,[0-9]+(#.*)?/g,'photo_id,'+ photo_hash_id);
	}

	overlay.removeEvents('getcomplete');
	new Request({
			'url': url,
			'onComplete': handleUserPhotoSave
	}).send('left='+ this.crop.left + '&top=' + this.crop.top + '&width=' + this.crop.width + '&height=' + this.crop.height + '&action=userPhoto');
}

function handleUserPhotoSave(){
	var text = this.response.text;
	var url = '/fotos/profilbildwaehlen/erfolgreich';
	if(text == "0"){
		url = "/fotos/profilbildwaehlen/fehler";
	}
	
	overlay.show(url).addEvent('getcomplete', function(){ setTimeout("overlay.hide()", 2500); overlay.removeEvents('getcomplete'); });
}

function quickRate(el, r, parent) {
	el.setStyle('cursor', 'wait');
	stars = parent.getElements('.stars')[0];
	new Request({
		url: el.get('href'),
		onSuccess: function(res) {
			stars.getElements('a').dispose();
			stars.getElements('li').removeClass('active');
			
			stars.getElements('li').each(function(item, idx) {
				if(idx <= r-1) {
					item.addClass('active');
				}
			});
			stars.highlight('#96D050');
			el.setStyle('cursor', 'default');
			var cnt = parent.getParent().getElements('.rating-count')[0];
			parent.getParent().getElements('.ratings-count-container').setStyle('display', 'inline-block');
			cnt.set('text', cnt.get('text').toInt() + 1);
		},
		onFailure: function() {
			stars.highlight('#dd0000');
			el.setStyle('cursor', 'default');
		}
	}).send();
}

function removeEventsForEdit() {
	$$('div.photo.moveable').removeEvents('mouseenter');
	$$('div.photo.moveable').removeEvents('mouseleave');	
}

function initEventStars() {
	if(!$$('.rateit')) {
		return false;
	}
	
	$$('.rateit').each(function(item, idx) {
		item.addEvent('mouseover', function() {
			for(i = 0; i < this.get('rel').split('_')[1]; i++) {
				$$('a[rel=star_'+i+']').addClass('hovered');
			}
		});
		item.addEvent('mouseout', function() {			
			for(i = 0; i < this.get('rel').split('_')[1]; i++) {
				$$('a[rel=star_'+i+']').removeClass('hovered');
			}
		});
	});	
}

window.addEvent('domready', function() {
	$$('div.photo.moveable').each(function(el) {
		el.store('pos', el.getCoordinates());	
	});
	
	initEventStars();
	
	$$('div.photo.moveable').addEvent('mouseenter', function(evt) {
		if(this.hasClass('unknown')) {
			return;
		}
		var pos = this.getCoordinates();
		var banner = $$('.bigsizebanner_container')[0];
		var offsetTop = pos.top - (130 + banner.getStyle('height').toInt());
		var offsetLeft = pos.left - 225;
		var original = this.retrieve('pos');
		if(original.top - offsetTop > (180 + banner.getStyle('height').toInt())) {
			return false;
		}
		
		this.addClass('photo-hover');
		
		this.setStyles({
			'top': offsetTop,
			'left': offsetLeft
		});
		
		var data = this.getParent().get('id').split('_');

		var addPartyPhotos = '';
		var isPartyPhotos = document.location.href.indexOf('partyfotos,');
		
		if (isPartyPhotos > -1)
		{
			var pfid = document.location.href.substr(isPartyPhotos+11, document.location.href.length-isPartyPhotos-11);

			while (isNaN(pfid))
			{
				pfid = pfid.substr(0, pfid.length-1);
			}

			addPartyPhotos = '/partyfotos,'+pfid;
		}

		var tools = this.getElements('div.quick-tools')[0];
		if(this.getElements('img.quick-load').length > 0) {
			tools.set('load', {
				onRequest: function() {
					tools.show();
				},
				onSuccess: function() {
					stars = tools.getElements('.stars')[0];
					if(stars) {
						stars.getElements('a').each(function(star, idx) {
							star.addEvent('click', function() { quickRate(star, idx+1, tools); return false; }.bind(this) );
						}, this);
					}
				}
			});
			window.ph_timer = tools.load.delay(400, tools, ['/fotos/album_quickview/album_id,'+data[1]+'/photo_id,'+data[0]+addPartyPhotos]);
		}
		else {
			tools.show();
		}
	});
	
	$$('div.photo.moveable').addEvent('mouseleave', function(evt) {
		if(this.hasClass('unknown')) {
			return;
		}
		this.removeClass('photo-hover');
		this.getElements('div.quick-tools')[0].hide();
		$clear(window.ph_timer);
	});
});

/*
 * Pixastic - JavaScript Image Processing Library
 * Copyright (c) 2008 Jacob Seidelin, jseidelin@nihilogic.dk, http://blog.nihilogic.dk/
 * MIT License [http://www.pixastic.com/lib/license.txt]
 */

var Pixastic=(function(){function addEvent(el,event,handler){if(el.addEventListener)
el.addEventListener(event,handler,false);else if(el.attachEvent)
el.attachEvent("on"+event,handler);}
function onready(handler){var handlerDone=false;var execHandler=function(){if(!handlerDone){handlerDone=true;handler();}}
document.write("<"+"script defer src=\"//:\" id=\"__onload_ie_pixastic__\"></"+"script>");var script=document.getElementById("__onload_ie_pixastic__");script.onreadystatechange=function(){if(script.readyState=="complete"){script.parentNode.removeChild(script);execHandler();}}
if(document.addEventListener)
document.addEventListener("DOMContentLoaded",execHandler,false);addEvent(window,"load",execHandler);}
function init(){var imgEls=getElementsByClass("pixastic",null,"img");var canvasEls=getElementsByClass("pixastic",null,"canvas");var elements=imgEls.concat(canvasEls);for(var i=0;i<elements.length;i++){(function(){var el=elements[i];var actions=[];var classes=el.className.split(" ");for(var c=0;c<classes.length;c++){var cls=classes[c];if(cls.substring(0,9)=="pixastic-"){var actionName=cls.substring(9);if(actionName!="")
actions.push(actionName);}}
if(actions.length){if(el.tagName.toLowerCase()=="img"){var dataImg=new Image();dataImg.src=el.src;if(dataImg.complete){for(var a=0;a<actions.length;a++){var res=Pixastic.applyAction(el,el,actions[a],null);if(res)
el=res;}}else{dataImg.onload=function(){for(var a=0;a<actions.length;a++){var res=Pixastic.applyAction(el,el,actions[a],null)
if(res)
el=res;}}}}else{setTimeout(function(){for(var a=0;a<actions.length;a++){var res=Pixastic.applyAction(el,el,actions[a],null);if(res)
el=res;}},1);}}})();}}
if(typeof pixastic_parseonload!="undefined"&&pixastic_parseonload)
onready(init);function getElementsByClass(searchClass,node,tag){var classElements=new Array();if(node==null)
node=document;if(tag==null)
tag='*';var els=node.getElementsByTagName(tag);var elsLen=els.length;var pattern=new RegExp("(^|\\s)"+searchClass+"(\\s|$)");for(i=0,j=0;i<elsLen;i++){if(pattern.test(els[i].className)){classElements[j]=els[i];j++;}}
return classElements;}
var debugElement;function writeDebug(text,level){if(!Pixastic.debug)return;try{switch(level){case"warn":console.warn("Pixastic:",text);break;case"error":console.error("Pixastic:",text);break;default:console.log("Pixastic:",text);}}catch(e){}
if(!debugElement){}}
var hasCanvas=(function(){var c=document.createElement("canvas");var val=false;try{val=!!((typeof c.getContext=="function")&&c.getContext("2d"));}catch(e){}
return function(){return val;}})();var hasCanvasImageData=(function(){var c=document.createElement("canvas");var val=false;var ctx;try{if(typeof c.getContext=="function"&&(ctx=c.getContext("2d"))){val=(typeof ctx.getImageData=="function");}}catch(e){}
return function(){return val;}})();var hasGlobalAlpha=(function(){var hasAlpha=false;var red=document.createElement("canvas");if(hasCanvas()&&hasCanvasImageData()){red.width=red.height=1;var redctx=red.getContext("2d");redctx.fillStyle="rgb(255,0,0)";redctx.fillRect(0,0,1,1);var blue=document.createElement("canvas");blue.width=blue.height=1;var bluectx=blue.getContext("2d");bluectx.fillStyle="rgb(0,0,255)";bluectx.fillRect(0,0,1,1);redctx.globalAlpha=0.5;redctx.drawImage(blue,0,0);var reddata=redctx.getImageData(0,0,1,1).data;hasAlpha=(reddata[2]!=255);}
return function(){return hasAlpha;}})();return{parseOnLoad:false,debug:false,applyAction:function(img,dataImg,actionName,options){options=options||{};var imageIsCanvas=(img.tagName.toLowerCase()=="canvas");if(imageIsCanvas&&Pixastic.Client.isIE()){if(Pixastic.debug)writeDebug("Tried to process a canvas element but browser is IE.");return false;}
var canvas,ctx;var hasOutputCanvas=false;if(Pixastic.Client.hasCanvas()){hasOutputCanvas=!!options.resultCanvas;canvas=options.resultCanvas||document.createElement("canvas");ctx=canvas.getContext("2d");}
var w=img.offsetWidth;var h=img.offsetHeight;if(imageIsCanvas){w=img.width;h=img.height;}
if(w==0||h==0){if(img.parentNode==null){var oldpos=img.style.position;var oldleft=img.style.left;img.style.position="absolute";img.style.left="-9999px";document.body.appendChild(img);w=img.offsetWidth;h=img.offsetHeight;document.body.removeChild(img);img.style.position=oldpos;img.style.left=oldleft;}else{if(Pixastic.debug)writeDebug("Image has 0 width and/or height.");return;}}
if(actionName.indexOf("(")>-1){var tmp=actionName;actionName=tmp.substr(0,tmp.indexOf("("));var arg=tmp.match(/\((.*?)\)/);if(arg[1]){arg=arg[1].split(";");for(var a=0;a<arg.length;a++){thisArg=arg[a].split("=");if(thisArg.length==2){if(thisArg[0]=="rect"){var rectVal=thisArg[1].split(",");options[thisArg[0]]={left:parseInt(rectVal[0],10)||0,top:parseInt(rectVal[1],10)||0,width:parseInt(rectVal[2],10)||0,height:parseInt(rectVal[3],10)||0}}else{options[thisArg[0]]=thisArg[1];}}}}}
if(!options.rect){options.rect={left:0,top:0,width:w,height:h};}else{options.rect.left=Math.round(options.rect.left);options.rect.top=Math.round(options.rect.top);options.rect.width=Math.round(options.rect.width);options.rect.height=Math.round(options.rect.height);}
var validAction=false;if(Pixastic.Actions[actionName]&&typeof Pixastic.Actions[actionName].process=="function"){validAction=true;}
if(!validAction){if(Pixastic.debug)writeDebug("Invalid action \""+actionName+"\". Maybe file not included?");return false;}
if(!Pixastic.Actions[actionName].checkSupport()){if(Pixastic.debug)writeDebug("Action \""+actionName+"\" not supported by this browser.");return false;}
if(Pixastic.Client.hasCanvas()){if(canvas!==img){canvas.width=w;canvas.height=h;}
if(!hasOutputCanvas){canvas.style.width=w+"px";canvas.style.height=h+"px";}
ctx.drawImage(dataImg,0,0,w,h);if(!img.__pixastic_org_image){canvas.__pixastic_org_image=img;canvas.__pixastic_org_width=w;canvas.__pixastic_org_height=h;}else{canvas.__pixastic_org_image=img.__pixastic_org_image;canvas.__pixastic_org_width=img.__pixastic_org_width;canvas.__pixastic_org_height=img.__pixastic_org_height;}}else if(Pixastic.Client.isIE()&&typeof img.__pixastic_org_style=="undefined"){img.__pixastic_org_style=img.style.cssText;}
var params={image:img,canvas:canvas,width:w,height:h,useData:true,options:options}
var res=Pixastic.Actions[actionName].process(params);if(!res){return false;}
if(Pixastic.Client.hasCanvas()){if(params.useData){if(Pixastic.Client.hasCanvasImageData()){canvas.getContext("2d").putImageData(params.canvasData,options.rect.left,options.rect.top);canvas.getContext("2d").fillRect(0,0,0,0);}}
if(!options.leaveDOM){canvas.title=img.title;canvas.imgsrc=img.imgsrc;if(!imageIsCanvas)canvas.alt=img.alt;if(!imageIsCanvas)canvas.imgsrc=img.src;canvas.className=img.className;canvas.style.cssText=img.style.cssText;canvas.name=img.name;canvas.tabIndex=img.tabIndex;canvas.id=img.id;if(img.parentNode&&img.parentNode.replaceChild){img.parentNode.replaceChild(canvas,img);}}
options.resultCanvas=canvas;return canvas;}
return img;},prepareData:function(params,getCopy){var ctx=params.canvas.getContext("2d");var rect=params.options.rect;var dataDesc=ctx.getImageData(rect.left,rect.top,rect.width,rect.height);var data=dataDesc.data;if(!getCopy)params.canvasData=dataDesc;return data;},process:function(img,actionName,options,callback){if(img.tagName.toLowerCase()=="img"){var dataImg=new Image();dataImg.src=img.src;if(dataImg.complete){var res=Pixastic.applyAction(img,dataImg,actionName,options);if(callback)callback(res);return res;}else{dataImg.onload=function(){var res=Pixastic.applyAction(img,dataImg,actionName,options)
if(callback)callback(res);}}}
if(img.tagName.toLowerCase()=="canvas"){var res=Pixastic.applyAction(img,img,actionName,options);if(callback)callback(res);return res;}},revert:function(img){if(Pixastic.Client.hasCanvas()){if(img.tagName.toLowerCase()=="canvas"&&img.__pixastic_org_image){img.width=img.__pixastic_org_width;img.height=img.__pixastic_org_height;img.getContext("2d").drawImage(img.__pixastic_org_image,0,0);if(img.parentNode&&img.parentNode.replaceChild){img.parentNode.replaceChild(img.__pixastic_org_image,img);}
return img;}}else if(Pixastic.Client.isIE()){if(typeof img.__pixastic_org_style!="undefined")
img.style.cssText=img.__pixastic_org_style;}},Client:{hasCanvas:hasCanvas,hasCanvasImageData:hasCanvasImageData,hasGlobalAlpha:hasGlobalAlpha,isIE:function(){return!!document.all&&!!window.attachEvent&&!window.opera;}},Actions:{}}})();Pixastic.Actions.blurfast={process:function(params){var amount=parseFloat(params.options.amount)||0;var clear=!!(params.options.clear&&params.options.clear!="false");amount=Math.max(0,Math.min(5,amount));if(Pixastic.Client.hasCanvas()){var rect=params.options.rect;var ctx=params.canvas.getContext("2d");ctx.save();ctx.beginPath();ctx.rect(rect.left,rect.top,rect.width,rect.height);ctx.clip();var scale=2;var smallWidth=Math.round(params.width/scale);var smallHeight=Math.round(params.height/scale);var copy=document.createElement("canvas");copy.width=smallWidth;copy.height=smallHeight;var clear=false;var steps=Math.round(amount*20);var copyCtx=copy.getContext("2d");for(var i=0;i<steps;i++){var scaledWidth=Math.max(1,Math.round(smallWidth-i));var scaledHeight=Math.max(1,Math.round(smallHeight-i));copyCtx.clearRect(0,0,smallWidth,smallHeight);copyCtx.drawImage(params.canvas,0,0,params.width,params.height,0,0,scaledWidth,scaledHeight);if(clear)
ctx.clearRect(rect.left,rect.top,rect.width,rect.height);ctx.drawImage(copy,0,0,scaledWidth,scaledHeight,0,0,params.width,params.height);}
ctx.restore();params.useData=false;return true;}else if(Pixastic.Client.isIE()){var radius=10*amount;params.image.style.filter+=" progid:DXImageTransform.Microsoft.Blur(pixelradius="+radius+")";if(params.options.fixMargin||1){params.image.style.marginLeft=(parseInt(params.image.style.marginLeft,10)||0)-Math.round(radius)+"px";params.image.style.marginTop=(parseInt(params.image.style.marginTop,10)||0)-Math.round(radius)+"px";}
return true;}},checkSupport:function(){return(Pixastic.Client.hasCanvas()||Pixastic.Client.isIE());}}
