/************************************************************************************************************

	
************************************************************************************************************/	



var poll_ajax = new Array();
var poll_votes = new Array();
var graphMaxWidth = 162;

function isIE()
{
   return /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent);
}

function show_thanks(xml,poll_id,option_id){
  document.getElementById('poll_message' + poll_id).style.display='none';
  var reg = new RegExp("^.*?<poll_question>(.*?)<.*$","gi");
  var poll_question = xml.replace(reg,'$1');
  var reg = new RegExp("^.*?<show_feedback>(.*?)<.*$","gi");
  var show_feedback = xml.replace(reg,'$1');
  show_feedback = parseInt(show_feedback);
  var reg = new RegExp("^.*?<thanks>(.*?)<.*$","gi");
  var poll_message = xml.replace(reg,'$1'); 
  var reg = new RegExp("^.*?<poll_vote>(.*?)<.*$","gi");
  var poll_vote = xml.replace(reg,'$1'); 
  document.getElementById('poll_question'+poll_id).style.display='none';
  document.getElementById('main_div2').style.display='block';
  if(show_feedback==1){
  	document.getElementById('poll_feedback').style.display='block';	
  	document.getElementById('poll_feedback_txt').focus();
  }else{
  	document.getElementById('poll_feedback').style.display='none';	
  }
  document.getElementById('poll_vote_result'+poll_id).innerHTML = poll_message+"<BR><BR>";
  document.getElementById('poll_vote').value = poll_vote;
  document.getElementById('option_id').value = option_id;
  
  //document.getElementById('total_votes' + poll_id).style.display='none'; 
}
	
function show_results(poll_id,ajax_id,anim,results,option_id)
{
  var xml = poll_ajax[ajax_id].response;
  xml = xml.replace(/\n/gi,'');
  
  if(!results){
	show_thanks(xml,poll_id,option_id);
	return;
  }
  var result_div = document.getElementById('poll_results' + poll_id);
  var title_div = document.getElementById('poll_title' + poll_id);
  var option_div = document.getElementById('poll_vote_result' + poll_id);
  var total_div = document.getElementById('total_votes' + poll_id);

  var IE = isIE();
  document.getElementById('poll_message' + poll_id).style.display='none';
  document.getElementById('poll_question' + poll_id).style.display='none';

  var reg = new RegExp("^.*?<poll_question>(.*?)<.*$","gi");
  var poll_question = xml.replace(reg,'$1');

  var reg = new RegExp("^.*?<total_votes>(.*?)<.*$","gi");
  var total_votes = xml.replace(reg,'$1');

  var reg = new RegExp("^.*?<graph_left>(.*?)<.*$","gi");
  var graph_left_src = xml.replace(reg,'$1');

  var reg = new RegExp("^.*?<graph_center>(.*?)<.*$","gi");
  var graph_center_src = xml.replace(reg,'$1');

  var reg = new RegExp("^.*?<graph_right>(.*?)<.*$","gi");
  var graph_right_src = xml.replace(reg,'$1');

  var reg = new RegExp("^.*?<max_width>(.*?)<.*$","gi");
  graphMaxWidth = xml.replace(reg,'$1');

  var reg = new RegExp("^.*?<graph_font_size>(.*?)<.*$","gi");
  graphFontSize = xml.replace(reg,'$1');

  var reg = new RegExp("^.*?<graph_font_color>(.*?)<.*$","gi");
  graphFontColor = xml.replace(reg,'$1');

  var graphs = new Array();
  graphs[0] = new Image();
  graphs[1] = new Image();
  graphs[2] = new Image();
  graphs[0].src = graph_left_src;
  graphs[1].src = graph_center_src;
  graphs[2].src = graph_right_src;


  
  title_div.innerHTML=poll_question;	
  result_div.style.display="";

  var options = xml.split(/<option>/gi);
	
  poll_votes[poll_id] = new Array();
  //total_votes[poll_id] = 0;
  for(var no=1;no<options.length;no++){

		var elements = options[no].split(/</gi);
		var current_option_id = false;
		for(var no2=0;no2<elements.length;no2++){
			if(elements[no2].substring(0,1)!='/'){
				var key = elements[no2].replace(/^(.*?)>.*$/gi,'$1');
				var value = elements[no2].replace(/^.*?>(.*)$/gi,'$1');
			
				if(key.indexOf('option_text')>=0){
					var pOption = document.createElement('DIV');
					pOption.style.marginBottom="3px";
					pOption.innerHTML = value;
					option_div.appendChild(pOption);					
				}
				
				if(key.indexOf('option_id')>=0){
					current_option_id = value/1;
				}
				
				if(key.indexOf('votes')>=0){
					var voteDiv = document.createElement('DIV');
					if(IE==true) {voteDiv.style.styleFloat="left"; } else {voteDiv.style.cssFloat="left"; }
					option_div.appendChild(voteDiv);	
					
					var leftImage = document.createElement('IMG');
					leftImage.src = graph_left_src;
					if(IE==true) {leftImage.style.styleFloat="left";} else {leftImage.style.cssFloat="left";}
					voteDiv.appendChild(leftImage);
					
					
					var numberDiv = document.createElement('DIV');
					numberDiv.style.backgroundImage = 'url(\'' + graph_center_src + '\')';
					numberDiv.style.color = "#"+graphFontColor;
					numberDiv.style.fontSize = graphFontSize+"px";
					if(IE==true) {numberDiv.style.styleFloat="left";}else {numberDiv.style.cssFloat="left";}
					numberDiv.style.height="16px";
					numberDiv.style.lineHeight="16px";
					numberDiv.style.backgroundRepeat="repeat-x";

					numberDiv.id = 'result_txt' + current_option_id;
					voteDiv.appendChild(numberDiv);	
					if(anim==false) {
					   numberDiv.innerHTML = '0%';
					}
					else {
					   numberDiv.style.width = Math.max(15,Math.round(value/100*graphMaxWidth)) + 'px';
					   numberDiv.innerHTML = value+'%';
					}					

					var rightImage = document.createElement('IMG');
					rightImage.src = graph_right_src;
					if(IE==true) {rightImage.style.styleFloat="left";} else {rightImage.style.cssFloat="left";}
					voteDiv.appendChild(rightImage);

					var clearDiv = document.createElement('DIV');
					clearDiv.style.clear="both";
					option_div.appendChild(clearDiv);

					var breakDiv = document.createElement('DIV');
					breakDiv.style.marginBottom="6px";
					option_div.appendChild(breakDiv);

					poll_votes[poll_id][current_option_id] = value;
									
				}
			}
		}
	}
	

	total_div.innerHTML = total_div.innerHTML + ": " + total_votes;
	if(anim==false) {
	  slide_votes(poll_id,0);
	}
}

