var numBuzzes=1;
var aNomPerBuzz = [];
var domain;
var client_id=0;
var badgeBuzzed=false;
var buzzOpened=1;

function myInitView(){

	var cnt=1;
	var dum;
	while (cnt <= numBuzzes) {
			var frm = $('voteForm'+ '_' + cnt);
			var suggest = $('suggest'+ '_' + cnt);

			if (suggest) {
							$('suggest'+'_' + cnt).hide();
							$('lbl-suggest'+'_'+ cnt).hide();
			}

			Event.observe($('toggleButton'+'_' +  cnt),"click", toggleBuzz );
			Event.observe($('question'+'_' +  cnt),"click", toggleBuzz );
			if ($('forward_'+cnt)) Event.observe($('forward'+'_' +  cnt),"click", forwardBuzz );
			Event.observe($('badge'+'_' +  cnt),"click", badgeBuzz );
			if ($('react'+ '_' +cnt )) Event.observe($('react'+'_' +  cnt),"click", reactBuzz );

			if ($('suggestButton_'+cnt)) $('suggestinput_'+cnt).hide();
			if (aNomPerBuzz[cnt-1] < 10) {
						if ($('suggestButton_'+cnt)) Event.observe($('suggestButton'+'_' + cnt),"click",showSuggest);
			}
			else
					if ($('suggestButton_'+cnt)) $('suggestButton_'+cnt).hide();

			if ($('deleteButton_'+cnt)) Event.observe($('deleteButton'+'_' + cnt),"click",deleteBuzz);

			if ($('submitbutton_'+cnt+'_ID')) Event.observe("submitbutton_" + cnt + "_ID", "click", validateVote);
			if ($('submitbutton_'+cnt+'_ID2')) Event.observe($('submitbutton_' + cnt+ '_ID2'),"click", validateVote);
			if ($('submitbutton_'+cnt+'_ID2')) Event.observe($('submitbutton_' + cnt+ '_ID2'),"submit", validateVote);


			if (cnt > 1) {
					// Alle blinds worden gesloten behalve de eerrste
					dum = Effect.toggle('nominations' + '_' +  cnt, 'blind');
					$('toggleButton_'+cnt).className = 'closed';
					$('toggleButton_'+cnt).innerHTML = '&nbsp;&nbsp;';
				
			}
			else {
					$('toggleButton_'+cnt).className = 'opened';
					$('toggleButton_'+cnt).innerHTML = '&nbsp;&nbsp;';
			}

			if ($('buzzed_'+cnt)) {
						$('submitbutton_' + cnt+ '_ID2').innerHTML= 'Bekijk stemmen';
			}

			cnt++;
	}

			// als ik ingelogd ben en heb op de eerste al gestemd
			if ($('buzzed_1')) {
							var url = domain + 'buzz/voteBuzz.php';
							allNodes = Form.serialize("voteForm_1");
							url = url + "?" + allNodes + "&div_id=votes_1";
					 		getVotes(url,1);
			}

/*
	var cs = new chatscroll('body');
	cs.activeScroll();
*/
}

function getVotes(url, cnt) {
							new Ajax.Request(url, {
									method: 'get',
									onSuccess: function(req) { 
																		var txt = req.responseText;
																		var pattern = /([\S ]+)<script>(.+)<\/script>/;
																		var result = txt.match(pattern);
																		if (result != null) {
																			$('switch'+ '_'+ cnt).innerHTML = result[1] ;
																			eval(result[2]);
																		}
																		else 
																			$('switch'+ '_'+ cnt).innerHTML = txt ;
																		$('submitbutton_'+cnt).hide()	;
																		countBuzz(domain + 'buzz/buzz.php?act=count&' + allNodes ,cnt);
														}
												});	
}

function getBuzz(url, cnt) {
							new Ajax.Request(url, {
									method: 'get',
									onSuccess: function(req) { 
																		var txt = req.responseText;
																		$('switch'+ '_'+ cnt).innerHTML = txt ;
																		$('submitbutton_'+cnt).show()	;
																		$('submitbutton_'+cnt+'_ID').show()	;
															}
												});	
}

function countBuzz(url, cnt) {
							new Ajax.Request(url, {
									method: 'get',
									onSuccess: function(req) { 
																		$('c_'+cnt).innerHTML = req.responseText;
															}
												});	
}

