jQuery.extend({
	postJSON: function( url, data, callback ) {
		return jQuery.post(url, data, callback, "json");
	}
});

jQuery(document).ready(function()
{
	MD.GetMemberInfo();
/*
	jQuery("#MemberInfo").bind("ajaxSend", function(){
		jQuery(this).addClass("divLoading");
	}).bind("ajaxComplete", function(){
		jQuery(this).removeClass("divLoading");
	});
*/	
	$('a.md-gallery').click(function(ev)
	{
		$link = $(this);
		MD.ShowPicture($link);
		return false;
	});
	
	
});

function GUIDGen() 
{
	try
	{
		var x = new ActiveXObject("Scriptlet.TypeLib");
		return (x.GUID).substr(0, 38);
	}
	catch (e)
	{
		var dateObject = new Date();
		var uniqueId = dateObject.getFullYear() + '' + dateObject.getMonth() + '' + dateObject.getDate() + '' + dateObject.getTime();
		return uniqueId;
	}
}


function showProp(obj)
{
	str='';
	for(prop in obj)
	{
		str+=prop + " : "+ obj[prop]+"\n";
	}
	return(str);
}

var MD = {

	Submit: function (el)
	{
		$(el).submit();
//		return false;
	},
	
	Reset: function (el)
	{
		$(el)[0].reset();
	},

	Ajax: function (el)
	{
		var data = $(el).serialize();
		var url = $(el).attr('action');
		$.postJSON(url, data, function(resp)
		{
			if ( $("#dialog").length > 0 )
			{
				$('#dialog').html(resp.msg);
				$("#dialog").dialog("open");		
			}
			else MD.Popup(resp.msg);
		});
		
		MD.Reset(el);
	},

	Call: function (url)
	{
		$.postJSON(url, function(resp)
		{
			if ( $("#dialog").length > 0 )
			{
				$('#dialog').html(resp.msg);
				$("#dialog").dialog("open");		
			}
			else MD.Popup(resp.msg);
		});
	},

	auto_age: function ( age ) {
//		var selected = $('#ageto :selected');

		if ( (age + 8)  > 90 ) var index = $('#ageto')[0].selectedIndex = document.getElementById('ageto').length - 1;
		else $('#ageto')[0].selectedIndex = age + 8;
	},

	Cities: function(value, field, city)
	{
		if(isNaN(city))
			city = '';
			
		$.postJSON('/_rpc/cities.md', { state: value },function(jsonData) {
			var options = '<option value="0">Välj</option>';
			$.each(jsonData, function(key,object)
			{
				if(city == key) sel = ' selected="selected"';
				else sel = '';
				
				options += '<option value="'+key+'"'+sel+'>'+object+'</option>';
			})
			$(field).removeAttr("disabled").html(options);
		});
	},
	

	CheckLogin: function ()
	{
		var dont = false;
	
		var user = $('#un').val();
		var pass = $('#pw').val();
	
		if(dont) return false;
		else if(user.length>2 && pass.length>2)
			dont = true;
			
		if (user.length<3)
		{
			alert('Ditt användarnamn är för kort, det måste bestå av minst 3 tecken!');
			user.focus();
			return false;
		}
	
		if (pass.length<3)
		{
			alert('Ditt lösenord är för kort, det måste bestå av minst 3 tecken!');
			pass.focus();
			return false;
		}
		$('#login').submit();
	},

	DelMailRow: function(el)
	{
		var data = $(el).serialize();
		var url = $(el).attr('action');
		$.postJSON(url, data, function(resp)
		{
			$box = $('input:checkbox');
			
			$.each($box, function()
			{
				if($(this).is(':checked'))
				{
					value = $(this).val();
					$('#mail' + value).fadeOut("slow");
				}
			});
		});
	},

	DelBlogRow: function(blogID) {
		var $row = $('#blog-' + blogID);
		
		$.getJSON('/_rpc/member_edit.md?action=blogDel&blogID=' + blogID, function(json)
		{
			$('#message').fadeIn("slow").html(json.msg).fadeOut("slow");
			$row.hide();
		});
	},

	DelSaveRow: function(saveID) {
		var $row = $('#row-' + saveID);
		
		$.postJSON('/_rpc/saveas.md', { action: 'delete', saveID: saveID }, function(json)
		{
//			$('#message').fadeIn("slow").html(json.msg).fadeOut("slow");
			$row.fadeOut("slow");
		});
	},

	DelFlirtRow: function(flirtID) {
		var $row = $('#row-' + flirtID);
		
		$.postJSON('/_rpc/message_send.md', { action: 'flirtdel', flirtID: flirtID }, function(json)
		{
//			$('#message').fadeIn("slow").html(json.msg).fadeOut("slow");
			$row.fadeOut("slow");
		});
	},

	GetMemberInfo: function()
	{
		var $box = $('#MemberInfo');
		
		$.postJSON('/_rpc/memberinfo.md', function(json)
		{
			if(json.userid)
			{
				var html = 'Välkommen <a href="mem_edit.md" class="f_bold c_gray" onclick="MD.Modal(this.href); return false">'+json.username+'</a>';
				html += '<p>Du har <a href="mem_mail.md" class="f_bold">'+json.messages+'</a> nya meddelanden<br />';
				html += 'Du har <a href="mem_flirt.md" class="f_bold">'+json.flirts+'</a> nya flirtar</p>';
				html += '<p class="c_gray">Ditt medlemskap gäller tom '+json.membership+'</p>';
				html += '<a href="login.md?action=logout">Logga ut</a>';
	
				setTimeout(function(){ MD.GetMemberInfo() }, 300000);

			}
			else
				var html = json.html;
			
			$box.html(html);
		});		
	},

	ShowPicture: function ($link)
	{
		var src = $link.attr('href');
		var title = $link.children('img').attr('alt');
		var w = $link.attr('width');
		
//			$modal.length ? $modal.dialog('open') : $('<img alt="'+title+'" style="padding: 8px;" />').attr('src',src).appendTo('body').dialog({
		$('<img alt="'+title+'" style="padding:5px 0px;" />').attr('src',src).appendTo('body').dialog({
			title: title,
			modal: 'true',
			resizable: false,
			position: 'top',
			width: w + 'px'
		});
	},

	SendMessage: function (el)
	{
		var data = $(el).serialize();
		var url = '_rpc/message_send.md';
		$.post(url, data, function(msg)
		{
			MD.Popup(msg);
		});
	},

	ReadMessage: function (message)
	{
		var $row = $('#mail'+message);
		var $message = $('#Message');
		var $reply = $('#mailID');
		var $ID = $('#userID');
		
		$('.open').parent().parent().css({ "background-color": "" });
		$('.open').parent().html('&nbsp;');
		
		$.postJSON('/_rpc/mail.md', ({ messageID: message }), function(json)
		{
			if(json.mailID)
			{
				var html = 'Ämne: '+json.subject+'<br />';
				html += 'Datum: '+json.sendtime+'<br />';
				html += 'Meddelande:<br />';
				html += '<div class="ViewMessage" id="Message">'+json.message+'</div>';
				$reply.val(json.mailID);
				$ID.val(json.fromuser);
				$row.css({ "background-color": "#cef4e7" });
				
				$('#MailStatus' + message).html('<span class="open c_pink bold size11">Öppen</span>');
			}
			else
				var html = 'Meddelandet finns ej';
			
			$message.addClass('td_white').html(html);
		});	
	},

	Popup: function (value, title)
	{
		if(isNaN(title))
			title = 'Meddelande';
	
		$("body").after('<div id="dialog">'+value+'</div>');
		$("#dialog").dialog({
			modal: true,
			autoOpen: false,
			title: title,
			width: 600,
			position: 'top',
			buttons: { Ok: function() { $(this).dialog('close'); } }
		});
		$("#dialog").dialog("open");		
	},

	Modal: function (value)
	{
		$("body").after('<div id="dialog"></div>');
		$("#dialog").dialog({
			modal: true,
			autoOpen: false,
			width: 600,
			minWidth: 400,
			maxWidth: 600,
			position: 'top',
		});
		$("#dialog").load(value, function(resp) {
			$(this).html(resp);
			var $text = $('#dialog span:first');
			$text.hide();
			$("#dialog").dialog('option', 'title', $text.text())
			$("#dialog").dialog("open");
		});
    }
}

