 //Create http for ajax communicate

 function createObject() {
  var request_type;
  var browser = navigator.appName;
  if(browser == "Microsoft Internet Explorer") {
	request_type = new ActiveXObject("Microsoft.XMLHTTP");
  }
  else {
	request_type = new XMLHttpRequest();
  }
  return request_type;
}

var http = createObject();

var nocache = 0;

function load(issue_num, vote_status){
	if (vote_status == "load")
	{
		var vote = "load";
	}
	else
	{
		var vote = vote_status;
	}
		http.open("POST", "load_ajax.php"); // true
		http.onreadystatechange = load_dash;
		http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
		http.send("issue_num="+ issue_num + "&vote=" + vote);
}

function load_dash(){
  if (http.readyState == 4) 
	{
		if (http.status == 200) 
		{
			var xmlDoc = http.responseXML;
			var listElements = xmlDoc.getElementsByTagName("list");
			var red = listElements[0].getElementsByTagName("red")[0].childNodes[0].nodeValue;
			var red_r_p = listElements[0].getElementsByTagName("red_r_p")[0].childNodes[0].nodeValue;
			var red_vote = listElements[0].getElementsByTagName("red_vote")[0].childNodes[0].nodeValue;

			var yellow = listElements[0].getElementsByTagName("yellow")[0].childNodes[0].nodeValue;
			var yellow_r_p = listElements[0].getElementsByTagName("yellow_r_p")[0].childNodes[0].nodeValue;
			var yellow_vote = listElements[0].getElementsByTagName("yellow_vote")[0].childNodes[0].nodeValue;

			var blue = listElements[0].getElementsByTagName("blue")[0].childNodes[0].nodeValue;
			var blue_r_p = listElements[0].getElementsByTagName("blue_r_p")[0].childNodes[0].nodeValue;
			var blue_vote = listElements[0].getElementsByTagName("blue_vote")[0].childNodes[0].nodeValue;

			var dial = listElements[0].getElementsByTagName("dial")[0].childNodes[0].nodeValue;
			var total = listElements[0].getElementsByTagName("total")[0].childNodes[0].nodeValue;
			if (total != 0)
			{
					var min = 0;
					var max = 100;
					var meter2 = new RGraph.Meter('meter2', min, max, dial);
					meter2.Set('chart.red.start', 0);
					meter2.Set('chart.red.end', red);
					meter2.Set('chart.yellow.start', red);
					meter2.Set('chart.yellow.end', yellow);
					meter2.Set('chart.green.start', yellow);
					meter2.Set('chart.green.end', 100);
					meter2.Set('chart.value.text', true);
					
					//meter2.Draw();
					RGraph.Effects.Meter.Grow(meter2);

					document.getElementById('under_text').innerHTML = "<span style='float:left'>%</span> TOTAL VOTES : " + total + "<span style='float:right'>%</span>";
					document.getElementById('red_p_v').innerHTML = red_r_p + "% (" + red_vote + ")";
					document.getElementById('yellow_p_v').innerHTML = yellow_r_p + "% (" + yellow_vote + ")";
					document.getElementById('blue_p_v').innerHTML = blue_r_p + "% (" + blue_vote + ")";
			}
			else
			{
				alert('Error!');
			}
		}
	}

}


//update dashboard when vote by user
function vote_update(ip_address, issue_num, vote_status){
	var vote_cookie = document.getElementById('vote_cookie').value;
	if(vote_cookie != '')
	{
					if(document.getElementById('thanks').style.display == "none")
					{
						$("#multi_error").fadeIn("slow");
					}
					else
					{
						document.getElementById("thanks").style.display = "none";
						$("#multi_error").fadeIn("slow");
					}
	}
	else
	{
	  if(ip_address != ' ' && issue_num != ' ')
	  {
		http.open("POST", "update_vote.php"); // true
		http.onreadystatechange = update_vote;
		http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
		http.send("ip="+ ip_address +"&issue_num="+ issue_num + "&vote_status=" + vote_status);
	  }
	  else
	  {
		alert("Occur Error for IP or ISSUE!");
	  }
	}
}

