var preload = function(file, path) {
	if(typeof file == 'object') {
		for(var key in file) 
			this.preload(file[key], path);
	} else {
		if(!document.preload)
			document.preload = [];
		path = path || '';
		var i = document.preload.length;
		document.preload[i] = new Image();
		document.preload[i].src = path + file;
	}
};

if(dojo.isIE) {
	td_value = 'block';
	tr_value = 'block';
	table_value = 'block';
	tbody_value = 'block';
} else {
	td_value = 'table-cell';
	tr_value = 'table-row';
	table_value = 'table';
	tbody_value = 'table-row-group';
}

function ajax(type, obj) {
	var callback = obj.load;
	var func = function(response) {
		response = dojo.trim(response);
		if(response == 'fatal_error')
			location = '../home/home,1.html';
		else if(response == 'right_error')
			location = '../home/home,2.html';
		else if(response == 'no_login')
			location = '../login/login,1.html';
		else if(response == 'need_right')
			location = '../login/login,3.html';
		else if('function' === typeof(callback))
			callback(response);
	};
	obj.load = func;
	if(type == 'get')
		dojo.xhrGet(obj);
	else
		dojo.xhrPost(obj);
}

function getValue(e) {
	if(!e)
		return '';
	var e = document.getElementsByName(e);
	if(!e[0])
		return '';
	if(e[0].tagName == 'SELECT') {
		if(e[0].type == 'select-one')
			return e[0].value;
	} else if(e[0].tagName == 'INPUT') {
		if(e[0].type == 'text' || e[0].type == 'hidden')
			return e[0].value;
		else if(e[0].type == 'radio') {
			for(var i = 0; i < e.length; i++) {
				if(e[i].checked)
					return e[i].value;
			}
		} else if(e[0].type == 'checkbox')
			return e[0].checked;
	}
}

function toggle(toggle_id) {
	var e = dojo.byId(toggle_id);
	if(!e)
		return;
	if(e.tagName == 'IMG') {
		if(e.src.search(/plus/) != -1) {
			img_src = new Image;
			img_src.src = '../../images/toggle_minus.gif';
		} else {
			img_src = new Image;
			img_src.src = '../../images/toggle_plus.gif';
		}
		e.src = img_src.src;
	} else if(e.tagName == 'TR') {
		if(e.style.display == 'none')
			e.style.display = tr_value;
		else
			e.style.display = 'none';
	} else if(e.tagName == 'DIV') {
		if(e.style.display == 'none')
			e.style.display = 'block';
		else
			e.style.display = 'none';
	}
}

function toggleAdv(source, action_value, toggle, action, toggle_type) {
	var s_value = getValue(source);
	if(!s_value)
		return;
	
	if(typeof toggle == 'string') {
		if(toggle_type == 'name')
			toggleAction(document.getElementsByName(toggle)[0], action, s_value, action_value);
		else if(toggle_type == 'id')
			toggleAction(dojo.byId(toggle), action, s_value, action_value);
		else
			return;
	} else if(typeof toggle == 'object') {
		var e = [];
		for(var i = 0; i < toggle.length; i++) {
			if(toggle_type == 'name')
				toggleAction(document.getElementsByName(toggle[i])[0], action, s_value, action_value);
			else if(toggle_type == 'id')
				toggleAction(dojo.byId(toggle[i]), action, s_value, action_value);
			else
				return;
		}
	}
}

function toggleAction(e, action, s_value, action_value) {
	if(action == 'disable') {
		if(s_value == action_value)
			e.disabled = true;
		else
			e.disabled = false;
	} else if(action == 'enable') {
		if(s_value == action_value)
			e.disabled = false;
		else
			e.disabled = true;
	} else if(action == 'show' || action == 'hide') {
		if(e.tagName == 'TR')
			var display_value = tr_value;
		else if(e.tagName == 'TABLE')
			var display_value = table_value;
		else if(e.tagName == 'TBODY')
			var display_value = tbody_value;
		else if(e.tagName == 'DIV')
			var display_value = 'block';
		else 
			return;
		if(action == 'show') {
			if(s_value == action_value)
				e.style.display = display_value;
			else
				e.style.display = 'none';
		} else if(action == 'hide') {
			if(s_value == action_value)
				e.style.display = 'none';
			else
				e.style.display = display_value;
		}
	}
}
	
function format_number(zahl, k, fix) {
	if(!k)
		k = 0;
	var neu = '';
	
	// Runden
	var f = Math.pow(10, k);
	zahl = '' + parseInt( zahl * f + (.5 * (zahl > 0 ? 1 : -1)) ) / f ;
	
	// Komma ermittlen
	var idx = zahl.indexOf('.');
	
	// fehlende Nullen einf?gen
	if(fix)	{
		zahl += (idx == -1 ? '.' : '' )
		+ f.toString().substring(1);
	}
	idx = zahl.indexOf('.');
	// Nachkommastellen ermittlen
	if(idx == -1)
		idx = zahl.length;
	else
		neu = ',' + zahl.substr(idx + 1, k);
	
	while(idx > 0)	{
		if(idx - 3 > 0)
			neu = '.' + zahl.substring( idx - 3, idx) + neu;
		else
			neu = zahl.substring(0, idx) + neu;
		idx -= 3;
	}
	return neu;
}

