jQuery(function($){

	var aForm = {}, ajaxFormTimer = null;

	$.fn.ajaxForm = function(successCallback) {

		if (!this.length) {
			log("ajaxForm: ignoring function - no element selected");
			return this;
		}

		if (successCallback == undefined) {

			successCallback = false;
		}

		aForm["obj"] = $(this);
		aForm["submitBtn"] = aForm["obj"].find("input[type=submit]");
		aForm["feedback"] = $(document.createElement("div")).prop("id", "feedback");
		aForm["obj"].prepend(aForm["feedback"]);

		aForm["obj"].bind("submit",function(){

			ajaxFormTimer = setTimeout('$.ajaxFormTimeout()', 30000);

			aForm["submitBtn"].prop("disabled", true);
			aForm["obj"].css("opacity", 0.4);

			aForm["current"] = $.ajax({
				type: "POST",
				url: aForm["obj"].attr("action"),
				cache: false,
				data: aForm["obj"].serializeArray(),
				dataType: "json"
			});

			if (successCallback) {

				var customCallback = "$." + successCallback + "(data)";

				aForm["current"].success(function(data) { clearTimeout(ajaxFormTimer); eval(customCallback) });

			} else {

				aForm["current"].success(function(data) { clearTimeout(ajaxFormTimer); $.ajaxFormSuccess(data) });
			}

			return false;
		}).find("input:first").focus();

		return aForm;
	}

	$.ajaxFormTimeout = function() {

		var feedbackContent = '<div class="error"><div>It looks like something went wrong or the process is running to long. Please try again or leave us a message at info [at] admeen (dot) com.</div><ul>';
		aForm["feedback"].empty().html(feedbackContent);
		aForm["submitBtn"].prop("disabled", false);
		aForm["obj"].css("opacity", 1);
	}

	$.ajaxFormSuccess = function(data){

		var feedbackContent = "";
		var errorFocus = false;

		if(data.type=="error") {

			feedbackContent += '<div class="error"><div>'+data.feedback[0]+'</div><ul>';

			$.each(data.feedback[1],function(index,item){

				if(!errorFocus) {

					errorFocus = item[0];
				}

				feedbackContent += "<li>"+item[1]+"</li>";
			});

			feedbackContent += "</ul></div>";

			if(errorFocus) {

				aForm["obj"].find("#"+errorFocus).focus();
				var offset = aForm["feedback"].offset();
				$.scrollTo( parseInt(offset.top)-15, { duration:300});
			}
		}

		if(data.type=="success") {

			aForm["obj"][0].reset();
			aForm["obj"].find("input:first").focus();
			feedbackContent = '<div class="success">'+data.feedback+'</div>';
		}

		aForm["feedback"].empty().html(feedbackContent);
		aForm["submitBtn"].prop("disabled", false);
		aForm["obj"].css("opacity", 1);
	}

	$.ajaxNoticeAndTakedownFormSuccess = function(data){

		var feedbackContent = '';
		var errorFocus = false;

		aForm["obj"].find(".row.error,.checkbox_row.error").removeClass("error");

		if(data.type=='error') {

			feedbackContent += '<div class="error"><div>'+data.feedback[0]+'</div><ul>';

			$.each(data.feedback[1],function(index,item){

				if(!errorFocus) {

					errorFocus = item[0];
				}

				feedbackContent += '<li>'+item[1]+'</li>';
				aForm["obj"].find("#"+item[0]).closest("div[class*=row]:not([class*=radio_row])").addClass("error");
			});

			feedbackContent += '</ul></div>';
			aForm["feedback"].prependTo(aForm["obj"]);

			if(errorFocus) {

				var offset = aForm["feedback"].offset();
				$.scrollTo( parseInt(offset.top)-15, { duration:300});
			}

			aForm["feedback"].empty().html(feedbackContent);
		}
		if(data.type=='success') {

			var success = $('#success');
			aForm["obj"].find("input:not(#Save,#Print),textarea,select").blur().attr("disabled",true).addClass("disabled");
			var save = success.show().find("#Save"), print = success.find("#Print"), edit = success.find("#edit");

			save.bind("click",function(){

				$.ajax({
					url:"actions/ajax_noticeandtakedown_mail.php?type=pdf",
					success: function(){
						window.location.href = "noticeandtakedown_save.php";
					}
				});
				return false;
			});

			print.bind("click",function(){

				$.ajax({
					url:"actions/ajax_noticeandtakedown_mail.php?type=print",
					success: function(){
						window.open("noticeandtakedown_print.php");
					}
				});
				return false;
			});

			edit.bind("click",function(){

				aForm["obj"].find("input:not(#Save,#Print),textarea,select").removeAttr("disabled").removeClass("disabled");
				save.unbind("click");
				print.unbind("click");
				edit.unbind("click");
				success.hide();
				return false;
			});

			aForm["feedback"].prependTo(success);
			var offset = success.offset();
			$.scrollTo( parseInt(offset.top)-15, { duration:300 });
			feedbackContent = '<div class="success">'+data.feedback+'</div>';
			aForm["feedback"].empty().html(feedbackContent);
		}

		aForm["submitBtn"].prop("disabled", false);
		aForm["obj"].css("opacity", 1);
	}

});

function log() {
	if (window.console && window.console.log)
		window.console.log('[admeen.com] ' + Array.prototype.join.call(arguments,''));
};





var setModal = function(el) {
	var hash = niceTitle(el.title);
	jQuery.each(modal,function(index,value){
		value.jqmHide();
	});
	jQuery('#modal'+hash).jqmShow();
};
var hideModal = function(hash) {
	window.location.href = '#';
	hash.w.hide(0,function(){ hash.o.remove(); });
};
var niceTitle = function(hash) {
	return jQuery.trim(hash).replace(/[^a-zA-Z0-9]+/g,'');
};
var modal = {}, anchor = window.location.hash.substring(1);
jQuery(function(){
	jQuery(document.body).mousemove(function(e) { moveOverup(e); });

	jQuery('.modal').each(function(){
		var obj = jQuery(this), nw = niceTitle(obj.attr('title'));
		jQuery(document.createElement('div'))
			.attr('id','modal'+niceTitle(obj.attr('title')))
			.addClass('jqmWindow')
			.append(
				jQuery(document.createElement('img'))
					.attr({'src':'http://www.admeen.com/images/ajax-loader.gif','alt':'Loading'})
					.addClass('loader')
			)
			.append(
				jQuery(document.createElement('span'))
					.html('Loading...')
					.addClass('loader')
			)
			.appendTo('body');

		modal[nw] = jQuery('#modal'+nw).jqm({ajax: obj.attr('href'), trigger: obj, ajaxText:errorTxt,onHide:hideModal });

		if(obj.attr('id')==anchor) {
			jQuery('#modal'+nw).jqmShow();
			jQuery.scrollTo( 0, { duration:300});
		}
	});
});

var language = jQuery("#language");
var languageSelect = jQuery("#languageSelect");
language.find("a.current").bind("click",function(){ return false; });
language.bind({
	"mouseenter":function(){
		languageSelect.show();
	},
	"mouseleave":function(){
		languageSelect.hide();
	}
});
