function initxmlhttp() {
	var xmlhttp ;
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	try {
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")
	} catch (e) {
		try {
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
		} catch (E) {
			xmlhttp=false
		}
	}
	@else
	xmlhttp=false
	@end @*/
	if ( !xmlhttp && typeof XMLHttpRequest!='undefined' ) {
		try {
			xmlhttp = new XMLHttpRequest() ;
		}
		catch (e) {
			xmlhttp = false ;
		}
	} 
	return xmlhttp ;
}

function trim(str) {
	trimmed = str.replace(/^\s+/,'').replace(/\s+$/,'');
	return trimmed;
}


function galComment(item) {
	galFeedback(item, 'comment');
}

function galRate(item, rating, n) {

	if (rl!=1) {
		pleaseReg();
		return;
	}
	
	possiblePres = new Array('ran_','rec_','rat_');
	
	for (var pc = 0; pc<possiblePres.length; pc++) {
		pre = possiblePres[pc];
		
		if (dgE(pre+"st_"+item)) { // stars
			dgE(pre+"st_"+item).style.width = n+"%";
		}
	
		if (dgE(pre+"pc_"+item)) {  // rating as percentage
			dgE(pre+"pc_"+item).innerHTML = n+"%";
		}
	
		if (dgE(pre+"t_"+item)) {  // total votes
			dgE(pre+"t_"+item).innerHTML = parseInt(dgE(pre+"t_"+item).innerHTML)+1;
		}
	
		if (dgE(pre+"vopts_"+item)) { // show what they've just voted
			if (parseInt(rating)==1) { 
				dgE(pre+"vopts_"+item).innerHTML = '+';
			} else {
				dgE(pre+"vopts_"+item).innerHTML = '-';
			}
		}
	}

	galFeedback(item, 'rate',rating);
}

function galSubmitChanges(item, commentId) {
	galFeedback(item, 'comment edit',commentId);
}

function pleaseReg() {
	if (confirm ("Dieses Feature steht nur registrierten Spielern zur Verfügung. Jetzt anmelden?")) {
		window.location.href = "/register2.html";
	} 
}

function dgE(o){return document.getElementById(o);}

