var req;
var commentid;
var vote;
var id;
var costumer_count;
var usefull;
var cookieExist = false;
var stringlength = 0;
var mycookie = new Object();

function voteComment(url,commentidP,voteP,idP,costumer_countP,usefullP){
	vote			=  voteP;
	commentid		=  commentidP;
	id				=  idP;
	url				+= vote;
	costumer_count	=  costumer_countP;
	usefull			=  usefullP;
	
	//prüfe ob cookie gesetzt ist
	if( checkCookie('comvote',commentid) == true ){
		document.getElementById( id+commentid ).innerHTML = 'Sie haben für diesen Kommentar bereits abgestimmt';
	} else {
		starteCommentAjax(url);
	}
	return false;
}

//Setze cookie key value expire
function setCookie(key,commentid){

	var arraykey;
	
	var a = new Date();	
	a = new Date(a.getTime() + (1000*60*60*24));
	
    arraykey = commentid.toString(); //key für assoziatives array in string umwandeln
    
    //falls cookie noch nicht existiert oder nochkein eintrag für den eintrag (commentid)
    //besteht, erstelle array/hänge an array an
	if(!cookieExist || !mycookie[arraykey]) {
		mycookie[arraykey]	= vote;
	} 
	
	//falls die stringlänge > 1000 zeichen ist, lösche den ersten eintrag
	if(stringlength >= 1000) {
		for (var x in mycookie){
			delete mycookie[x];
			break;
		}
	}
	
	//schreibe cookie neu
	document.cookie = key+'='+escape(JSON.stringify(mycookie))+';expires='+a.toGMTString()+';path=/;';
}

//prüfe ob cookie existiert
function checkCookie(key,commentid){
	
	var returnWert = false;
	var cookieData;
	
	try {
		cookieData = document.cookie.split("; ");	//lade alle cookies
	} catch(e) {
		cookieData = new Array();
	}

	var sizeOfObject;
	var keyValue;
	
	for (var i = 0; i < cookieData.length; i++) {		//durchlaufe alle cookies, bis comvote gefunden
		if (cookieData[i]) {
        	keyValue = unescape(cookieData[i]).split('=');
        	if (keyValue[0] == 'comvote'){
        		cookieExist = true;
        		try { //versuche wert zu parsen und suche nach commentid
        			
	        		mycookie = JSON.parse(keyValue[1]); //das array aller gespeicherten kommentare
		        	stringlength = escape(keyValue[1]).length;

		       		if(mycookie[commentid.toString()]) {
		        		returnWert = true;		//commentid in array gefunden
		        	}
	        	} catch (e) {
	               	//Fehler in Cookiedaten, deshalb löschen
			       	var end = new Date();
		    		end.setTime (end.getTime() - 1);
			       	document.cookie =  key+'=;expires='+end.toGMTString()+';path=/;';
			       	cookieExist = false;
	        	}
	        	break;
        	}
        }
    }
	return returnWert;
}

function starteCommentAjax(url) {
	if( window.XMLHttpRequest ) {
		req = new XMLHttpRequest();
	} else if( window.ActiveXObject ) {
		req = new ActiveXObject( "Microsoft.XMLHTTP" );
	} else {
		return;
	}
	req.open( "GET", url, true );
	req.onreadystatechange = callbackComments;
	req.send( null );
}
    
function callbackComments() {
	if( 4 == req.readyState ) {
		if (200 == req.status){
			if (req.responseText != '0'){
				var isUsefull;
				//setze cookie
				setCookie('comvote',commentid);
				//zähle counter hoch und evtl usefull +1
				if(vote == 0){
					usefull += 1;
					if(document.getElementById('usefull'+commentid))
						document.getElementById('usefull'+commentid).innerHTML = usefull;
					}
				costumer_count += 1;
						
				if (usefull == 0 && costumer_count == 1) {
					document.getElementById('usefully'+commentid).innerHTML = '0 von 1 Kunden fanden diese Bewertung hilfreich';
				}
				
				if (usefull == 1 && costumer_count == 1) {
					document.getElementById('usefully'+commentid).innerHTML = '1 von 1 Kunden fanden diese Bewertung hilfreich';
				}		
				//schreibe textausgabe
				document.getElementById(id+commentid).innerHTML = req.responseText;
						
				if(document.getElementById('costumer_count'+commentid))
					document.getElementById('costumer_count'+commentid).innerHTML = costumer_count;
							
			}
		}
	}
}