var MemEdit = {
	Tabs: function() {
		$("#EditMain").tabs();
	},

	Gallery: function() {
		// there's the gallery and the trash
		var $gallery = $('#gallery'), $trash = $('#trash');

		// let the gallery items be draggable
		$('li',$gallery).draggable({
			cancel: 'a.ui-icon',// clicking an icon won't initiate dragging
			revert: 'invalid', // when not dropped, the item will revert back to its initial position
			containment: $('#demo-frame').length ? '#demo-frame' : 'document', // stick to demo-frame if present
			helper: 'clone',
			cursor: 'move'
		});

		// let the trash be droppable, accepting the gallery items
		$trash.droppable({
			accept: '#gallery > li',
			activeClass: 'ui-state-highlight',
			drop: function(ev, ui) {
				deleteImage(ui.draggable);
			}
		});

		// let the gallery be droppable as well, accepting items from the trash
		$gallery.droppable({
			accept: '#trash li',
			activeClass: 'custom-state-active',
			drop: function(ev, ui) {
				recycleImage(ui.draggable);
			}
		});

		// image deletion function
		function deleteImage($item) {
			var id = $item.attr('id');
			var url = '/_rpc/member_edit.md?action=restore_image';
			var recycle_icon = '<a href="'+url+'&image='+id+'" title="Återställ bilden" class="ui-icon ui-icon-refresh">Återställ bilden</a>';
			$.ajax({ type: "POST", url: '/_rpc/member_edit.md?action=erase_image', data: { image: id } , success: function(msg) { 
				if(msg == 'OK')
				{
					$item.fadeOut(function() {
						var $list = $('ul',$trash).length ? $('ul',$trash) : $('<ul class="gallery ui-helper-reset"/>').appendTo($trash);
						$item.find('a.ui-icon-trash').remove();
						$item.append(recycle_icon).appendTo($list).fadeIn(function() {
							$item.animate({ width: '48px' }).find('img').animate({ height: '35px', width: '35px' });
						});
					});
				}
				else
					alert('Fel: ' + msg);
			}});
		}

		// image recycle function
		function recycleImage($item) {
			var id = $item.attr('id');
			var url = '/_rpc/member_edit.md?action=erase_image';
			var trash_icon = '<a href="'+url+'&image='+id+'" title="Radera bilden" class="ui-icon ui-icon-trash">Radera bilden</a>';

			$.ajax({ type: "POST", url: '/_rpc/member_edit.md?action=restore_image', data: { image: id } , success: function(msg) { 
				if(msg == 'OK')
				{
					$item.fadeOut(function() {
						$item.find('a.ui-icon-refresh').remove();
						$item.append(trash_icon).appendTo($gallery).fadeIn(function() {
							$item.animate({ width: '90px' }).find('img').css({ height: '90px', width: '90px' });
						});
					});
				}
				else
					alert('Fel: ' + msg);
			}});
		}

		// image preview function, demonstrating the ui.dialog used as a modal window
		function viewLargerImage($link) {
			var src = $link.attr('href');
			var title = $link.siblings('img').attr('alt');
			var $modal = $('img[src$="'+src+'"]');
			var w = $link.attr('width');
			

//			$modal.length ? $modal.dialog('open') : $('<img alt="'+title+'" style="padding: 8px;" />').attr('src',src).appendTo('body').dialog({
			$('<img alt="'+title+'" style="padding:5px 0px;" />').attr('src',src).appendTo('body').dialog({
				title: title,
				modal: 'true',
				resizable: false,
				position: 'top',
				width: w + 'px',
				overlay: {
					backgroundColor: '#000',
					opacity: 0.9
				}
			});
		}

		// resolve the icons behavior with event delegation
		$('ul.gallery > li').click(function(ev) {
			var $item = $(this);
			var $target = $(ev.target);

			if ($target.is('a.ui-icon-trash')) {
				deleteImage($item);
			} else if ($target.is('a.ui-icon-zoomin')) {
				viewLargerImage($target);
			} else if ($target.is('a.ui-icon-refresh')) {
				recycleImage($item);
			}

			return false;
		});
	},
	
	Slider: function (name, output, param)
	{	
/*		if(isNaN(param))
			param = ({ min: 268, max: 272, def: 268 });
*/
		$(name).slider({
			orientation: "horizontal",
			value: param.def,
			min: param.min,
			max: param.max,
			step: 1,
			slide: function(event, ui) {
				$(output+'f').val(ui.value);
				SliderValue(output, ui.value);
			}
		});
		val = $(name).slider("value");
		SliderValue(output, val);

		function SliderValue(output, value)
		{
			$.postJSON('/_rpc/slider.md', { questID: value }, function(jsonData) {
				$(output).html(jsonData.value);
			});
		}
	},
	
	Progress: function (field, value)
	{
	    $(field).progressbar({ value: value });
	}
}