// ajax response function
function update_vote(){
  if (http.readyState == 4) 
	{
		if (http.status == 200) 
		{
			var xmlDoc = http.responseXML;
			var listElements = xmlDoc.getElementsByTagName("list");
			var result = listElements[0].getElementsByTagName("total")[0].childNodes[0].nodeValue;
			if (result == 1)
			{
				
				var issue_num = listElements[0].getElementsByTagName("issue")[0].childNodes[0].nodeValue;
				var vote = listElements[0].getElementsByTagName("vote")[0].childNodes[0].nodeValue;
					$("#thanks").fadeIn("slow");

				load(issue_num, vote);
			}
			else if (result == 'Multi')
			{
				if(document.getElementById('thanks').style.display == "none")
				{
					$("#multi_error").fadeIn("slow");
				}
				else
				{
					document.getElementById("thanks").style.display = "none";
					$("#multi_error").fadeIn("slow");
				}

			}
			else
			{
				alert("error");
			}
		}
	}
}
/////////////////////For Register////////////////////////////////////
function position_check(){
	var lat = document.getElementById("geo_latitude").value;
	var lng = document.getElementById("geo_longitude").value;
	if (lat == '' && lng == '')
	{
		alert('Please select position for your building!');
	}	
}


function register(){
	var first_name = document.getElementById("first_name").value;
	var last_name = document.getElementById("last_name").value;
	var email = document.getElementById("email").value;
	var building = document.getElementById("building").value;
	var unit = document.getElementById("unit").value;

	if (email != '')
	{
		var check_email = checkEmail(email);
	}
	else
	{
		alert('Email address Empty!');
	}

	if (first_name != '' && last_name != '' && check_email && building != '' && unit != '')
	{
		http.open("POST", "register.php"); // true
		http.onreadystatechange = register_view;
		http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
		http.send("first_name="+ first_name +"&last_name="+ last_name + "&email=" + email +"&building="+ building + "&unit=" + unit);
	}
	else
	{
		alert('Please provide everything data for required fields!');
	}
}

function register_view(){
  if (http.readyState == 4) 
	{
		if (http.status == 200) 
		{
			var xmlDoc = http.responseXML;
			var listElements = xmlDoc.getElementsByTagName("list");
			var result = listElements[0].getElementsByTagName("result")[0].childNodes[0].nodeValue;
			if (result == 1)
			{
					document.getElementById("registered").value = "yes";
					document.getElementById("registered_bulid").value = document.getElementById("building").value;
					document.getElementById("registered_unit").value = document.getElementById("unit").value;////???  value or val

				if(document.getElementById('exist_error').style.display == "inline")
				{
					document.getElementById('exist_error').style.display = 'none';
					$("#success").fadeIn("slow");
				}
				else
				{
					document.getElementById('exist_error').style.display = 'none';
					$("#success").fadeIn("slow");
				}
					var ip_address = document.getElementById("ip_address").value;
					var issue = document.getElementById("issue_number").value;
					var build = document.getElementById("registered_bulid").value;
					var unit = document.getElementById("registered_unit").value;
					bulid_click(issue, ip_address, build, unit, 'view', 'page2');
					document.getElementById('can_vote').innerHTML = "You can vote for " + build + " (" + unit + ")";
			}
			else if (result == 2)
			{
					$("#exist_error").fadeIn("slow");
			}
			else
			{
					$("#error").fadeIn("slow");
			}
		}
	}

}


function checkEmail(email) {
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (!filter.test(email)) 
	{
		alert('Please provide a valid email address');
		return false;
	}
	else
	{
		return true;
	}
}

/*********************For register form*************************/
function bulid_click(issue_id, ip_address, bulid_name, bulid_id, status, page_name){
	//alert("issue="+ issue_id +"&ip_address="+ ip_address + "&bulid=" + bulid_name + "&bulid_id=" + bulid_id + "&status="+ status + "&page_name="+ page_name);
	if (issue_id != '' && ip_address != '' && bulid_name != '' && bulid_id != '' && status != '')
	{
		http.open("POST", "bulid_view.php"); // true
		http.onreadystatechange = update_buliding_dial;
		http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
		http.send("issue="+ issue_id +"&ip_address="+ ip_address + "&bulid=" + bulid_name + "&bulid_id=" + bulid_id + "&status="+ status + "&page_name="+ page_name);
	}
	else
	{
		alert('Invaild Data!');
	}
}

