var dialog;

function init_dialog ()
{
	if (!dialog)
	{
		dialog = document.createElement('div');
		dialog.className = 'flora';
		document.body.appendChild(dialog);
	}
}

function get_selection()
{
	var txt = '';
	if (window.getSelection)
		txt = window.getSelection();
	else if (document.getSelection)
		txt = document.getSelection();
	else if (document.selection)
		txt = document.selection.createRange().text;
	else
		return;

	if (txt.toString)
		txt = txt.toString();

	return txt;
}

function global_key_down (e)
{
	if ((e.shiftKey == true) && (e.keyCode == 68))
	{
		e.preventDefault();
		var sel = get_selection();
		var content = selcode = '';
		
		if (sel.indexOf("\\n") == -1 && (sel.indexOf(' ') == -1 || sel.indexOf(' ') == sel.length - 1))
		{
			for (var i = 0; i < sel.length; i++)
				selcode += sel.charCodeAt(i) + ' ';
			content = '<strong style="font-size:larger;display:block;text-align:center">' + sel + '</strong><br /><br />' + selcode;
		} else
			content = 'Please select only one word or character to use this feature.';
		
		init_dialog();
		dialog = $(dialog)
			.html(content)
			.dialog({title:'Selection',resize:false,position:'center',drag:false});
	}
}

$(document).keydown(global_key_down);

dojo.require('dojo.widget.Dialog');

dialog_box = function (params) {
	var dialogNode = document.createElement('div');
	var dialogContainerNode = document.createElement('div');
	dialogContainerNode.id = 'dialogcontainer';
	var dialogCloseNode = document.createElement('a');
	dialogCloseNode.id = 'dialogclose';
	dialogCloseNode.innerHTML = 'X';
	var dialogTitleNode = document.createElement('h2');
	var dialogContentNode = document.createElement('div');
	dialogContentNode.id = 'dialogcontent';
	dialogNode.appendChild(dialogContainerNode);
	dialogContainerNode.appendChild(dialogCloseNode);
	dialogContainerNode.appendChild(dialogTitleNode);
	dialogContainerNode.appendChild(dialogContentNode);
	document.body.appendChild(dialogNode);
	
	this.dialogWidget = dojo.widget.createWidget('Dialog', {
		widgetId: 'dialog',
		bgColor: '#000000',
		bgOpacity: '0.6',
		toggle: 'fade',
		toggleDuration: '400',
		blockDuration: '175',
		executeScripts: true,
		scriptScope: this
	}, dialogNode);
	
	this.dialogCotentWidget = dojo.widget.createWidget('ContentPane', {
		widgetId: 'dialogcontentpane',
		executeScripts: true
	}, dialogContentNode);
	
	this.dialogCotentWidget.onLoad = dojo.lang.hitch(this, function () {
		this.dialogWidget.placeDialog();
	});
	
	this.setUrl = function (url) {
		this.dialogCotentWidget.setUrl(url);
	}

	this.setParams = function (params) {
		if (params) {
			if (params.title != null)
				dialogTitleNode.innerHTML = params.title;
			if (params.content != null)
				this.dialogCotentWidget.setContent(params.content);
			if (params.width)
				this.dialogWidget.domNode.style.width = params.width;
			if (params.height)
				this.dialogWidget.domNode.style.height = params.height;
		}
	}
	
	this.setParams(params);
	this.onLoad = function (func) {
		this.dialogWidget.onLoad = func;
	}
	this.placeDialog = function () {
		this.dialogWidget.placeDialog();
	}
	this.show = function () {
		this.dialogWidget.show();
		/*dojo.html.disableSelection(this.dialogWidget.domNode);*/
		this.dialogWidget.domNode.style.display = '';
		this.setCloseControl($('#dialogclose'));
	}
	this.hide = function () {
		this.dialogWidget.domNode.style.display = 'none';
		this.dialogWidget.hide();
		this.dialogCotentWidget.destroy();
		this.dialogWidget.destroy();
		var underlays = dojo.html.getElementsByClass('dialogUnderlay');
		for (var x = 0; x < underlays.length; x++) {
			dojo.dom.removeNode(underlays[x]);
		}
	}
	this.setCloseControl = function(node) {
		dojo.event.connect(node, 'onclick', this, 'hide');
	}
	this.setShowControl = function(node) {
		dojo.event.connect(node, 'onclick', this, 'show');
	}
}

