// Verarbeitung für grafische Checkboxen
function updateCheckbox(box,name) {
	var param = $('input[name="'+name+'"]');
	box = $(box);
	if (param) {
		if (param.val() == '1') {
			param.val('');
			box.removeClass("on");
		} else {
			param.val(1);
			box.addClass("on");
		}
	}
}

// Verarbeitung für grafische Radioboxen
function updateRadio(box,name,val) {
	var param = $('input[name="'+name+'"]');
	$('div.radio').each(function(i,rb) {
		rb = $(rb);
		if (rb.attr('name') == name) {
			if (val == rb.attr('value')) {
				param.val(val);
				rb.addClass("on");
			} else {
				rb.removeClass("on");
			}
		}
	});
}

$(document).ready(function() {
	// Ersetzt alle Checkboxen, die mit der Klasse "replCB" markiert wurden
	$('input.replCB').each(function(i,cb) {
		cb = $(cb);
		var val = cb.val();
		var name = cb.attr('name');
		var checked = cb.attr('checked');
		var error = cb.attr('error');
		var html = '<input type="hidden" name="'+name+'" value="'+(checked?val:'')+'"></input>'
			+ '<div class="checkbox inlineBlock'
				+(checked?" on":"")
				+(error?" error":"")
				+'" onclick="updateCheckbox(this,\''+name+'\')"></div>';
		cb.after(html);
		cb.remove();
	});

	// Ersetzt alle Radioboxen, die mit der Klasse "replRB" markiert wurden
	var rblist = {};
	$('input.replRB').each(function(i,rb) {
		rb = $(rb);
		var name = rb.attr('name');
		var val = rb.val();
		var checked = rb.attr('checked');
		var error = rb.attr('error');
		// Erste Radiobox mit diesem Namen
		var html;
		if (rblist[name]) {
			html = '<div name="'+name+'" value="'+val+'" class="radio inlineBlock'
				+(checked?" on":"")
				+(error?" error":"")
				+'" onclick="updateRadio(this,\''+name+'\',\''+val+'\')"></div>';
		} else {
			rblist[name] = true;
			html = '<input type="hidden" name="'+name+'" value="'+(checked?val:'')+'"></input>'
				+ '<div name="'+name+'" value="'+val+'" class="radio inlineBlock'
					+(checked?" on":"")
					+(error?" error":"")
					+'" onclick="updateRadio(this,\''+name+'\',\''+val+'\')"></div>';
		}
		rb.after(html);
		rb.remove();
	});

});

/* Per AJAX auf die Fertigstellung eines Bildes warten */
var retries = {};
function waitForImage(imgsrc, onSuccess, onError) {
	var time = (new Date()).getTime();
	$('<img>').attr('src', imgsrc+'?'+time)
		.load(function() { onSuccess(imgsrc) })
		.error(function() {
			if (retries[imgsrc] > 30) {
				onError(imgsrc);
			} else {
				if (retries[imgsrc]) {
					++retries[imgsrc];
				} else {
					retries[imgsrc] = 1;
				}
				window.setTimeout(function() {waitForImage(imgsrc, onSuccess, onError) }, 1000);
			}
		});
}

function checkImageStatus(jobid,retries) {
	$.ajax({
		type: 'POST',
		url: 'dashboard_upload.jsc'+SID,
		data: {action:'3', jobid:jobid},
		cache: false,
		dataType: 'json',
		success: function(json,status) {
			if (json.error) {
				alert("Es ist ein unbekannter Fehler beim Upload aufgetreten.");
				$('#processing').hide();
			} else if (json.status == 'finished') {
				document.location.reload();
			} else if (json.status == 'running') {
				if (retries > 0) {
					// Alle 2 Sekunden prüfen
					window.setTimeout(function() {checkImageStatus(jobid,retries-1) }, 2000);
				} else {
					alert("Die Verarbeitung des Bildes dauerte zu lange. Nach einem Reload der Seite sollte das Bild in wenigen Sekunden zu sehen sein.");
					$('#processing').hide();
				}
			} else {
				alert("Bei der Verarbeitung des Bildes ist ein Fehler aufgetreten.");
				$('#processing').hide();
			}
		},
		error: function(xhr, status, e) {
			alert("Bei der Verarbeitung des Bildes ist ein Fehler aufgetreten: "+status);
			$('#processing').hide();
		}
	});
}


