(function($) {
Drupal.behaviors.score_app = {
	attach: function(context,settings) {
		
		if(Drupal.settings.moodboard) {
						
			// ACCORDION-FX ON SELECTION-ITEMS
			$('.mb-items-title a').live('click',function(e) {
				if($(this).hasClass('open')) {
					$(this).removeClass('open');
					$(this).parents('.mb-items-title').next().slideUp();
				} else {
					$('.mb-items-title a.open').each(function() {
						$(this).removeClass('open');
						$(this).parents('.mb-items-title').next().slideUp();
					});
					$(this).addClass('open');
					$(this).parents('.mb-items-title').next().slideDown();
				}
				return false;
			});
			
			// OPEN FIRST CATEGORY OF ITEMS BY DEFAULT
			if(!$('#mb-node-items .mb-items-content').hasClass('mb-items-content-empty'))
				$('#mb-node-items .mb-items-title a').addClass('open').parents('.mb-items-title').next().show();
			else
				$('#block-views-moodboard-items .mb-items-title:first-child a').addClass('open').parents('.mb-items-title').next().show();
			
			// SET MOODBOARD NAME
			$('#moodboard-name').val(Drupal.settings.moodboard.name);
			
			// DRAG EVENT-LISTENERS
			$('#mb-select-container img').live('mousedown',moodboard.startDragging);
			$('.draggable-item').live('mousedown',moodboard.startDragging)
								.live('mouseenter',function(e) { $(this).find('.resize').show(); })
								.live('mouseleave',function(e) { $(this).find('.resize').hide(); });
			$('.resize').live('mousedown',moodboard.startResizing).live('click',function(e) { return false; });
			$('#moodboard').click(function(e) {
				if(moodboard.selectedItem && $(e.target).attr('id')=='moodboard') { 
					moodboard.selectedItem.removeClass('selected').removeClass('nota-wrapper-selected'); 
					moodboard.selectedItem = null; 
					moodboard.tmp.id=0;
				} 
			});
			
			// BUTTONS EVENT-LISTENERS
			$('#select_upload_btn a').click(moodboard.select_upload_file);
			$('#edit-upload').change(moodboard.select_file_for_upload);
			$('.z-up').click(moodboard.zUp);
			$('.z-down').click(moodboard.zDown);
			$('.add-nota').click(moodboard.addNota);
			$('.remove').click(moodboard.removeItem);
			//$('#moodboard-share a').click(moodboard.share);
			$('#moodboard-share').click(moodboard.share);
			$('#mb-email-merchant').click(moodboard.share_merchant);
			$('#mb-fb-share').click(moodboard.share_fb);
			
			
			/*$('#moodboard-saving').hide();
			$('#mb-share').show();
			$('#mb-share-wrapper').show();
			$('#mb-perma-link').attr('href','http://tintto.mia.be/nl/moodboard/20110825162434');
			$('#mb-fb-share').attr('href','http://www.facebook.com/sharer/sharer.php?u='+'http://tintto.mia.be/nl/moodboard/20110825162434');
			$('#moodboard-share-form').attr('action','http://tintto.mia.be/nl/moodboard/20110825162434');
			$('#moodboard-share-form-link').val('http://tintto.mia.be/nl/moodboard/20110825162434');*/
			
			// REFRESH MoodboardX ON SCREEN-RESIZE
			$(window).resize(moodboard.onResize);
			// INIT
			setTimeout(moodboard.init,200);
		}
	}
}

/** DEFINE MOODBOARD "CLASS" **/
moodboard = {
	// DEFINE VARS
	draggableItem:null,
	selectedItem:null,
	tmp:{mbX:0,mbY:0,mouseX:0,mouseY:0,mouseDeltaX:0,mouseDeltaY:0,id:0,nid:0,z:500},
	dropArea:{x1:0,x2:0,y1:0,y2:0},
	items:{},
	counter:0,
	scroller:null,
	originalData:{},
	
	// INITIALIZE
	init:function() {
		for(i in Drupal.settings.moodboard.data) moodboard.originalData[i] = Drupal.settings.moodboard.data[i];
		moodboard.tmp.mbX = $('#moodboard').offset().left;
		moodboard.tmp.mbY = $('#moodboard').offset().top;
		moodboard.dropArea.x1 = $('#moodboard').offset().left;
		moodboard.dropArea.y1 = $('#moodboard').offset().top;
		moodboard.dropArea.x2 = moodboard.dropArea.x1+$('#moodboard').width();
		moodboard.dropArea.y2 = moodboard.dropArea.y1+$('#moodboard').height();
		
		// SET SAVED ITEMS LIKE THEY SHOULD
		for(i in Drupal.settings.moodboard.data) {
			var data = Drupal.settings.moodboard.data[i];
			//console.log(data);
			if(data && data.id) {
				// ADD ITEM TO moodboard.items-VAR
				moodboard.items[data.id] = {'id':data.id,'nid':data.id.split('_')[0],x:data.x,y:data.y,z:data.z,w:data.w,h:data.h};
				moodboard.counter++;
				// IF ITEM = NOTA
				if(data.text)
					var newItem = $('<div></div>').append($('<textarea name="'+data.id+'" id="'+data.id+'" class="nota-content">'+data.text+'</textarea>'));
				// GET & CLONE IMAGE FROM "LIBRARY"
				else
					var newItem = $('<div></div>').append($('#mb-item-'+data.id.split('_')[0]+' img').clone());
				
				// SET SPECS FOR THIS ITEM
				newItem.attr('id',data.id)
					   .css({left:data.x+'px',top:data.y+'px','z-index':data.z,width:data.w+'px',height:data.h+'px'})
					   .addClass('draggable-item dropped'+(data.text?' nota-wrapper':''))
					   .append($('<a href="resize" class="resize"></a>'));
				// PLACE ON THE MOODBOARD
				$('#moodboard').prepend(newItem);
			}
		}
		
		// IF THE SHARE BUTTON HAS BEEN HIT, (IN PREVIOUS WINDOW), OPEN IT AGAIN
		if(window.location.hash=='#share') {
			$('#moodboard-saving').hide();
			$('#mb-share-wrapper').show();
			$('#mb-share').show();
			$('#moodboard-share').addClass('open');
			var href = window.location.origin+window.location.pathname;
			$('#mb-perma-link').attr('href',href).text(href);
			$('#mb-fb-share').attr('href','http://www.facebook.com/sharer/sharer.php?u='+href);
			$('#moodboard-share-form').attr('action',href);
			$('#moodboard-share-form-link').val(href);
		}		
	},
	
	onResize:function() {
		moodboard.tmp.mbX = $('#moodboard').offset().left;
		moodboard.tmp.mbY = $('#moodboard').offset().top;
		moodboard.dropArea.x1 = $('#moodboard').offset().left;
		moodboard.dropArea.y1 = $('#moodboard').offset().top;
		moodboard.dropArea.x2 = moodboard.dropArea.x1+$('#moodboard').width();
		moodboard.dropArea.y2 = moodboard.dropArea.y1+$('#moodboard').height();
	},
	
	// SELECT A FILE WHEN TRIGGERING THE SELECT BUTTON
	select_upload_file:function(e) {
		if($('#edit-link-field').val()!='') {
			$('#edit-link-field').addClass('mb-throbbing');
			$('#select_upload_btn').hide();
			document.getElementById('moodboard-form').submit();
		} else $('#edit-upload').trigger('click');
		return false;
	},
	// WHEN LOCAL FILE HAS BEEN SELECTED
	select_file_for_upload:function(e) {
		$('#edit-link-field').val(e.currentTarget.files[0].name).addClass('mb-throbbing');
		$('#select_upload_btn').hide();
		document.getElementById('moodboard-form').submit();
	},
	
	// START DRAGGING
	startDragging:function(e) {
		if(!$(e.target).hasClass('nota-content')) {
			moodboard.tmp.mouseX = e.pageX;
			moodboard.tmp.mouseY = e.pageY;
			if(moodboard.selectedItem) moodboard.selectedItem.removeClass('selected').removeClass('nota-wrapper-selected');
			// IF ITEM IS ALLREADY ON MOODBOARD, GRAB IT
			if($(this).hasClass('dropped')) {
				moodboard.draggableItem = $(this);
				moodboard.tmp.id = moodboard.draggableItem.attr('id');
				moodboard.tmp.mouseDeltaX = moodboard.tmp.mouseX-parseInt(moodboard.draggableItem.css('left'))-moodboard.tmp.mbX;
				moodboard.tmp.mouseDeltaY = moodboard.tmp.mouseY-parseInt(moodboard.draggableItem.css('top'))-moodboard.tmp.mbY;
			// MAKE A DUPLICATE TO ADD TO THE MOODBOARD
			} else {
				moodboard.tmp.nid = $(this).parents('.mb-item').attr('id').replace('mb-item-','');
				moodboard.tmp.id = moodboard.tmp.nid+'_'+moodboard.counter;
				moodboard.draggableItem = $('<div></div>').append($(this).clone());
				moodboard.draggableItem.attr('id',moodboard.tmp.id)
							 .offset(moodboard.mousePos())
							 .addClass('draggable-item')
							 .append($('<a href="resize" class="resize"></a>'));
				$('#moodboard-wrapper').append(moodboard.draggableItem);
				moodboard.tmp.mouseDeltaX = moodboard.draggableItem.width()/2;
				moodboard.tmp.mouseDeltaY = moodboard.draggableItem.height()/2;
			}
			//console.log(moodboard.tmp.mouseDeltaX,moodboard.tmp.mouseDeltaY);
			if(!moodboard.draggableItem.hasClass('dropped')) moodboard.draggableItem.offset(moodboard.mousePos());
			moodboard.selectedItem = moodboard.draggableItem;
			moodboard.draggableItem.addClass('dragging').fadeTo(10,0.4);
			$(document).bind('mouseup',moodboard.stopDragging);
			$(document).bind('mousemove',moodboard.drag);
			return false;
		}
	},
	
	// STOP DRAGGING
	stopDragging:function(e) {
		$(document).unbind('mouseup');
		$(document).unbind('mousemove');
		$('#moodboard').removeClass('highlight');
		if(moodboard.draggableItem) {
			moodboard.draggableItem.removeClass('dragging');
			if(!moodboard.drop()) {
				moodboard.removeItem();
			} else {
				// ADD ITEM TO THE MOODBOARD
				if(moodboard.items[moodboard.tmp.id]==undefined) {
					moodboard.items[moodboard.tmp.id] = {'id':moodboard.tmp.id,'nid':moodboard.tmp.nid,x:moodboard.getItemX(),y:moodboard.getItemY(),z:(moodboard.tmp.z+moodboard.counter++),w:120,h:120};
				} else {
					moodboard.items[moodboard.tmp.id].x = moodboard.getItemX();
					moodboard.items[moodboard.tmp.id].y = moodboard.getItemY();
				}
				moodboard.serializeZindex();
				moodboard.show_hide_actions();
				moodboard.draggableItem.addClass('dropped selected')
									   .css({'z-index':moodboard.items[moodboard.tmp.id].z,
											 'left':moodboard.items[moodboard.tmp.id].x,
											 'top':moodboard.items[moodboard.tmp.id].y});
				if(moodboard.draggableItem.hasClass('nota-wrapper')) moodboard.draggableItem.addClass('nota-wrapper-selected');
				$('#moodboard').prepend(moodboard.draggableItem);
			}
			moodboard.draggableItem.fadeTo(10,1);
			moodboard.draggableItem = null;
		}
		return false;
	},
	
	// START RESIZING
	startResizing:function(e) {
		var target = $(e.target).parent();
		target.addClass('resizing');
		$(document).bind('mouseup',moodboard.stopResizing);
		$(document).bind('mousemove',function(e) { moodboard.resizeItem(target,e.pageX,e.pageY); });
		return false;
	},
	
	// STOP RESIZING
	stopResizing: function(e) {
		$(document).unbind('mouseup');
		$(document).unbind('mousemove');
		$(e.target).parent().removeClass('resizing');
		return false;
	},
	
	// RESIZE
	resizeItem:function(target,pageX,pageY) {
		var w = pageX-target.offset().left-12;
		if(w>20) {
			target.width(w);
			if(!target.hasClass('nota-wrapper'))
				// KEEP ASPECT RATIO FOR IMAGES
				target.height(target.find('img').height());
			else target.height(pageY-target.offset().top-12);
		}
		return false;
	},
	
	// COUNT ITEMS
	show_hide_actions:function() {
		var countItems=0;
		for(i in moodboard.items) countItems++;
		if(countItems>0) $('.remove').fadeIn();
		else $('.remove').fadeOut();
		if(countItems>1) $('.z-btn').fadeIn();
		else $('.z-btn').fadeOut();
	},
		
	// DRAG
	drag:function(e) {
		moodboard.tmp.mouseX = e.pageX;
		moodboard.tmp.mouseY = e.pageY;
		//if(!$('#moodboard').hasClass('highlight')) { if(moodboard.drop()) $('#moodboard').addClass('highlight'); }
		//else { if(!moodboard.drop()) $('#moodboard').removeClass('highlight'); }
		moodboard.draggableItem.offset(moodboard.mousePos());
	},
	
	// DROP (Yes/No?)
	drop:function() {
		if((moodboard.tmp.mouseX>moodboard.dropArea.x1) &&
			(moodboard.tmp.mouseX<moodboard.dropArea.x2) &&
			(moodboard.tmp.mouseY>moodboard.dropArea.y1) &&
			(moodboard.tmp.mouseY<moodboard.dropArea.y2)) return true;
		return false;
	},
	
	// RETURN MOUSE POSITIONS
	mousePos:function() {
		return {left:moodboard.tmp.mouseX-moodboard.tmp.mouseDeltaX,top:moodboard.tmp.mouseY-moodboard.tmp.mouseDeltaY};
	},
	// GET ITEM X
	getItemX:function() {
		return moodboard.tmp.mouseX-moodboard.tmp.mouseDeltaX-moodboard.tmp.mbX;
	},
	// GET ITEM Y
	getItemY:function() {
		return moodboard.tmp.mouseY-moodboard.tmp.mouseDeltaY-moodboard.tmp.mbY;
	},
	
	// Z-INDEX UP
	zUp:function(e) {
		try{
			for(i in moodboard.items) {
				if(moodboard.items[i].z==(moodboard.items[moodboard.tmp.id].z+1)) {
					moodboard.items[i].z--;
					moodboard.items[moodboard.tmp.id].z++;
					break;
				}
			}
			// MAKE SURE THE z-indexes ARE SEQUENTIAL
			moodboard.serializeZindex();
		} catch(e) { console.log(e); }
		return false;
	},
	
	// Z-INDEX DOWN
	zDown:function(e) {
		try {
			for(i in moodboard.items) {
				if(moodboard.items[i].z==(moodboard.items[moodboard.tmp.id].z-1)) {
					moodboard.items[i].z++;
					moodboard.items[moodboard.tmp.id].z--;
					break;
				}
			}
			// MAKE SURE THE z-indexes ARE SEQUENTIAL
			moodboard.serializeZindex();
		} catch(e) { console.log(e); }
		return false;
	},
	
	// ADD NOTA
	addNota:function(e) {
		// GET & CLONE IMAGE FROM "LIBRARY"
		var nota = $('<div></div>').append($('<textarea name="nota-'+(moodboard.counter+1)+'" id="nota-'+(moodboard.counter+1)+'" class="nota-content"></textarea>')),
			w = 170,
			h = 70,
			x = (moodboard.dropArea.x1+moodboard.dropArea.x2)/2 - w/2 -moodboard.tmp.mbX,
			y = (moodboard.dropArea.y1+moodboard.dropArea.y2)/2 - h/2 -moodboard.tmp.mbY,
			z = (moodboard.tmp.z+moodboard.counter++);
		// ADD ITEM TO moodboard.items-VAR
		moodboard.items['nota-'+moodboard.counter] = {'id':'nota-'+moodboard.counter,'nid':null,x:x,y:y,z:z,w:w,h:h};
		// SET SPECS FOR THIS ITEM
		nota.attr('id','nota-'+moodboard.counter)
			.css({left:x+'px',top:y+'px','z-index':z,width:w+'px',height:h+'px'})
			.addClass('draggable-item dropped nota-wrapper selected nota-wrapper-selected')
//			.append($('<a href="edit-nota" class="edit-nota"></a>'))
			.append($('<a href="resize" class="resize"></a>'));
		// PLACE ON THE MOODBOARD
		$('#moodboard').append(nota);
		$('#nota-'+moodboard.counter).focus();
		moodboard.selectedItem = nota;
		return false;
	},
	
	// REMOVE ITEM
	removeItem:function(e) {
		try {
			// REMOVE THE SELECTED ITEM
			delete moodboard.items[moodboard.tmp.id];
			moodboard.selectedItem.remove();
			// SELECT A NEW ITEM
			var newId = '';
			for(i in moodboard.items) newId=i;
			moodboard.tmp.id = moodboard.items[newId].id;
			moodboard.selectedItem = $('#'+moodboard.items[newId].id);
			moodboard.selectedItem.addClass('selected');
			if(moodboard.selectedItem.hasClass('nota-wrapper')) moodboard.selectedItem.addClass('nota-wrapper-selected');
			// MAKE SURE THE z-indexes ARE SEQUENTIAL
			moodboard.serializeZindex();
			moodboard.show_hide_actions();
		} catch(e) { console.log(e); }
		return false;
	},
	
	// SERIALIZE Z-INDEX OF ALL ITEMS
	serializeZindex:function() {
		// GET ALL ITEMS INTO AN ARRAY FIRST (TO BE ABLE TO SORT)
		var arr = Array();
		for(id in moodboard.items) if(typeof(moodboard.items[id]) != 'function') arr.push(moodboard.items[id]);
		// SORT THE ARR ON Z-INDEX
		arr.sort(function(a,b) { return a.z-b.z; });
		// SERIALIZE THE Z-INDEXES OF THE moodboard.items-OBJECT
		var i=0;
		for(id in arr) {
			moodboard.items[arr[id].id].z = (moodboard.tmp.z+i++);
			$('#'+moodboard.items[arr[id].id].id).css({'z-index':moodboard.items[arr[id].id].z});
		}
	},
	
	// SAVE THIS MOODBOARD
	share:function(e) {
		if($(e.target).hasClass('open')) {
			$(e.target).removeClass('open');
			$('#mb-share-wrapper').hide();
				$('#moodboard-saving').show();
				$('#mb-share').hide();
		} else {
			$(e.target).addClass('open');
			// GET ITEMS INTO JSON-STRING
			var json = {};
			if(Drupal.settings.moodboard.data) json=Drupal.settings.moodboard.data;
			json.name = $('#moodboard-name').val();
			$('#moodboard .draggable-item').each(function() {
				var that = $(this),
					id = that.attr('id');
				json[id] = {
					id:id,
					x:that.css('left').replace('px',''),
					y:that.css('top').replace('px',''),
					z:that.css('z-index'),
					w:String(that.width()),
					h:String(that.height())
				};
				if(that.hasClass('nota-wrapper')) json[id].text = that.find('.nota-content').val().replace(/<\/?[a-z][a-z0-9]*[^<>]*>/ig, "");
			});
			$('#mb-share-wrapper').show();
			if($('#moodboard .draggable-item').length && (json!=moodboard.originalData)) {
				for(i in json) moodboard.originalData[i] = json[i];
				$.get('/'+Drupal.settings.moodboard.language.prefix+'/moodboard/'+Drupal.settings.moodboard.nid+'/save',json,function(result) {
					/*$('#moodboard-saving').hide();
					$('#mb-share').show();
					$('#mb-perma-link').attr('href',result.redirect).text(result.redirect);
					$('#mb-fb-share').attr('href','http://www.facebook.com/sharer/sharer.php?u='+result.redirect);
					$('#moodboard-share-form').attr('action',result.redirect);
					$('#moodboard-share-form-link').val(result.redirect);*/
					window.location = result.redirect+'#share';
				});
			} else {
				/*$('#moodboard-saving').hide();
				$('#mb-share').show();*/
				window.location = window.location.href+'#share';
			}
		}
	},
	
	share_fb: function(e) {
		var href=$(e.target).attr('href');
		window.open(href,'share_fb','menubar=0,resizable=1,scrollbars=0,status=0,titlebar=0,toolbar=0,width=560,height=330');
		window.location = href.replace('http://www.facebook.com/sharer/sharer.php?u=','');
		return false;
	},
	
	share_merchant:function(e) {
		if($('#mb-share-merchant-form').hasClass('open'))
			$('#mb-share-merchant-form').slideUp().removeClass('open');
		else
			$('#mb-share-merchant-form').slideDown().addClass('open');
		return false;
	}
}
	
})(jQuery);;
/*
	--------------------------------------------------------------------------
	(c) 2007 Lawrence Akka
	 - jquery version of the spamspan code (c) 2006 SpamSpan (www.spamspan.com)

	This program is distributed under the terms of the GNU General Public
	Licence version 2, available at http://www.gnu.org/licenses/gpl.txt
	--------------------------------------------------------------------------
*/