function slide_votes(poll_id,currentPercent)
{
	currentPercent = currentPercent/1 + 1;
	
	for(var prop in poll_votes[poll_id]){
		if(poll_votes[poll_id][prop]>=currentPercent){
			var obj = document.getElementById('result_txt' + prop);
			obj.innerHTML = currentPercent + '%';
			obj.style.width = Math.max(15,Math.round(currentPercent/100*graphMaxWidth)) + 'px';
		}			
	}
	if(currentPercent<100)setTimeout('slide_votes("' + poll_id + '","' + currentPercent + '")',1);
}



function exec_vote(poll_id,form_object,exeFile,results,str,mem_id,item_ids)
{	
	var elements = form_object.elements['vote[' + poll_id + ']'];
	var option_id = false;
	for(var no=0;no<elements.length;no++){
		if(elements[no].checked)option_id = elements[no].value;
	}
	if(option_id){
		var ajax_id = poll_ajax.length;
		poll_ajax[ajax_id] = new sack();
		if(exeFile=="empty") {
		    poll_ajax[ajax_id].requestFile = 'ajax-vote.php?poll_id=' + poll_id + '&option_id=' + option_id+'&query_string='+str+'&mem_id='+mem_id+'&item_ids='+item_ids;
		}
		else {

		    poll_ajax[ajax_id].requestFile = exeFile + '/ajax-vote.php?poll_id=' + poll_id + '&option_id=' + option_id+'&query_string='+str+'&mem_id='+mem_id+'&item_ids='+item_ids;							
		}

		//if(results){
			document.getElementById('poll_message' + poll_id).style.display='block';
		//}
		var anim=false;
		poll_ajax[ajax_id].onCompletion = function(){ show_results(poll_id,ajax_id,anim,results,option_id); };	
		poll_ajax[ajax_id].runAJAX();
	}
}	


function show_feedback_thanks(poll_id,ajax_id,option_id){
  var xml = poll_ajax[ajax_id].response;
  document.getElementById('poll_message' + poll_id).style.display='none';
  xml = xml.replace(/\n/gi,'');
  var reg = new RegExp("^.*?<thanks>(.*?)<.*$","gi");
  var poll_message = xml.replace(reg,'$1'); 
  document.getElementById('main_div2').style.display='none';
  document.getElementById('main_div3').style.display='block';
  document.getElementById('poll_feedback_result'+poll_id).style.display='block';
  document.getElementById('poll_feedback_result'+poll_id).innerHTML = poll_message+"<BR><BR>";
}
	
	

function exec_feedback(feedback,option_id,vote_id,poll_id,exeFile){
	if(feedback.length>0){
		document.getElementById('poll_feedback_result'+poll_id).style.display='block';
		var ajax_id = poll_ajax.length;
		poll_ajax[ajax_id] = new sack();
		if(exeFile=="empty") {
	    	poll_ajax[ajax_id].requestFile = 'ajax-feedback.php?poll_id=' + poll_id + '&option_id=' + option_id+'&vote_id='+vote_id+'&feedback='+escape(feedback);
		}else{	
	    	poll_ajax[ajax_id].requestFile = exeFile + 'ajax-feedback.php?poll_id=' + poll_id + '&option_id=' + option_id+'&vote_id='+vote_id+'&feedback='+escape(feedback);
		}
		poll_ajax[ajax_id].onCompletion = function(){ show_feedback_thanks(poll_id,ajax_id,option_id); };	
		poll_ajax[ajax_id].runAJAX();
	}else{
		alert('Feedback should not be empty');
	}	
}

function show_votes(poll_id,exeFile)
{
	document.getElementById('poll_question' + poll_id).style.display='none';
	document.getElementById('poll_preview' + poll_id).style.display='block';	
		
}

function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
}