function is_float(f) {
	var is_float = true;
	if(1 === f.split(',').length) {
		if(!f.match(/^[1-9][0-9]*$/))
			is_float = false;
	} else if(2 === f.split(',').length) {
		if(1 === f.split(',')[0].length) {
			if(!f.split(',')[0].match(/^[0-9]$/))
				is_float = false;
		} else if(!f.split(',')[0].match(/^[1-9][0-9]*$/))
			is_float = false;
		if(!f.split(',')[1].match(/^[0-9]+$/))
			is_float = false;
	} else
		is_float = false;
	return is_float;
}

function is_int(i) {
	if(!i.match(/^[1-9][0-9]*$/))
		return false;
	else
		return true;
}

// Kalender

dojo.require('dojo.dnd.Moveable');
var calzindex = 1;
function show_calendar(e, target, option, month, year, hour, minute) {
	var callback = function(response) {
		var div = dojo.byId('calendar_' + target);
		if(!div) {
			div = document.createElement('div');
			var coords = dojo.coords(e, true);
			dojo.style(div, {width:'240px', position:'absolute', left:(coords.x - dojo.coords(dojo.body(), true).x - 150)+'px', top:(coords.y + 10)+'px'});
			div.id = 'calendar_' + target;
		}
		dojo.style(div, 'zIndex', calzindex++);
		div.innerHTML = response;
		dojo.body().appendChild(div);
		var move = new dojo.dnd.Moveable(div, {handle: dojo.byId('calendar_head_' + target)});
		dojo.connect(move, 'onMoveStart', function() {
			dojo.style('calendar_' + target, 'zIndex', calzindex++);
		});
	};
	if(undefined === option)
		option = '';
	if(undefined === year)
		year = '';
	if(undefined === month)
		month = '';
	if(undefined === hour)
		hour = '';
	if(undefined === minute)
		minute = '';
	ajax('get', {url:'../login/calendar-ajax,target=' + target + '&default_value=' + getValue(target) + '&option=' + option + '&month=' + month + '&year=' + year + '&hour=' + hour + '&minute=' + minute, load:callback});
}

function calendar_add_date(date, target, time) {
	date = date.split('-');
	if(date[1].length == 1)
		date[1] = 0 + date[1];
	if(date[2].length == 1)
		date[2] = 0 + date[2];
	date = date[2] + '.' + date[1] + '.' + date[0];
	if(undefined !== time)
		date += ' ' + getValue('calendar_time[Hour]') + ':' + getValue('calendar_time[Minute]');
	document.getElementsByName(target)[0].value = date;
	close_calendar(target);
}

function close_calendar(target) {
	dojo.body().removeChild(dojo.byId('calendar_' + target));
}

// Inline-Boxen
var zindex = 1;
function open_ibox(id, url, width, halign, valign, overlay) {
	if(halign == 'center')
		halign = (dojo.coords(dojo.body(), true).w - width) / 2;
	var callback = function(response) {
		var div = dojo.byId(id);
		if(!div) {
			div = document.createElement('div');
			dojo.style(div, {width:width+'px', position:'absolute', left:halign+'px', top:valign+'px'});
			div.id = id;
		}
		dojo.style(div, 'zIndex', zindex++);
		div.innerHTML = '<div id="head_' + id + '" style="height: 5px; padding-top: 10px; position: relative;"><div style="background: #C9DF60; height: 4px; border-bottom: 1px solid #FFF; border-right: 1px solid #FFF; margin-right: 18px;"></div><div style="position: absolute; right: 0; top: 0; background: #FFF; width: 19px; height: 17px;"><div style="border: 1px solid #BBB; border-bottom-width: 0;"><div style="border: 1px solid #A2A2A2; border-bottom-width: 0;">&nbsp;</div></div></div><div style="width: 19px; height: 19px; position: absolute; right: 0; top: 0; cursor: pointer; background: url(\'../../images/icon_close.gif\') no-repeat center;" onclick="close_ibox(\'' + id + '\');"></div></div><div style="border: 1px solid #BBB;"><div style="border: 1px solid #A2A2A2; background: #FFF;" id="body_' + id + '">' + response + '</div></div>';
		dojo.body().appendChild(div);
		var move = new dojo.dnd.Moveable(div, {handle: dojo.byId('head_' + id)});
		dojo.connect(move, 'onMoveStart', function() {
			dojo.style(id, 'zIndex', zindex++);
		});
		if(overlay)
			dojo.style('overlay', 'display', 'block');
	};
	ajax('get', {url:url, load:callback});
}

function close_ibox(id) {
	dojo.body().removeChild(dojo.byId(id));
	dojo.style('overlay', 'display', 'none');
}

// Listen
var closer = {'language':false, 'country':false, 'module':false};

function open_list(type, click) {
	var list = dojo.byId(type + '_list');
	if(click && list.style.display == 'block') {
		close_list(type, true);
	} else if(closer[type] || click) {
		clearTimeout(closer[type]);
		closer[type] = false;
		list.style.display = 'block';
	}
}

function close_list(type, noDelay) {
	var list = dojo.byId(type + '_list');
	if(list.style.display == 'block') {
		var func = function() { list.style.display = 'none'; closer[type] = false; };
		if(noDelay)
			func();
		else
			closer[type] = setTimeout(func, 1000);
	}
}

function change_list(type, value) {
	var form = dojo.byId(type + '_form');
	form.action = location.href;
	document.getElementsByName(type)[0].value = value;
	form.submit();
}

function change_filter(type) {
	var filter = document.getElementsByName('filter')[0];
	if(type == 'focus') {
		if(filter.value == 'Filter eingeben...') {
			filter.value = '';
			filter.style.color = '#5C5C5C';
		}
	} else {
		if(filter.value == '') {
			filter.style.color = '#DCDCDC';
			filter.value = 'Filter eingeben...';
		}
	}
}