function update_buliding_dial(){
  if (http.readyState == 4) 
	{
		if (http.status == 200) 
		{
			var xmlDoc = http.responseXML;
			//alert(xmlDoc);
			var listElements = xmlDoc.getElementsByTagName("list");
			var red = listElements[0].getElementsByTagName("red")[0].childNodes[0].nodeValue;
			var red_r_p = listElements[0].getElementsByTagName("red_r_p")[0].childNodes[0].nodeValue;
			var red_vote = listElements[0].getElementsByTagName("red_vote")[0].childNodes[0].nodeValue;

			var yellow = listElements[0].getElementsByTagName("yellow")[0].childNodes[0].nodeValue;
			var yellow_r_p = listElements[0].getElementsByTagName("yellow_r_p")[0].childNodes[0].nodeValue;
			var yellow_vote = listElements[0].getElementsByTagName("yellow_vote")[0].childNodes[0].nodeValue;

			var blue = listElements[0].getElementsByTagName("blue")[0].childNodes[0].nodeValue;
			var blue_r_p = listElements[0].getElementsByTagName("blue_r_p")[0].childNodes[0].nodeValue;
			var blue_vote = listElements[0].getElementsByTagName("blue_vote")[0].childNodes[0].nodeValue;

			var black = listElements[0].getElementsByTagName("black")[0].childNodes[0].nodeValue;
			var black_r_p = listElements[0].getElementsByTagName("black_r_p")[0].childNodes[0].nodeValue;
			var black_vote = listElements[0].getElementsByTagName("black_vote")[0].childNodes[0].nodeValue;

			var bulid = listElements[0].getElementsByTagName("bulid")[0].childNodes[0].nodeValue; 
			var bulid_id = listElements[0].getElementsByTagName("bulid_id")[0].childNodes[0].nodeValue;
			
			var dial = listElements[0].getElementsByTagName("dial")[0].childNodes[0].nodeValue;
			var vote = listElements[0].getElementsByTagName("vote")[0].childNodes[0].nodeValue;

			var total = listElements[0].getElementsByTagName("total")[0].childNodes[0].nodeValue;

			var page_name = listElements[0].getElementsByTagName("page_name")[0].childNodes[0].nodeValue;

			var error = listElements[0].getElementsByTagName("error")[0].childNodes[0].nodeValue;
			if (error == 0)
			{
				if (page_name == 'page3')
				{
					hbar_load('Y');
				}
					var min = 0;
					var max = 100;
				if (page_name == 'page3')
				{
					var meter3 = new RGraph.Meter('meter3', min, max, dial);
				}
				else
				{
					var meter3 = new RGraph.Meter('meter3', min, max, dial);
				}
					meter3.Set('chart.units.post', '');
					meter3.Set('chart.red.start', 0);
					meter3.Set('chart.red.end', red);
					meter3.Set('chart.yellow.start', red);
					meter3.Set('chart.yellow.end', yellow);
					meter3.Set('chart.green.start', yellow);
					meter3.Set('chart.green.end', blue);
		            meter3.Set('chart.black.start', blue);
		            meter3.Set('chart.black.end', 100);
					//meter2.Draw();
					RGraph.Effects.Meter.Grow(meter3);
					var total_votes = parseInt(red_vote) + parseInt(yellow_vote) + parseInt(blue_vote);
					var max_votes = parseInt(red_vote) + parseInt(yellow_vote) + parseInt(blue_vote) + parseInt(black_vote);
					document.getElementById('bulid_text').innerHTML = "<span style='float:left'>%</span> TOTAL VOTES : " + total + " <span style='float:right'>%</span>";
					document.getElementById('total_votes').innerHTML = "TOTAL VOTES FOR BUILDING : " + max_votes;
					document.getElementById('red_b_v').innerHTML = red_r_p + "% (" + red_vote + ")";
					document.getElementById('yellow_b_v').innerHTML = yellow_r_p + "% (" + yellow_vote + ")";
					document.getElementById('blue_b_v').innerHTML = blue_r_p + "% (" + blue_vote + ")";
					document.getElementById('black_b_v').innerHTML = black_r_p + "% (" + black_vote + ")";
					document.getElementById('select_text').innerHTML = bulid;
				if (page_name == 'page2')
				{
					document.getElementById('building').value = bulid;
					document.getElementById('black_num').value = black_vote;
					if(vote == 'Y' || vote == 'M' || vote == 'N')
					{
							document.getElementById('can_vote').style.display = "none";
							$("#thanks").fadeIn("slow");
					}
				}
					document.getElementById('c_bulid').val = bulid;
					//document.getElementById('c_bulid_id').val = bulid_id;
			}
			else if (error == 'insert_error')
			{
				alert('insert_error');
			}
			else if (error == 'max_error')
			{
				alert('Maximum votes reached for this building. If you own an unit in this building, please contact the webmaster.');
			}
			else if (error == 'vote_error')
			{
				alert('You have already voted for your unit in this building. If you own another unit in this building, please register this unit before voting again');
			}
			else if (error == 'no_register')
			{
				alert('You must register before vote.');
			}
			else
			{
				alert('Database error');
			}
		}
	}

}