function galFeedback(item, type, extra1) {

	var ajaxOb = initxmlhttp() ;
	var postData = "i="+encodeURIComponent(item);
	url = '/pub/art_update.php';
	ajaxOb.open( "POST", url, true ) ;
	ajaxOb.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	
	if (type=='rate') {
		postData += "&r="+encodeURIComponent(extra1); // shouldn't really have to encode it...
		
	} else if (type=='comment') {
	
		maxChars = dgE('gal_max_comment_length').innerHTML;
		postData += "&m="+encodeURIComponent(maxChars);
	
		commentText = trim(dgE('gal_comment_textarea').value);
		commentText = commentText.substring(0,maxChars);
		
				
		if (commentText.length==0) {
			alert('Wenn Du ein Kommentar hinterlassen möchtest, dann schreib es ins Feld.');
			return;
		} 
		
		dgE('gal_comment_textarea').disabled = true;
		postData += "&c=:"+encodeURIComponent(commentText);
		dgE('gal_comment_status').innerHTML = 'Kommentar wird gespeichert...';
		
	} else if (type=='comment edit') {
	
		maxChars = dgE('gal_max_comment_length').innerHTML;
		postData += "&m="+encodeURIComponent(maxChars);
	
		newCommentText = trim(dgE('gal_edit_textarea_'+extra1).value);
		newCommentText = newCommentText.substring(0,maxChars);
		
		dgE('gal_edit_textarea_'+extra1).disabled = true;
		postData += "&c=:"+encodeURIComponent(newCommentText)+"&cid="+encodeURIComponent(extra1);
		dgE('gal_edit_comment_status_'+extra1).innerHTML = 'Kommentar wird upgedatet...';
		
	} else {
		alert('invalid feedback');
		return;	
	}
	
	ajaxOb.send(postData);

	
	var changed = 0;

	ajaxOb.onreadystatechange=function() {

		if (ajaxOb.readyState==4) {
		
			var response = ajaxOb.responseXML;
			var responseText = ajaxOb.responseText;
			
			if (responseText=='d') {
				delComment(extra1);
				return;
			} 
			
		
			
			// error message
			var messageElement = response.getElementsByTagName("message");
			var message = messageElement[0].firstChild.nodeValue;
			
			if (message=='reg') {
				pleaseReg();
				return;
			}
			
			if (type=='rate') {
				
				if (message=='-') { // no error
				
					//rank
					var rankElement = response.getElementsByTagName('rank');
					var rank = rankElement[0].firstChild.nodeValue;
									
					if (dgE('comments')) { // if there are existing comments, update any ratings belonging to this rater's comments
						var existingCommentsElement = response.getElementsByTagName("existing_comments");
						var existingComments = existingCommentsElement[0].firstChild.nodeValue;

						var commenterRatingElement = response.getElementsByTagName("commenter_rating");
						var commenterRating = commenterRatingElement[0].firstChild.nodeValue; 

						if (existingComments!='-') {
							var ratingsToUpdate = existingComments.split(','); 

							for (var i = 0; i< ratingsToUpdate.length; i++) { // update the rating displayed by this person's other comments
								posOrNeg = commenterRating==1 ? '(+)' : '(-)'; 
								dgE("gal_commenter_rating_"+ratingsToUpdate[i]).innerHTML = posOrNeg;
							}
						}
					}

					
				} else {
					alert(message);
				}
			
			} else if (type=='comment') { // comment
				
				if (message=='-') { // no error	
					var dateElement = response.getElementsByTagName("comment_date");
					var commentDate = dateElement[0].firstChild.nodeValue;  
					
					var commentIdElement = response.getElementsByTagName("comment_id");
					var commentId = commentIdElement[0].firstChild.nodeValue; 
					
					var commenterRatingElement = response.getElementsByTagName("commenter_rating");
					var commenterRating = commenterRatingElement[0].firstChild.nodeValue; 
					if (commenterRating=='n/a') {
						commenterRating='';
					} else { 
						commenterRating = commenterRating==1 ? '(+)' : '(-)'; 
					} 
					
					var commenterNameElement = response.getElementsByTagName("commenter_name");
					var commenterName = commenterNameElement[0].firstChild.nodeValue; 
					
					dgE('gal_comment_submission').innerHTML = '';
					
					// get existing comments
					galComments = dgE('comments').innerHTML;  
					
					var finalCommentTextElement = response.getElementsByTagName("comment");
					var finalCommentText = finalCommentTextElement[0].firstChild.nodeValue; 
					finalCommentText = finalCommentText.replace(/\n/g,'<br />');

					commentsTemplate = dgE('gal_comments_template').innerHTML;
					
					newCommentDiv = "<span class=\"gal_comment\" id=\"gal_comment_"+commentId+"\">\n"+commentsTemplate+"</span>\n"; // use the comment template to create a new comment div
					
					newCommentDiv = newCommentDiv.replace(/%name%/g,"<span class=\"gal_commenter_name\" id=\"gal_commenter_name_"+commentId+"\">"+commenterName+"</span>");
					newCommentDiv = newCommentDiv.replace(/%rating%/g,"<span class=\"gal_commenter_rating\" id=\"gal_commenter_rating_"+commentId+"\">"+commenterRating+"</span>");
					newCommentDiv = newCommentDiv.replace(/%date%/g,"<span class=\"gal_comment_date\" id=\"gal_comment_date_"+commentId+"\">"+commentDate+"</span>");
					newCommentDiv = newCommentDiv.replace(/%edit_link%/g,"<span class=\"gal_edit_comment\" id=\"gal_edit_comment_"+commentId+"\"> <a href=\"javascript:galEditComment("+item+","+commentId+");\">Bearbeiten</a></span>");
					newCommentDiv = newCommentDiv.replace(/%comment%/g,"<span class=\"gal_comment_text\" id=\"gal_comment_text_"+commentId+"\">"+finalCommentText+"</span>");
					
					if (dgE('gal_new_comments_top').innerHTML=='1') {
						finalCommentsDivContents = newCommentDiv+"\n\n"+galComments+"\n\n";
					} else {
						finalCommentsDivContents = galComments+"\n\n"+newCommentDiv+"\n\n";
					} 
					dgE('comments').innerHTML = finalCommentsDivContents;
					dgE('comments').style.display="block";
					
					galCommentCount = dgE('gal_comment_count').innerHTML;  
					dgE('gal_comment_count').innerHTML = parseInt(galCommentCount)+1; 
				} else {
					alert(message);	
				}
				
			} else if (type=='comment edit') { // comment edit
				
				if (message=='-') { // no error	
		
					var commentIdElement = response.getElementsByTagName("comment_id");
					var commentId = commentIdElement[0].firstChild.nodeValue; 

					var newCommentElement = response.getElementsByTagName("comment");
					var newComment = newCommentElement[0].firstChild.nodeValue; 
	  
					dgE("gal_comment_text_"+commentId).innerHTML = newComment.replace(/\n/g,'<br />');
					dgE("gal_edit_comment_"+commentId).style.display = 'inline';
	
				} else {
					alert(message);	
				}
			}
		}
	}
	try {
		ajaxOb.send(null);
	} catch (e) {
	
	}

} 