function toggleBuzz(e) {

	// sluit multifunctioneel schermpje als je gaat toggeleln
	deleteForward();
	if (!e) var e = event;
	
	var splitres = Event.element(e).id.split('_');
	var cnt = splitres[1];

	var dum = Effect.toggle('nominations' + '_' +  cnt, 'blind');
  var but = $('toggleButton'+ '_' + cnt);

	if (but.className == "closed" )	  {

							// indien je er op gestemd hebt en je het de eerste keer openklapt	
							// ie heeft problemen met rendering
							//if ($('buzzed_'+cnt) && !$('votes_'+cnt)) {
							if ($('buzzed_'+cnt)) {
 											if ($('votes_'+cnt))
												Element.remove($('votes_'+cnt));

											var url = domain + 'buzz/voteBuzz.php';
											allNodes = Form.serialize("voteForm"+'_' + cnt);
											url = url + "?" + allNodes + "&div_id=votes_" + cnt;
											getVotes(url, cnt);
						  }
							if (client_id==0) {
 								if ($('votes_'+cnt))
									Element.remove($('votes_'+cnt));
											var url = domain + 'buzz/buzz.php?act=nominations';
											allNodes = Form.serialize("voteForm"+'_' + cnt);
											url = url + "&" + allNodes + "&div_id=votes_" + cnt;
											getBuzz(url, cnt);
							}
			$('toggleButton_'+cnt).className = 'opened';
			$('toggleButton_'+cnt).innerHTML = '&nbsp;&nbsp;';
			buzzOpened = cnt;
			closeAllOther();
	}
	else {
			//Effect.Grow($('buzzstats'+'_' + cnt), {direction: 'top-right', duration: 2} );
			$('toggleButton_'+cnt).className = 'closed';
			$('toggleButton_'+cnt).innerHTML = '&nbsp;&nbsp;';

	}

}

function closeAllOther() {
	var i=1;
	while (i<=numBuzzes) {
			if (i!=buzzOpened) {
									if ($('nominations_'+i).style.display != 'none' ) {
										var dum = Effect.toggle('nominations' + '_' +  i, 'blind');
										$('toggleButton_'+i).className = 'closed';
										$('toggleButton_'+i).innerHTML = '&nbsp;&nbsp;';
									}
			}
			i++;
	}
}

function badgeBuzz(e) {

	clearMessages();
	if (!e) var e = event;
	
	var splitres = Event.element(e).id.split('_');
	var cnt = splitres[1];

	var buzz_id;
	var el = Form.getElements('voteForm_'+cnt);
	for (i in el )  { 
			if (el[i].name == 'id')
				buzz_id = el[i].value;
	}

  if ($('forward')) {
			Element.remove('forward');
	}

  if ($('buzzwrapper'+ '_'+ cnt).className=='mylist')	
			var w = Element.getWidth('buzzwrapper'+ '_'+ cnt);
	else
			var w = Element.getWidth('buzzwrapper'+ '_'+ cnt)-194;

	var divHtml = "<div class='forward' id='forward' style='display: none; height: 20em;  width:"+ w + "px;'>";
  var closeLink ="<a style='float:right;' href='javascript: hideForward("+cnt+");'>Sluit formulier</a></div>";

	var dum = new Insertion.After('buzzwrapper'+ '_'+ cnt, divHtml )	;

	new Ajax.Request('../buzz/buzz.php?act=badgeform&id='+buzz_id, {
									method: 'get',
									onSuccess: function(req) { 
																$('forward').innerHTML = closeLink + req.responseText;														
																showForward();
										
														}
												});	

}

function reactBuzz(e) {

	clearMessages();
	if (!e) var e = event;
	
	var splitres = Event.element(e).id.split('_');
	var cnt = splitres[1];

	var buzz_id;
	var el = Form.getElements('voteForm_'+cnt);
	for (i in el )  { 
			if (el[i].name == 'id')
				buzz_id = el[i].value;
	}

  if ($('forward')) {
			Element.remove('forward');
	}

  if ($('buzzwrapper'+ '_'+ cnt).className=='mylist')	
			var w = Element.getWidth('buzzwrapper'+ '_'+ cnt);
	else
			var w = Element.getWidth('buzzwrapper'+ '_'+ cnt)-194;

	//var nrReacties = $('cntRxs_'+cnt).innerHTML;
	//alert (17 + 2.5*nrReacties);
	var divHtml = "<div class='forward' id='forward' style='display: none; width:"+ w + "px; '>";
	var dum = new Insertion.After('buzzwrapper'+ '_'+ cnt, divHtml )	;
  var closeLink ="<a style='float:right;' href='javascript: hideForward("+cnt+");'>Sluit formulier</a>";

	new Ajax.Request('../buzz/buzz.php?act=reactform&id='+buzz_id +'&cnt='+cnt, {
									method: 'get',
									onSuccess: function(req) { 
																$('forward').innerHTML = closeLink + req.responseText 	;
																showForward();
																Event.observe($('reactbutton_'+cnt+'_ID'),"click", reactPost );
																Event.observe($('reactbutton_'+cnt+'_ID2'),"click", reactPost );
										
														}
												});	

}

