// json
var ZF = {
	call: function(controller, action, params)
	{
		controller = controller || 'index';
		action = action || 'index';
		params = params || {};
		
		var url = brin.baseurl + '/admin/';
		url += controller + '/';
		url += action;
		return $.ajax({'url'  : url, 
					   'async': false,
					   'data' : params}).responseText;
	},
	
	getJSON: function(controller, action, params)
	{
		var content = ZF.call(controller, action, params);
		return $.parseJSON(content, 'safe');
	}
}
// cookies
function createCookie(name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
}

function eraseCookie(name) {
		createCookie(name,"",-1);
}
// tables
function thead(cells)
{
	var thead = '<thead><tr>';
	for (var i = 0; i < cells.length; i++) {
		thead += '<th>';
		thead += cells[i].content;
		thead += '</th>';
	}
	thead += '</tr></thead>';
	return thead;
}

function tableRow(cells)
{
	var row = '<tr>';
	for (var i = 0; i < cells.length; i++) {
		var css_class = (cells[i].css_class != undefined) ? ' class="' + cells[i].css_class + '"' : '';
		var id = (cells[i].id != undefined) ? ' id="' + cells[i].id + '"' : '';
		row += '<td' + id + css_class + '>' ;
		row += cells[i].content;
		row += '</td>';
	}
	row += '</tr>';
	return row;
}

function stripeTable(table)
{
	$('tbody tr', table).removeClass('alt');
	$('tbody tr:even', table).addClass('alt');
}

$.fn.getParent = function(tag)
{
		var elmt = this;
		//if no tag specified, look for direct parent
		if (tag == undefined) {
			tag = $(elmt).parent().get(0).tagName;
		}
		//look for the closest parent by given tagname
		while ($(elmt).get(0).tagName != tag.toUpperCase()) {
			elmt = $(elmt).parent();
			//stop if reaching body tag
			if ($(elmt).get(0).tagName == 'HTML') {
				elmt = undefined;
				break;
			}
		}
		//return parent element
		return elmt;
}
// misc
function inverseBool(value)
{
	return (value == undefined) ? undefined : (value) ? false : true;
}

/////////////////////// checkers
function checkDate(strng,fieldname)
{
	var error = '';
	if (strng == '') {
		error += 'Le champ "' + fieldname + '" ne contient pas de date.\n';
	} else {
		//date au format 2008-03-13
		var pattern = /^(19|20)\d{2}-(0[1-9]|1[1-2])-([0-2]\d|3[01])$/;
		if (!pattern.test(strng)) {
		   error += 'Le champ "' + fieldname + '" contient une date non valide.\n';
		}
	}
	return error;
}

function checkEmpty(string, fieldname)
{
	switch (fieldname) {
		case undefined:
			if (string == '') {
				return true;
			} else {
				return false;
			}
			break;
		default:
			if (string == '') {
				return 'Le champ "' + fieldname + '" est vide.\n';
			} else {
				return '';
			}
			break;
	}
}
function checkNumber(string, fieldname)
{
	var error = '';
	var validChars = "0123456789";
	var isNumber = true;
	if (string != '') {
		for( i = 0; i < string.length && isNumber; i++ ) {
			if( validChars.indexOf(string.charAt(i)) == -1){
				isNumber = false;
			}
		}
		if(!isNumber) {
			return 'Le champ ' + fieldname + " ne peut contenir qu'un nombre.\n";
		} else {
			return '';
		}
	} else {
		return '';
	}
}