function delComment (cid) {
	cEl = dgE('gal_comment_'+cid);
	cEl.style.display = 'none';
}


function galEditComment(item, id) {
	commentText = dgE("gal_comment_text_"+id).innerHTML;
	commentText = commentText.replace(/<br>/gi,'\n');
	commentText = commentText.replace(/<br \/>/g,'\n');
	dgE("gal_edit_comment_"+id).style.display = 'none';
	dgE("gal_comment_text_"+id).innerHTML = "<textarea id=\"gal_edit_textarea_"+id+"\" rows=\"5\" cols=\"70\" class=\"gal_edit_textarea\" >"+commentText+"</textarea><br /><input type=\"button\" onclick=\"galSubmitChanges("+item+","+id+")\" value=\"Änderungen speichern\" /> <span id=\"gal_edit_comment_status_"+id+"\"></span>";
}

function limitInput(el_id, max) {
	el = dgE(el_id);
	el.value = el.value.substring(0,max);
}


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);
}


function changeGalleryStatus(a, aid) {

	if (a=='pub') {
		niceaction = 'Öffentlichen';
		niceresult = 'in die öffentliche Gallery gestellt';
	} else if (a=='pri') {
		niceaction = 'Privat';
		niceresult = 'als Privat zurückgesetzt';
	} else if (a=='rej') {
		niceaction = 'Verwerfen';
		niceresult = 'verworfen';
	} else {
		return;	
	}

	var targetObj=dgE('art_status');
	var snapshot_id=aid;
	var ajaxOb=new initxmlhttp();	
	var ran=Math.random();
	ran=ran.toString();
	var url="art"+aid+".html?action="+encodeURIComponent(a)+"&r="+ran;
	ajaxOb.open("GET",url,true);
	ajaxOb.onreadystatechange= function transferCallback() {
		if(ajaxOb.readyState!=4) return;
		var response=ajaxOb.responseText;
		if (response=='ok') {
			targetObj.innerHTML='Snapshot '+niceresult+'.';
			targetObj.style.color='green';
		} else {
			targetObj.innerHTML='Sorry - ein Fehler ist aufgetreten.';
			targetObj.style.color='red';
		}
	}	
	
	targetObj.innerHTML='<img style="vertical-align:middle" src="/img/loading_animation.gif" alt="" /> '+niceaction+'...';	
	ajaxOb.send(null);

}



