var waterlevel = new Array();
var rainfall = new Array();
var datestart = 0;

function plotGraph(idWell) {
	
	getWellArray(idWell);
	getRainfallArray(idWell);
    
    var maxWL =  waterlevel.max(1)  * 1.01;
    var minWL =  waterlevel.min(1)  * .96;
    
    var maxRF =  38;
    var minRF =  0;
          
    var plot = jQuery.plot(jQuery("#placeholder"), 
    	[ { data: waterlevel, label: "Water Level (Feet)" },
          { data: rainfall, label: "Rainfall (Inches)", yaxis: 2 }],
        {
    	series: {
	        lines: { show: true },
	        points: { show: false }
	    },
	    grid: { hoverable: true, clickable: true },  	
    	xaxis: {
            mode: "time",
            timeformat: "%y<br>%b",
            tickSize: [6, "month"]
	    },
        yaxis: { min:  minWL, max: maxWL}, 
        y2axis: { min: minRF, max: maxRF }, 
        legend: { position: 'ne' } 
        });
    
    function showTooltip(x, y, contents) {
        jQuery('<div id="tooltip">' + contents + '</div>').css( {
            position: 'absolute',
            display: 'none',
            top: y + 5,
            left: x + 5,
            border: '1px solid #fdd',
            padding: '2px',
            'background-color': '#fee',
            opacity: 0.80
        }).appendTo("body").fadeIn(200);
    }
 
    var previousPoint = null;
    jQuery("#placeholder").bind("plothover", function (event, pos, item) {
        jQuery("#x").text(pos.x);
        jQuery("#y").text(pos.y.toFixed(2));
 
        if (item) {
            if (previousPoint != item.datapoint) {
                previousPoint = item.datapoint;
                
                jQuery("#tooltip").remove();
                var x = item.datapoint[0]; 
                    y = item.datapoint[1].toFixed(2);
                 
                 var theDate = new Date(x); 
                 var dateString = theDate.getMonth()+1 + "/" + theDate.getFullYear(); 
                
                showTooltip(item.pageX, item.pageY,
                            item.series.label + " for " + dateString + " = " + y);
            }
        }
        else {
            jQuery("#tooltip").remove();
            previousPoint = null;            
        }
    });
 
    jQuery("#placeholder").bind("plotclick", function (event, pos, item) {
        if (item) {
            jQuery("#clickdata").text("You clicked point " + item.dataIndex + " in " + item.series.label + ".");
            plot.highlight(item.series, item.datapoint);
        }
    });
}

Array.prototype.max = function(col) { 
	var row; 
	var maxval = 0;
	for (row = 0; row < this.length; ++row) {
		if (parseFloat(this[row][col]) > maxval) {
			maxval = parseFloat(this[row][col]);
		}
	}
	return maxval;
} 
	 
Array.prototype.min = function(col) { 
	var row; 
	var minval = 9999999;
	for (row = 0; row < this.length; ++row) {
		if (parseFloat(this[row][col]) < minval) {
			minval = parseFloat(this[row][col]);
		}
	}
	return minval;
}

function getWellArray(idWell) {

	var aurl = "../../includes/forms/routeHandlerXML.php?reqType=wellwaterlevel&id="+idWell;
	jQuery.ajax({
		type: 'GET',
		url: aurl,
		async: false, 
		datatype: 'xml',
		error : function (XMLHttpRequest, textStatus, errorThrown){
	    	jQuery("#processResult").html("Get failed.");
		},
		complete : function(xml){
			var rtn = jQuery(xml.responseXML).find('rtn').text();
			if (rtn == 'OK'){
				var i=0;
				jQuery("#wellName").html(jQuery(xml.responseXML).find('NAME').text());
				jQuery("#lat").html(jQuery(xml.responseXML).find('LATITUDE').text());
				jQuery("#long").html(jQuery(xml.responseXML).find('LONGITUDE').text());
				jQuery("#elevation").html("Elevation: " + jQuery(xml.responseXML).find('ELEVATION').text());
				jQuery("#depth").html("Depth: " + jQuery(xml.responseXML).find('DEPTH').text());
				
				jQuery(xml.responseXML).find('row').each(function()
				{
					if (i==0){
						datestart = jQuery(this).find('DATE').text();
					}
					waterlevel[i] = new Array(2);
					waterlevel[i][0] = jQuery(this).find('DATE').text();
					waterlevel[i][1] = jQuery(this).find('WL').text();
					i++;
				});
			} else {
				jQuery("#wellName").html(jQuery(xml.responseXML).find('rtn').text());
				jQuery("#lat").html("");
				jQuery("#long").html("");
				jQuery("#elevation").html("");
				jQuery("#depth").html("");
				waterlevel = new Array(2);
			}
		}
	});	
}
function getRainfallArray(idWell) {

	var aurl = "../../includes/forms/routeHandlerXML.php?reqType=wellrainfall&id="+idWell;
	jQuery.ajax({
		type: 'GET',
		url: aurl,
		async: false, 
		datatype: 'xml',
		error : function (XMLHttpRequest, textStatus, errorThrown){
	    	jQuery("#processResult").html("Get failed.");
		},
		complete : function(xml){
			if (xml.status == 200) {
				var i=0;
				jQuery(xml.responseXML).find('row').each(function()
				{
					if (parseInt(jQuery(this).find('DATE').text())>= parseInt(datestart)){
						rainfall[i] = new Array(2);
						rainfall[i][0] = jQuery(this).find('DATE').text();
						rainfall[i][1] = jQuery(this).find('RAIN').text();
						i++;
					}
				});
			} else {
				jQuery('#placeholder').html(xml.responseText);
			}
		}
	});	
}