/**
*
*  AJAX IFRAME METHOD (AIM)
*  http://www.webtoolkit.info/
*
**/

var upload_actions = {
	add_comment:     '/ajax/content/comment/add.html',
	add_article:     '/ajax/content/humor/add.html',
	preview_article: '/ajax/content/humor/preview.html'
}

AIM = {

	frame : function(c) {

		var n = 'f' + Math.floor(Math.random() * 99999);
		var d = document.createElement('DIV');
		d.innerHTML = '<iframe style="display:none" src="about:blank" id="'+n+'" name="'+n+'" onload="AIM.loaded(\''+n+'\')"></iframe>';
		document.body.appendChild(d);

		var i = document.getElementById(n);
		if (c && typeof(c.onComplete) == 'function') {
			i.onComplete = c.onComplete;
		}

		return n;
	},

	form : function(f, name) {
		f.setAttribute('target', name);
	},

	submit : function(f, c) {
		AIM.form(f, AIM.frame(c));
		if (c && typeof(c.onStart) == 'function') {
			return c.onStart();
		} else {
			return true;
		}
	},

	loaded : function(id) {
		var i = document.getElementById(id);
		if (i.contentDocument) {
			var d = i.contentDocument;
		} else if (i.contentWindow) {
			var d = i.contentWindow.document;
		} else {
			var d = window.frames[id].document;
		}
		if (d.location.href == "about:blank") {
			return;
		}

		if (typeof(i.onComplete) == 'function') {
			i.onComplete(d.body.innerHTML);
		}
	}

}

function startCallback() {
	// make something useful before submit (onStart)
	AIM.button.attr('disabled', 'disabled'); 
	AIM.button.css({cursor: 'wait'});
	return true;
}

function completeCallback(response) {
	if(response.match( /^<script/ )) {
		eval($(response).text());
	} else {
		AIM.div.html(response);
	}
	AIM.button.css({cursor: 'pointer'});
}

function add_comment(form) {
	form.action = upload_actions['add_comment'];
	return AIM.submit(form, {
		onStart: function(){
			//form.submit();
			return true;
		}, 
		onComplete: function(res){
			form.removeAttribute('target');
			if(res.match( /^<script/ )) {
				eval($(res).text());
			} else {
				if($('fieldset div.notify-box.notify-error').length > 0) {
					$('fieldset div.notify-box.notify-error').replaceWith(res);
				} else {
					$(form).before(res);
				}
			}
		}
	});
}

function add_article(form) {
	form.action = upload_actions['add_article'];
	return AIM.submit(form, {
		onStart: function(){
			//form.submit();
			return true;
		}, 
		onComplete: function(res){
			form.removeAttribute('target');
			if(res.match( /^<script/ )) {
				eval($(res).text());
			} else {
				log_message(res);
			}
		}
	});
}

function preview_article(form) {
	var old_action = form.action;
	form.action = upload_actions['preview_article'];
	return AIM.submit(form, {
		onStart: function(){
			form.submit();
			//return true;
		}, 
		onComplete: function(res){
			form.action = old_action;
			form.removeAttribute('target');
			if(res.match( /^</ )) {
				$('#preview-article').html(res);
			} else {
				log_message(res);
			}
		}
	});
}