function checkVideoStatus(jobid,retries) {
	$.ajax({
		type: 'POST',
		url: 'dashboard_upload.jsc'+SID,
		data: {action:'5', jobid:jobid},
		cache: false,
		dataType: 'json',
		success: function(json,status) {
			if (json.error) {
			alert("Es ist ein unbekannter Fehler beim Upload aufgetreten.");
			$('#processing').hide();
			} else if (json.status == 'finished') {
			document.location.reload();
			} else if (json.status == 'running') {
			if (retries > 0) {
				// Alle 10 Sekunden prüfen
				window.setTimeout(function() {checkVideoStatus(jobid,retries-1) }, 10000);
			} else {
				alert("Die Verarbeitung des Videos dauerte zu lange. Nach einem Reload der Seite sollte das Video in wenigen Sekunden zu sehen sein.");
				$('#processing').hide();
			}
			} else {
			alert("Bei der Verarbeitung des Videos ist ein Fehler aufgetreten.");
			$('#processing').hide();
			}
		},
		error: function(xhr, status, e) {
		alert("Bei der Verarbeitung des Videos ist ein Fehler aufgetreten: "+status);
		$('#processing').hide();
		}
	});
}




/* Modale Dialoge */
function showImageLayer(userId,all,imgName) {
	showLayer('image_browser.jsc'+SID+'?id='+userId+'&name='+imgName+'&inactive='+all);
}
function showVideoLayer(userId,all,videoName) {
	showLayer('video_browser.jsc'+SID+'?id='+userId+'&name='+videoName+'&inactive='+all);
}
function showTermsLayer() {
	showLayer('terms.jsc'+SID);
}
function showLayer(frameUrl) {
	var layer = $('#layer');
	if (layer.length == 0) {
		// Layer-HTML beim ersten Mal erstellen
		$('#content').prepend(
			'<div id="layer" style="display:none">'
			+ '<iframe src="'+frameUrl+'" width="971" height="632" border="0" frameborder="0" allowtransparency="true" scrolling="no">'
			+ '</iframe>'
		);
		layer = $('#layer');
	} else {
		// Layer-IFrame neu laden
		layer.html(
			'<iframe src="'+frameUrl+'" width="971" height="632" border="0" frameborder="0" allowtransparency="true" scrolling="no">'
			+ '</iframe>'
		);
	}
	layer.modal({
		opacity: 50,
		zIndex: 8000,
		overlayCss:{background:'#000'},
		close: false
	});
}
function closeLayer() {
	$('#layer').remove();
	$.modal.close();
}



function checkMore(id) {
	var e = $('#'+id);
	var sh = e[0].scrollHeight;
	var h = e.height();
	if(sh > h) {
		$('#'+id+'-more').show();
	}
}
function openMore(id) {
	var e = $('#'+id);
	e.data("origh", e.height());
	var sh = e[0].scrollHeight;
	$('#'+id).animate({
		maxHeight: sh+"px"
	}, 500, "swing", function() { $('#'+id+'-more').hide(); $('#'+id+'-less').show(); } );
}
function closeMore(id) {
	var h = $('#'+id).data("origh");
	$('#'+id).animate({
		maxHeight: h+"px"
	}, 500, "swing", function() { $('#'+id+'-less').hide(); $('#'+id+'-more').show(); } );
}


function openCentered(url,win,width,height,options) {
	var top  = ((screen.height - height) / 2);
	var left = ((screen.width - width) / 2);

	var optlist = "width="+width+",height="+height+",top="+top+",left="+left;
	if (options && options!='') {
		optlist += ","+options;
	}

	var win = window.open(url,win,optlist);
	if (win) {
		win.focus();
	}
}


function defaultText(fname,defaultText) {
	var f = $('#'+fname);
	f.focus(function() {
		if(this.value == defaultText) {
			this.value = '';
			this.style.color = '';
		}
	}).blur(function() {
		if(this.value == '') {
			this.value = defaultText;
			this.style.color = '#999999';
		}
	});
	f.blur();
}