function reactPost(e) {

	$('forwardloader').show();
	if (!e) var e = event;
	var splitres = Event.element(e).id.split('_');
	var cnt = splitres[1];

		var allNodes = Form.serialize("reactForm");
		if (client_id>0) ;
		else {
				if ($('loginForm')) {
								$('msg-vote'+'_' + cnt).hide();
								$('msg-vote'+'_' + cnt).innerHTML = "Log eerst via het loginformulier in";
								$('msg-vote'+'_' + cnt).style.height= '1em';
								dum = Effect.toggle('msg-vote' + '_' +  cnt, 'blind');
								return false;
				}
				else
						doLogin(cnt);
						return false;
		}

		var url = domain + 'buzz/reactBuzz.php';
		url = url + "?" + allNodes;
 
		Form.disable('reactForm');
		new Ajax.Request(url, {
									method: 'post',
									onSuccess: function(req) { 
											$('cntRxs_'+cnt).innerHTML= ' ' + req.responseText;
											hideForward();
														},
									onFailure: function(req) {
											new Insertion.Bottom('forward', "<p>Reactie niet opgeslagen. Probeer het later nogmaals</p>");
									}
				});	
}

function doLogin(cnt) {
  if ($('forward')) {
			Element.remove('forward');
	}

	var w = Element.getWidth('buzzwrapper'+ '_'+ cnt)-194;
	var divHtml = "<div class='forward' id='forward' style='display: none; height: 200px;  width:"+ w + "px;'>";
  var closeLink ="<a style='float:right;' href='javascript: hideForward("+cnt+");'>Sluit formulier</a></div>";
	var dum = new Insertion.After('buzzwrapper'+ '_'+ cnt, divHtml )	;
	new Ajax.Request('../buzz/buzz.php?act=loginForm&noBox=1&cnt='+cnt, {
									method: 'get',
									onSuccess: function(req) { 
																$('forward').innerHTML = closeLink + req.responseText ;														
																showForward();
																Event.observe($('login_'+cnt+'_ID'),"click",checkLogin);
																Event.observe($('login_'+cnt+'_ID2'),"click",checkLogin);
																if( document.addEventListener ) mozInlineBox();
																$('lbl-suggest'+'_'+cnt).hide();
														}
												});	

}

function checkLogin(e) {
	if (!e) var e = event;
	
	var splitres = Event.element(e).id.split('_');
	var cnt = splitres[1];
	var allNodes = Form.serialize("loginForm");

  if ($('forward')) {
			Element.remove('forward');
	}

	var w = Element.getWidth('buzzwrapper'+ '_'+ cnt)-194;
	var divHtml = "<div class='forward' id='forward' style='display: none; height: 20px;  width:"+ w + "px;'>";
  var closeLink ="<a style='float:right;' href='javascript: hideForward("+cnt+");'>Sluit formulier</a></div>";
	var dum = new Insertion.After('buzzwrapper'+ '_'+ cnt, divHtml )	;

	new Ajax.Request('../buzz/buzz.php?act=loginTest&noBox=1&'+allNodes, {
									method: 'post',
									onSuccess: function(req) { 
																if (req.responseText * 1 > 1) {
																		client_id = req.responseText* 1;
																		$('forward').innerHTML = closeLink + "<span class='frmmsg'>Je bent nu ingelogd en je mag nu buzzen</span>";														
																		refreshPersonal();
																		showAndHideForward();
																}
																else {
																		$('forward').innerHTML = closeLink + "<span class='frmmsg'>Inloggen is mislukt</span>";														
																		showAndHideForward();
																		setTimeout('doLogin('+cnt+')',3000);
																}
																
														}
												});	

}

function refreshPersonal() {
	new Ajax.Request('../buzz/buzz.php?act=personal-msg', {
									method: 'get',
									onSuccess: function(req) { 
																		$('personal-msg').innerHTML = req.responseText;														
														}
												});	
}