var IMG = {
	// prefix for all "over" images
	imagebase : 'media/images/btn_',

	// flag for IE
	IE6 : false,

	// Initialize all menus for rollover
	menuinit : function() {
		if (IMG.IE6) {
			selector = 'span';
		} else {
			selector = 'img';
		}

		$('#Menu ' + selector).hover(function() {
			IMG.over(this);
		}, function() {
			IMG.out(this);
		});
	},

	// Swap image to non-rolled-over state
	out : function(elt) {
		IMG.setpng(elt, IMG.imagebase + $(elt).attr('id') + '.jpg');
	},

	// Swap image to rolled-over state
	over : function(elt) {
		IMG.setpng(elt, IMG.imagebase + $(elt).attr('id') + '-over.jpg');
	},

	// Preload rollover images and set the image name prefix.
	preloadimages : function() {
		base = arguments[0];
		IMG.imagebase = base;

		for(var i = 1; i<arguments.length; i++) {
			jQuery("<img>").attr("src", base + arguments[i]);
		}
	},

	// Set the source png for an element.
	setpng : function(elt, src) {
		if (IMG.IE6) {
			// this is the magic which loads a png, preserving
			// transparency.
			$(elt).css('filter', "progid:DXImageTransform." +
							+ "Microsoft.AlphaImageLoader(src=\'"
							+ src + "\', sizingMethod='scale');");
		} else {
			$(elt).attr('src', src);
		}
	}
}