var LANG = "%LANG%";
var ILANG = "%ILANG%";
var ROOT = "%ROOT%";
var LROOT = "%LROOT%";

/**
 * toggles the display css property of an element
 *
 * @param string	id				id of the element to toggle
 * @param bool 		forceInline		forces to restore it to inline instead of block
 */
function toggleDisplay(id,forceInline)
{
	obj = document.getElementById(id);
	if(obj === null) {
		return;
	}

	if(obj.style.display == 'none') {
		show(obj,forceInline);
	} else {
		hide(obj);
	}
	return false;
}
function hide(id)
{
	if(typeof(id) == 'object') {
		id.style.display = 'none';
	} else if(document.getElementById(id) !== null) {
		document.getElementById(id).style.display = 'none';
	}
	return false;
}
function show(id,forceInline)
{
	if(forceInline === true) {
		newVal = 'inline';
	} else {
		newVal = 'block';
	}
	if(typeof(id) == 'object') {
		id.style.display = newVal;
	} else if(document.getElementById(id) !== null) {
		document.getElementById(id).style.display = newVal;
	}
	return false;
}
String.prototype.trim = function(){
	return this.replace(/^\s+|\s+$/g,"");
};
String.prototype.tr = function(from, to){
	var i=0;
	var out = this;
	while(i < from.length) {
		out = out.split(from.charAt(i)).join(to.charAt(i));
		i++;
	}
	return out;
};
// string up/down/left/right replacements
function toggle(input)
{
	if(input.match(/down/g)) {
		return input.replace(/down/, 'up');
	}
	if(input.match(/up/g)) {
		return input.replace(/up/, 'down');
	}
	if(input.match(/left/g)) {
		return input.replace(/left/, 'right');
	}
	if(input.match(/right/g)) {
		return input.replace(/right/, 'left');
	}
}
function setUp(input)
{
	return input.replace(/down/, 'up');
}
function setDown(input)
{
	return input.replace(/up/, 'down');
}
function setLeft(input)
{
	return input.replace(/right/, 'left');
}
function setRight(input)
{
	return input.replace(/left/, 'right');
}

// getURL function
function getURL(url)
{
	document.location.href = url;
}
// NID auto-fill
function NID(nidField, srcField, linkTxt)
{
	if($(nidField).val() === '') {
		$(srcField).keyup(function()
		{
			$(nidField).val(nidCleanUp($(srcField).val()));
		});
	}
	$(nidField).keyup(function()
	{
		$(this).val(nidCleanUp($(this).val(), 'TYPING'));
		$(srcField).unbind('change');
	});
	$(nidField).change(function()
	{
		$(this).val(nidCleanUp($(this).val()));
	});
	if(linkTxt === null) {
		linkTxt = "Guess";
	}
	$(nidField).after('&nbsp;<a href="#" onclick="$(\''+nidField+'\').val(nidCleanUp($(\''+srcField+'\').val())); return false;">'+linkTxt+'</a>');
}
function nidCleanUp(nid, inputMode)
{
	nid = nid.toUpperCase().toLowerCase();

	nid = nid.replace(/[\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5������]/ig,'a');
	nid = nid.replace(/[\u00E7�]/ig,'c');
	nid = nid.replace(/[\u00E8\u00E9\u00EA\u00EB����]/ig,'e');
	nid = nid.replace(/[\u00EC\u00ED\u00EE\u00EF����]/ig,'i');
	nid = nid.replace(/[\u00F2\u00F3\u00F4\u00F5\u00F6\u00F8������]/ig,'o');
	nid = nid.replace(/[\u00F9\u00FA\u00FB\u00FC����]/ig,'u');
	nid = nid.replace(/[\u00FD\u00FF��]/ig,'y');
	nid = nid.replace(/[\u00F1�]/ig,'n');
	nid = nid.replace(/[\u0153]/ig,'oe');
	nid = nid.replace(/[\u00E6]/ig,'ae');
	nid = nid.replace(/[\u00DF�]/ig,'ss');

	nid = nid.replace(/[^a-z0-9\-]/ig,'-');

	nid = nid.replace(/-+/g,'-');
	if(inputMode == 'TYPING') {
		return nid;
	}
	return nid.replace(/^-|-$/g,'');
}

// general auto-fill
function autoFill(from, to, type)
{
	if($(to).val() === '') {
		$(from).change(function()
		{
			$(to).val( autoFillReplace( $(from).val(), type ) );
			$(to).keyup();
		});
	}
	$(to).change(function()
	{
		$(from).unbind('change');
	});
}
function autoFillReplace(val, type)
{
	switch(type) {
		case "upload":
			return val.replace(/(.*?)([^\\\/]+?)\.[a-zA-Z0-9_]{1,10}$/, '$2');
	}
}
/**
 * tag duplicator
 *
 * call initDuplicateTags('#id1','#id2','#idN','#container','<br />','Add'); then duplicateTags will be called through user input
 *
 * @param string jquery identifiers (as many as you want, followed by the 3 last parameters)
 * @param string parent identifier where the duplicates must go
 */