function deleteBuzz(e) {
	if (!e) var e = event;
	
	var splitres = Event.element(e).id.split('_');
	var cnt = splitres[1];

	var buzz_id;
	var el = Form.getElements('voteForm_'+cnt);
	for (i in el )  { 
			if (el[i].name == 'id')
				buzz_id = el[i].value;
	}

	if (confirm ('Buzz ' + buzz_id + ' verwijderen ?')) {
				new Ajax.Request('../buzz/deleteBuzz.php?id='+buzz_id, {
									method: 'get',
									onSuccess: function(req) { 
															var element = $('buzzwrapper_'+cnt);
															while (element.firstChild) {
  															element.removeChild(element.firstChild);
															}
														}
												});	

	}
	
}


function forwardBuzz(e) {
	clearMessages();
	if (!e) var e = event;
	
	var splitres = Event.element(e).id.split('_');
	var cnt = splitres[1];

	
	var buzz_id;
	var el = Form.getElements('voteForm_'+cnt);
	for (i in el )  { 
			if (el[i].name == 'id')
				buzz_id = el[i].value;
	}

	var w = Element.getWidth('buzzwrapper'+ '_'+ cnt)-194;

  if ($('forward')) {
			Element.remove('forward');
	}
	
	var divHtml = "<div class='forward' id='forward' style='display: none; height: 200px;  width:"+ w + "px;'>";
	var closeLink ="<a style='float:right;' href='javascript: hideForward("+cnt+");Event.stopObserving($(\"message\"),\"click\", messageClick);'>Sluit formulier</a></div>";

	var dum = new Insertion.After('buzzwrapper'+ '_'+ cnt, divHtml )	;

	new Ajax.Request('../buzz/buzz.php?act=forward&id='+buzz_id, {
									method: 'get',
									onSuccess: function(req) { 
																$('forward').innerHTML = closeLink + req.responseText;														
																showForward();
																Event.observe($('message'),"click", messageClick);
																Event.observe($('forwardbuttonID2'),"click", sendForward);
														}
												});	
}

function messageClick() {
		Field.select('message');
}

function hideForward() {

	Effect.Fade('forward',{duration:3});
	setTimeout('deleteForward()', 4000);

}

function deleteForward() {
  if ($('forward')) {
			Element.remove('forward');
	}
}

function showForward() {
	Effect.Appear('forward',{duration:1});
}

function showAndHideForward() {
	Effect.Appear('forward',{duration:1});
	setTimeout('hideForward()',1000);
}

function sendForward() {
		var allNodes = Form.serialize("forwardForm");
		var url = domain + 'buzz/forwardBuzz.php';
		url = url + "?" + allNodes;
 
		$('forwardloader').show();
		Form.disable('forwardForm');

		new Ajax.Request(url, {
									method: 'get',
									onSuccess: function(req) { 
											hideForward();
											Event.stopObserving($('message'),"click", messageClick);
														},
									onFailure: function(req) {
											new Insertion.Bottom('forward', "<p>Doorsturen niet gelukt; probeer het later nogmaals.</p>");
									}
				});	
}

function showSuggest (e) { 

	if (!e) var e = event;

	var splitres = Event.element(e).id.split('_');
	var cnt = splitres[1];

	var dum = Effect.Appear ('suggest'+'_' + cnt, {duration: 1 });
	var dum = Effect.Appear ('lbl-suggest'+'_' + cnt, {duration: 1 });

	$('suggestinput'+'_' + cnt).show();
	$('suggestButton'+'_' + cnt).hide();

	if ($('submitbuttonsuggest_'+cnt+'_ID')) Event.observe("submitbuttonsuggest_" + cnt + "_ID", "click", validateVote);
	if ($('submitbuttonsuggest_'+cnt+'_ID2')) Event.observe($('submitbuttonsuggest_' + cnt+ '_ID2'),"click", validateVote);

	$('submitbutton'+'_' + cnt + '_ID').hide();
	$('submitbutton'+'_' + cnt + '_ID2').hide();
}