function show_login () {
	var content = 
		'<form method="post" action="" id="loginform"><span id="loginmessage"></span>' + 
		'<div><label for="loginname">Username:</label> ' +
		'<input type="text" name="login[username]" accesskey="u" id="loginname" /><br />' +
		'<label for="loginpassword">Password:</label>' +
		'<input type="password" name="login[password]" accesskey="p" id="loginpassword" /><br />' +
		'<input type="submit" value="Login" /><br />' +
		'<input type="checkbox" name="login[autologin]" accesskey="r" id="loginremember" checked="checked" class="checkbox" />' +
		'<label for="loginremember"> Remember Me</label></div>' +
		'</form>';
	
	init_dialog();
	dialog = $(dialog)
				.html(content)
				.dialog({title:'Login',resize:false,position:'center',drag:false});
	
	$('#loginform').submit(function (e) {
		e.preventDefault();
		$.ajax({
			url: main_dir + 'scripts/login',
			type: 'POST',
			cache: false,
			complete: function(XMLHttpRequest, textStatus){
				data = XMLHttpRequest.responseText;
				if (data == 1 || data == 2) { window.location = '/';}
				else { $('#loginmessage').html(data); }
			},
			error: function() {
				alert('Sorry there was an internal error while logging in, please try again later.'); 
			},
			data: $('#loginform').serialize()
		});
	});
}

var card_dialog_loading = 0;

function card_dialog_request (params) {
	dojo.io.bind({
		method: 'post',
		preventCache: true,
		url: main_dir + 'scripts/card/dialog',
		content: (params.content ? params.content : {}),
		load: (params.load ? params.load : function () {}),
		error: (params.error ? params.error : function () {alert('Sorry, there was an internal error.  Please try again later.')}),
		timeout: (params.timeout ? params.timeout : function () {alert('Sorry, the request timed out.  Please try again later.')}),
		mimetype: (params.mimetype ? params.mimetype : 'text/json'),
		formNode: (params.formNode ? params.formNode : null)
	});
}

function card_dialog (params) {
	if (!card_dialog_loading) {
		card_dialog_loading = 1;
		card_dialog_request({
			content: params,
			load: dojo.lang.hitch(this, function(type, data, evt) {
				card_dialog_loading = 0;
				dialog = new dialog_box(data.dialog);
				if ($('#carddialogform')) {
					var on_dialog_done = dojo.lang.hitch(this, function() {
						dialog.hide()
					});
					var on_dialog_submit = dojo.lang.hitch(this, function(e) {
						e.preventDefault();
						card_dialog_request({
							content: params,
							load: dojo.lang.hitch(this, function(type, data, evt) {
								if (data.ok && data.done) on_dialog_done();
								else if (data.ok && data.dialog) {
									dialog.setParams(data.dialog);
									if ($('#carddialogform')) dojo.event.connect($('#carddialogform'), 'onsubmit', on_dialog_submit);
									if ($('#carddialogcancel')) dojo.event.connect($('#carddialogcancel'), 'onclick', on_dialog_done);
									if (data.eval) eval(data.eval);
								} else alert('Sorry, there was an error while saving.');
							}),
							formNode: $('#carddialogform')
						});
					});
					dojo.event.connect($('#carddialogform'), 'onsubmit', on_dialog_submit);
					if ($('#carddialogcancel')) dojo.event.connect($('#carddialogcancel'), 'onclick', on_dialog_done);
					if (data.eval) eval(data.eval);
				}
				dialog.show();
			})
		});
	}
}


pic1 = new Image(100,25); 
pic1.src='/templates/nihongo/images/buttonhover.jpg'; 