(function ($) { //Standard drupal jQuery wrapper.  See http://drupal.org/update/modules/6/7#javascript_compatibility
// load SpamSpan
Drupal.behaviors.spamspan = {
  attach: function(context, settings) {
// get each span with class spamspan
       $("span.spamspan", context).each(function (index) {
// for each such span, set mail to the relevant value, removing spaces
	    var _mail = ($("span.u", this).text() +
	    	"@" +
	    	$("span.d", this).text())
	    	.replace(/\s+/g, '')
	    	.replace(/\[dot\]/g, '.');
// Find the header text, and remove the round brackets from the start and end
	    var _headerText = $("span.h", this).text().replace(/^ ?\((.*)\) ?$/, "$1");
	    // split into individual headers, and return as an array of header=value pairs
	    var _headers = $.map(_headerText.split(/, /), function(n, i){
            return (n.replace(/: /,"="));
          });
// Find the anchor text, and remove the round brackets from the start and end
	    var _anchorText = $("span.t", this).text().replace(/^ \((.*)\)$/, "$1");
// Build the mailto URI
  var _mailto = "mailto:" + encodeURIComponent(_mail);
  var _headerstring = _headers.join('&');
  _mailto += _headerstring ? ("?" + _headerstring) : '';
// create the <a> element, and replace the original span contents
   	    $(this).after(
		$("<a></a>")
		.attr("href", _mailto)
		.html(_anchorText ? _anchorText : _mail)
		.addClass("spamspan")
		).remove();
	} );
}
};
}) (jQuery);;