function validateVote(e) {

	  clearMessages();
		var status = true;

			if (!e) var e = event;

		if (typeof(e)==='object' && Event.element(e).id) {;
			var splitres = Event.element(e).id.split('_');
			var cnt = splitres[1];
		}
		else
				cnt = e;

		var frm = $('voteForm_'+ cnt);
		var buzz_id;
		var el = Form.getElements('voteForm_'+cnt);
		for (i in el )  { 
			if (el[i].name == 'id')
				buzz_id = el[i].value;
		}

		var url ="";
		if (client_id>0) ;
		else {
				if ($('loginForm')) {
								$('msg-vote'+'_' + cnt).hide();
								$('msg-vote'+'_' + cnt).innerHTML = "Log eerst via het loginformulier in";
								$('msg-vote'+'_' + cnt).style.height= '1em';
								dum = Effect.toggle('msg-vote' + '_' +  cnt, 'blind');
								return false;
				}
				else {
										url = domain + 'buzz/voteBuzz.php';
										if ($F('suggest'+'_' + cnt) && $('suggest'+'_' + cnt).style.display != 'none' ) {
												url = domain + 'buzz/addAnswer.php';
												status = false;
												doLogin(cnt);
												return false;
										}
				}
		}

		url = domain + 'buzz/voteBuzz.php';
		if ($F('suggest'+'_' + cnt) && $('suggest'+'_' + cnt).style.display != 'none' ) 
		{
				// om dubbele suggests te voorkomen
				$('suggestinput'+'_' + cnt).hide();
				$('msg-vote'+'_' + cnt).hide();

				url = domain + 'buzz/addAnswer.php';
		}

	$('submitbutton'+'_' + cnt+ '_ID2').innerHTML= 'Stem buzz';

		allNodes = Form.serialize("voteForm"+'_' + cnt);
		var whereTheme = allNodes.indexOf("&answer=");

		if (whereTheme == -1 || ($F('suggest'+'_' + cnt) &&  !$F('suggest'+'_' + cnt))) {
				if (whereTheme == -1 && ($F('suggest'+'_' + cnt) &&  $F('suggest'+'_' + cnt))) {
					;	
				}
				else { 
								// als je al gestemd hebbt dan is validatie niet van toepassing 
								if (!$('buzzed_'+cnt)) {
												status = false;
												$('msg-vote'+'_' + cnt).hide();
												$('msg-vote'+'_' + cnt).innerHTML = "<span class='frmmsg'>Geen keuze gemaakt/veld ingevuld</span>";
												$('msg-vote'+'_' + cnt).style.height= '1.5em';
												var dum = Effect.toggle('msg-vote_' + cnt, 'blind' );
												return false;
								}
				}
		}


		if (status) {
			if (url== domain + 'buzz/addAnswer.php' ) {
							url = url + "?" + allNodes;
							new Ajax.Request(url, {
									method: 'get',
									onSuccess: function(req) { 
															$('msg-vote'+'_' + cnt).innerHTML = "<span class='frmmsg'>Je voorstel wordt voorgelegd aan de buzzer; na goedkeuring staat het online</span>";
															$('msg-vote'+'_' + cnt).style.height= '1.5em';
															var dum = Effect.toggle('msg-vote_' + cnt, 'blind' );
														}
												});	
			}
			else {
							url = url + "?" + allNodes + "&div_id=votes_" + cnt;
							getVotes(url,cnt);
							
							// een dom injectie om te checken of ie al gestemd heeft
							if (!$('buzzed_'+cnt)) {
														var buzzed = document.createElement('span');
														buzzed.id = 'buzzed_'+cnt;
														$('buzzstats_'+cnt).appendChild(buzzed);
							}
										
							return false;
			}
		}		
		return false;
}

function acceptSuggest(e) {
		if (!e) var e = event;
		handleSuggest(e,'accept');
}

function rejectSuggest(e) {
		if (!e) var e = event;
		handleSuggest(e,'reject');
}

function handleSuggest(e, action) {
		if (typeof(e)==='object' && Event.element(e).id) {;
			var txt = Event.element(e).parentNode.innerHTML;
			var pos = txt.indexOf('<');
			var choiceValue = txt.substring(0,pos); 
			var parentId = Event.element(e).parentNode.id
			var splitres = Event.element(e).parentNode.id.split('_');
			var poll_id = splitres[1];
			var id= splitres[2];
			divHtml = "<br />" + choiceValue;

			new Ajax.Request('../buzz/buzz.php?act='+action+'Choice&poll_id='+poll_id+'&id='+id, {
									method: 'get',
									onSuccess: function(req) { 
																if (action=='accept')
																var dum = new Insertion.Bottom('accepted_' + poll_id, divHtml )	;
																Element.remove($(parentId));
														}
												});	
		}
}


Event.observe(window,"load",myInitView);

