// vim: set ts=4 sw=4 sts=4 si noet:

// allow simple namespacing
// see: http://www.zachleat.com/web/2007/08/28/namespacing-outside-of-the-yahoo-namespace/
if (typeof jm == "undefined") {
    var jm = {};

	jm.namespace = function() {
		var a=arguments, o=null, i, j, d;
		for (i=0; i<a.length; i=i+1) {
			d=a[i].split(".");
			o=window;
			for (j=0; j<d.length; j=j+1) {
				o[d[j]]=o[d[j]] || {};
				o=o[d[j]];
			}
		}
		return o;
	}
}

jm.namespace('jm.cfg'); // global configuration object
jm.namespace('jm.strings'); // global strings object

jm.util = function() {

	var dialogInitialized = false;

	var init = function(el) {
		return this;
	}

	// return a <div> containing loading notification image and text
	var loading = function(direction) {
		var which = direction == 'left' ? 'lft' : 'rgt';
		return '<div class="ajaxloading ' + which + '">' +
			'<img src="' + jm.cfg.base + '/' + jm.cfg.themePath + 
			'/img/loading.gif">' +
			'<span>Please wait...</span></div>';
	}

	// return a relative url based on controller + action name
	var url = function(action) {
		var trimmed = $.trim(action);
		var base = jm.cfg.base !== undefined ? jm.cfg.base : '';
		if (trimmed[0] == '/') trimmed = trimmed.substr(1);
		return base + '/' + trimmed;
	}

	// include a script url
	var include = function(scriptUrl, onload) {
		var el = document.createElement('script');
		el.setAttribute('type','text/javascript');
		el.setAttribute('src', scriptUrl);
		el.src = scriptUrl;
		if (typeof(onload) == 'function') {
			if (window.addEventListener){
				var __onload = function() {
					if (el.readyState == 'complete') {
						onload();
					}
				}
				el.addEventListener('readystatechange', __onload, true);
			} else {
				el.attachEvent('load', onload, true);
			}
		}
		var head = document.getElementsByTagName('head')[0];
		head.appendChild(el);
	}

	var notice = function(title, description) {
		return '' +
'<div class="ui-widget">' +
'	<div style="padding: 0pt 0.7em; margin-top: 5px;" class="ui-state-highlight ui-corner-all">' +
'		<p><span style="float: left; margin-right: 0.3em;" class="ui-icon ui-icon-info"></span>' +
'		<strong>' + title + '</strong> ' + description + '</p>' +
'	</div>' +
'</div>';
	}

	var attach = function(evt) {
		var container = $('#attachments-form');
		var count = $('#existing-photos img.content-photo').length + $('div.attachments.element').length;
		if (count < 5) {
			$.get(jm.cfg.base + '/attachments/attach',
				'model=' + evt.data.model + '&' +
				'count=' + count, function(data, stat) {
				$(data).appendTo(container).slideDown();
			});
		} else {
			alert('You can only attach up to 5 photos');
		}
	}

	var load_categories = function(json, statusText, xhr) {
		var options = '<option>-- Harap Pilih --</option>';
		for (var i = 0, ii= json.categories.length; i < ii; i++) {
			options += '<option value="' +
				json.categories[i].id + '">' +
				json.categories[i].title +
				'</option>';
		}
		$('#ContentCategoryId').html(options);
	}


	return {
		attach: attach,
		init: init,
		include: include,
		loading: loading,
		notice: notice,
		load_categories: load_categories,
		url: url
	}
}().init(this);