function initDuplicateTags()
{
	var l = arguments.length;
	$(arguments[l-1]).append('<a href="#" class="js_duplicate_link'+arguments[l-1].replace(/#/,'')+'" onclick="duplicateTags(\''+implode("','", arguments)+'\'); return false;"><img src="'+ROOT+'images/icons/add.gif" alt="Add" /></a><br />');
}
function duplicateTags()
{
	var l = arguments.length;
	for(i=0; i<l-1; i++) {
		$(arguments[i]).clone().attr('id', function()
		{
			var num=this.id.replace(/^[^0-9]+/,'');
			return this.id.replace(/[0-9]+$/,parseInt(num)+1);
		}).val('').appendTo(arguments[l-1]);
	}

	$('a.js_duplicate_link'+arguments[i].replace(/#/,'')).remove();
	$(arguments[i]).append('<a href="#" class="js_duplicate_link'+arguments[i].replace(/#/,'')+'" onclick="duplicateTags(\''+implode("','", arguments)+'\'); return false;"><img src="'+ROOT+'images/icons/add.gif" alt="Add" /></a><br />');
}
/**
 * table row duplicator
 *
 * call initDuplicateTable('#tableId'); then duplicateRow will be called through user input
 *
 * @param string jquery identifiers of the table tag
 * @param string parent identifier where the duplicates must go
 */
function initDuplicateTable(tableidentifier)
{
	$(tableidentifier).after('<a href="#" class="js_duplicate_link'+tableidentifier.replace(/#/,'')+'" onclick="duplicateRow(\''+tableidentifier+'\'); return false;"><img src="'+ROOT+'images/icons/add.gif" alt="Add" />%w%add_item%js%</a>');
}
function duplicateRow(tableidentifier)
{
	$(tableidentifier+" tbody tr:last").clone().appendTo(tableidentifier+' tbody');
	$(tableidentifier+" tbody tr:last td *").each(function()
	{
		$(this).attr('id', function()
		{
			var num=this.id.replace(/^[^0-9]+/,'');
			return this.id.replace(/[0-9]+$/,parseInt(num)+1);
		}).val('');
	});
}
// array implode
function implode(str, array)
{
	var out = '';
	for(i=0; i<array.length-1; i++) {
		out += array[i]+str;
	}
	return out + array[array.length-1];
}

// file manager
fileMgr = {
	path: undefined,
	init: function(curPath)
	{
		$('#filemanager .browser .file').click(function() {
			$('#filemanager .browser .fileactions').remove();
			var fname = $(this).html().substr($(this).html().replace(/span>/ig, 'span>').indexOf('</span>') + 7).trim();
			$(this).after('<p class="fileactions" style="display:none">'+
				'<a href="" onclick="fileMgr.preview(\''+fname+'\'); return false;">%w%preview%</a> '+
				'<a href="" onclick="fileMgr.rename(\''+fname+'\'); return false;">%w%rename%</a> '+
				'<a href="" onclick="fileMgr.del(\''+fname+'\'); return false;">%w%delete%</a>'+
			'</p>');
			$('#filemanager .browser .fileactions').fadeIn();
		});

		if(this.path === undefined) {
			this.path = curPath;
			setTimeout(function(){ swfu.addPostParam('path', curPath); }, 500);
			this.go(curPath);
		}
	},
	go: function(path)
	{
		var links = $('#filemanager .path').html();
		var newlinks = "";
		newlinks = links.substr(0, links.indexOf(':')) + ': ';
		var pathbits = path.substr(1).split('/');
		var tmpPath = '';
		for(var i=0; i<pathbits.length; i++) {
			tmpPath += '/'+pathbits[i];
			newlinks += '/<a href="" onclick="fileMgr.go(\''+tmpPath+'\'); return false;">'+pathbits[i]+'</a>';
		}
		// update path links
		$('#filemanager .path').html(newlinks);
		// retrieve and then update file list
		$.get(location.href, {action: 'getFileList', p1: path},
		function(data)
		{
			$('#filemanager .browser :not(:first-child)').remove();
			$('#filemanager .browser').append(data);
			fileMgr.init(path);
			fileMgr.path = path;
			swfu.addPostParam('path', path);
		});
	},
	preview: function(fname)
	{
		window.open(ROOT + fileMgr.path.substr(1) + '/' + fname);
	},
	del: function(fname)
	{
		$.get(location.href, {action: 'doDelete', p1: this.path +'/'+ fname}, this.resHandler);
	},
	mkdir: function(dirname)
	{
		if(dirname == "") {
			$('#create_directory').focus(); 
			return;
		}
		$.get(location.href, {action: 'doMakeDir', p1: this.path +'/'+ dirname}, this.resHandler);
		$('#create_directory').val('');
	},
	rename: function(fname)
	{
		var newName = prompt('%w%new_filename%file_manager%', fname);
		if(newName === null || newName === false || newName === '' || newName == fname) {
			return;
		}

		$.get(location.href, {action: 'doRename', p1: this.path +'/'+ fname, p2: this.path +'/'+ newName}, this.resHandler);
	},
	resHandler: function(data)
	{
		if(data == 'true') {
			fileMgr.go(fileMgr.path);
		} else {
			alert(data);
		}
	}
};

/*

function serializ(arr, prefix, recursed){
  if(recursed==null)
    recursed = {};

  var cnt = arr.length;
  for(var i in arr) {
    if(typeof(arr[i]) == 'object') {
      serializ(arr[i], prefix+'['+i+']', recursed);
    } else {
         recursed[prefix+ '['+i+']'] = arr[i];
    }
  }

  return recursed;
}

Usage :

var array = [];
array['foo'] = 'bar';
array[3] = [];
array[3]['bar'] = '3bar?';

$.post('/test.php', serializ(array, "val"));

*/

$(function(){
$('img').each(function(index){
if($(this).attr('src').match(/images\/icons\//) != null) {
	$(this).addClass('icon');
}
});
});