function bulid_vote(issue_id, ip_address, status, vote){
	var register_check = document.getElementById("registered").value;
	var black_num = document.getElementById("black_num").value;
	if(register_check == 'yes')
	{
		if (black_num == 0)
		{
			alert('Maximum votes reached for this building. If you own a unit in this building, please contact the webmaster.');
		}
		else
		{
			var ip_address = document.getElementById("ip_address").value;
			var issue_id = document.getElementById("issue_number").value;
			var bulid = document.getElementById("registered_bulid").value;
			var unit = document.getElementById("registered_unit").value;

			//alert("issue="+ issue_id +"&ip_address="+ ip_address + "&bulid=" + bulid + "&bulid_id=" + unit + "&status="+ status +"&page_name=page2" + "&vote="+ vote);
			if (issue_id != '' && ip_address != '' && bulid != '' && unit != '')
			{
				http.open("POST", "bulid_view.php"); // true
				http.onreadystatechange = update_buliding_dial;
				http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
				http.send("issue="+ issue_id +"&ip_address="+ ip_address + "&bulid=" + bulid + "&bulid_id=" + unit + "&status="+ status +"&page_name=page2" + "&vote="+ vote);
			}
			else
			{
				alert('Invaild Data!');
			}
		}
	}
	else
	{
		alert('You must register building before vote.');
	}
}

function drop_bulid(issue_id, ip_address){
	var bulid_name = document.getElementById('drop_bulid').value;
	if (issue_id != '' && ip_address != '' && bulid_name != '')
	{
		http.open("POST", "bulid_view.php"); // true
		http.onreadystatechange = update_buliding_dial;
		http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
		http.send("issue="+ issue_id +"&ip_address="+ ip_address + "&bulid=" + bulid_name + "&bulid_id=flase"+ "&status=view" + "&page_name=page3");
	}
	else
	{
		alert('Invaild Data!');
	}

}

function go_page(page_name){
	window.location = page_name;
}

/****************************Horigental bar******************************/
function hbar_load(status){
	if (status != '')
	{
		http.open("POST", "top_ajax.php"); // true
		if (status == 'Y')
		{
			http.onreadystatechange = update_topbar_yes;
		}
		else
		{
			http.onreadystatechange = update_topbar_no;
		}
		http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
		http.send("status="+ status);
	}
	else
	{
		alert('Select Status');
	}
}
function update_topbar_yes(){
  if (http.readyState == 4) 
	{
		if (http.status == 200) 
		{
			var xmlDoc = http.responseXML;
			var list_Elements = xmlDoc.getElementsByTagName("list");
			var error = list_Elements[0].getElementsByTagName("error")[0].childNodes[0].nodeValue;
			var bulid_num = parseInt(list_Elements[0].getElementsByTagName("bulid_num")[0].childNodes[0].nodeValue);

			if (error == 1)
			{
				var bulid_Elements = xmlDoc.getElementsByTagName("bulid");
				var name_array = new Array();
				var yes_array = new Array();
				var no_array = new Array();
				var black_array = new Array();
				for (var i = 0; i < bulid_num; i++ )
				{
					var length_name = name_array.push(bulid_Elements[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
					var length_yes = yes_array.push(parseInt(bulid_Elements[i].getElementsByTagName("yes")[0].childNodes[0].nodeValue));
					var length_no = no_array.push(parseInt(bulid_Elements[i].getElementsByTagName("no")[0].childNodes[0].nodeValue));
					var length_black = black_array.push(parseInt(bulid_Elements[i].getElementsByTagName("black")[0].childNodes[0].nodeValue));
				}
///////////////////////////////////////////////////////////////////////////			
				var chart;
                chart = new Highcharts.Chart({
                    chart: {
                        renderTo: 'top_var',
                        defaultSeriesType: 'bar',
                        backgroundColor: '#F5F5F5'
                    },
                    title: {
                        text: 'TOP 10 BUILDINGS WHO VOTED YES'
                    },
                    xAxis: {
                        categories: name_array
                    },
                    yAxis: {
                        min: 0,
						max: 100,
                        title: {
                            text: 'Percentage'
                        }
                    },
                    legend: {
                        backgroundColor: '#F5F5F5',
                        reversed: true
                    },
                    tooltip: {
                        formatter: function() {
                            return ''+
                                 this.series.name +': '+ this.y +'%';
                        }
                    },
                    plotOptions: {
                        series: {
                            stacking: 'normal'
                        }
                    },
                        series: [{
                        name: 'REMAINDER',
                        data: black_array
                    }, {
                        name: 'YES',
                        data: yes_array
                    }]
                });
///////////////////////////////////////////////////////////////////////////
			}
			else
			{
				alert('Occur error in logic');
			}
		}
	}
	document.getElementById('yes').style.display = 'none';
	document.getElementById('no').style.display = 'inline';
}

function update_topbar_no(){
  if (http.readyState == 4) 
	{
		if (http.status == 200) 
		{
			var xmlDoc = http.responseXML;
			var list_Elements = xmlDoc.getElementsByTagName("list");
			var error = list_Elements[0].getElementsByTagName("error")[0].childNodes[0].nodeValue;
			var bulid_num = parseInt(list_Elements[0].getElementsByTagName("bulid_num")[0].childNodes[0].nodeValue);

			if (error == 1)
			{
				var bulid_Elements = xmlDoc.getElementsByTagName("bulid");
				var name_array = new Array();
				var yes_array = new Array();
				var no_array = new Array();
				var black_array = new Array();
				for (var i = 0; i < bulid_num; i++ )
				{
					var length_name = name_array.push(bulid_Elements[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
					var length_yes = yes_array.push(parseInt(bulid_Elements[i].getElementsByTagName("yes")[0].childNodes[0].nodeValue));
					var length_no = no_array.push(parseInt(bulid_Elements[i].getElementsByTagName("no")[0].childNodes[0].nodeValue));
					var length_black = black_array.push(parseInt(bulid_Elements[i].getElementsByTagName("black")[0].childNodes[0].nodeValue));
				}
///////////////////////////////////////////////////////////////////////////			
				var chart;
                chart = new Highcharts.Chart({
                    chart: {
                        renderTo: 'top_var',
                        defaultSeriesType: 'bar',
                        backgroundColor: '#F5F5F5'
                    },
                    title: {
                        text: 'TOP 10 BUILDINGS WHO VOTED NO'
                    },
                    xAxis: {
                        categories: name_array
                    },
                    yAxis: {
                        min: 0,
						max: 100,
                        title: {
                          text: 'Percentage'
                        }
                    },
                    legend: {
                        backgroundColor: '#F5F5F5',
                        reversed: true
                    },
                    tooltip: {
                        formatter: function() {
                            return ''+
                                 this.series.name +': '+ this.y +'%';
                        }
                    },
                    plotOptions: {
                        series: {
                            stacking: 'normal'
                        }
                    },
                        series: [{
                        name: 'REMAINDER',
                        data: black_array
                    },
					 {
                        name: 'NO',
                        data: no_array,
						color: '#EF3939',
                    }]
                });
///////////////////////////////////////////////////////////////////////////
			}
			else
			{
				alert('Occur error in logic');
			}
		}
	}
	document.getElementById('no').style.display = 'none';
	document.getElementById('yes').style.display = 'inline';
}




