/* DESCRIPTION: Javascript for the signup/edit account application */
/* AUTHOR: Michael Haderman */
/* Last Edited: 2008-02-01 by MDH */	


window.onload = function() { if($('bForecast')!=null) enableDisableAQI(); };

/* DESCRIPTION: Logic for when the user chooses to move back or forward
/* AUTHOR: Michael Haderman */
/* Last Edited: 2008-02-01 by MDH */		
/* DESCRIPTION: when user chooses a State from the list of states drop down menu in the forecast city selection process */
/* AUTHOR: Michael Haderman */
/* Last Edited: 2008-02-01 by MDH */
function populateCities() {	
	if( $( 'sStateID' ).value != 0 ) {
		var ajax = new Ajax.Request('remotefunctions.cfm', 
						{	asynchronous: false,
							method: 'post',						
							parameters: {	method: 'populateCities', 
											sStateID: $( 'sStateID' ).value
										},
							onSuccess: function(transport) {
					     		var response = transport.responseText.evalJSON(); // || "no response text";
								$( 'cities' ).innerHTML = '&nbsp;';
								$( 'twitter' ).innerHTML = '';
								$( 'response_msg' ).innerHTML = response.text;
								$( 'citySelectDiv' ).className = "formrow show";
								
						    },
						    onFailure: function(){		
						    	alert( 'failure' );
						    }
						  });
		}
	else {
		$( 'citySelectDiv' ).className = "formrow hide";
		$( 'response_msg' ).innerHTML = '&nbsp;';
	}
	
}

/* DESCRIPTION: logic for when the user enters a zip code in the forecast city selection process */
/* AUTHOR: Michael Haderman */
/* MODIFIED: 2008-02-01 by MDH */
function getClosestCityByZip( sZip ) {	
	if( validZipCode( sZip )) {
		var ajax = new Ajax.Request('remotefunctions.cfm', 
						{	asynchronous: false,
							method: 'post',						
							parameters: {method: 'getClosestCityByZip', sZipCode: sZip},
							onSuccess: function(transport) {
					     		var response = transport.responseText.evalJSON();
								switch( response.success ) {
									case 0:  //no records for that zip code
										$( 'cities' ).innerHTML = 'There are no EnviroFlash cities near ' + sZip + '.';
										$( 'twitter' ).innerHTML = '';
										break; 
									case 1:  //one record for that zip code so use it
										$( 'cities' ).innerHTML = response.text + '<input type="hidden" name="uCityID" id="uCityID" value="' + response.ucityid + '"/>';
								     		new Effect.Highlight($('selectedCityDiv'), {startcolor:'#FFFF00', endcolor:'#ffffff', restorecolor:'#ffffff', from:'0.5', to:'1',  duration:'5'});
										setThresholdSelector(response.ucityid);
										getTweetsByCityID(response.ucityid);
										break;
									case 2: //multiple records for that zip code, user must select one
										$( 'cities' ).innerHTML = response.text;
										$( 'twitter' ).innerHTML = '';
										break;
								}
								$( 'citySelectDiv' ).className = "formrow hide";
								$( 'response_msg' ).innerHTML = '&nbsp;';
								$( 'sStateID' ).options[0].selected = true;
						    },
						    onFailure: function() {
						    	alert( 'failure' );				
						    }
						  });
	}
	else	
		$( 'cities' ).innerHTML = '&nbsp;';
}

function setThresholdSelector(cityID){
	//check forecast sender
	if(checkSendoutExistance( cityID, 1 ) > 0){
		$('bForecast').disabled = false;
		$('bForecastMsg').style.display = 'none';
	}
	else{
		$('bForecast').checked = false;
		$('bForecast').disabled = true;
		$('bForecastMsg').style.display = 'inline';
	}

	//check realtime sender
	if(checkSendoutExistance( cityID, 2 ) > 0){
		$('bRealtime').disabled = false;
		$('bRealtimeMsg').style.display = 'none';
	}
	else{
		$('bRealtime').checked = false;
		$('bRealtime').disabled = true;
		$('bRealtimeMsg').style.display = 'inline';
	}
	
	//enable or disable radio buttons
	enableDisableAQI();
}

function checkSendoutExistance( cityID, uSenderTypeID ) {	
	var sendoutvalue = 0;
	var ajax = new Ajax.Request('remotefunctions.cfm', 
				{	asynchronous: false,
					method: 'post',						
					parameters: {method: 'checkSendoutExistance', iCityID: cityID, iSenderTypeID: uSenderTypeID},
					onSuccess: function(transport) {
			     		var response = transport.responseText.evalJSON();
				    	sendoutvalue = response.sendout;
				    },
				    onFailure: function() {
				    	sendoutvalue = 0;
				    }
				  });
	return sendoutvalue;
}

function getTweetsByCityID( cityID ) {	
	var ajax = new Ajax.Request('remotefunctions.cfm', 
				{	asynchronous: false,
					method: 'post',						
					parameters: {method: 'getTweetsByCityID', iCityID: cityID},
					onSuccess: function(transport) {
			     		var response = transport.responseText.evalJSON();
						$( 'twitter' ).innerHTML = response.text;
				    },
				    onFailure: function() {
				    	alert( 'failure' );
				    }
				  });
}

/* logic after a user selects a forecast city from the zip code or city drop down menu */
/* AUTHOR: Michael Haderman */
/* Last Edited: 2008-02-01 by MDH */
function updateFcstCity( value ) {
	$( 'cities' ).innerHTML = $('uCityID').options[ $('uCityID').selectedIndex].text +', ' + $( 'sSelectedStateID' ).value;
	new Effect.Highlight($('selectedCityDiv'), {startcolor:'#FFFF00', endcolor:'#ffffff', restorecolor:'#ffffff', from:'0.5', to:'1',  duration:'5'});
	setThresholdSelector(value)
	getTweetsByCityID(value);
}

/* Disable or enable all the radio buttons on the aqi range selection table */
/* AUTHOR: Michael Haderman */
/* Last Edited: 2008-02-01 by MDH */
function enableDisableAQI() {
	//Forecast radio buttons
	radioObj = document.getElementsByName( 'iForecastThreshold' );
	disable = false;
	
	if( $( 'bForecast' ).checked && $( 'threshold0' ).checked )
		$( 'threshold50' ).checked = true;
	else if ( $('bForecast').checked == false ) {
		$( 'threshold0' ).checked = true;
		disable = true;
	}
	
	for(var i = 1; i < radioObj.length; i++)
		radioObj[i].disabled = disable;

	//Realtime radio buttons
	radioAQIObj = document.getElementsByName( 'iInitialThresholdAQI' );
	disableAQI = false;
	
	//change thresholdAQI101 to thresholdAQI151 when done testing
	//change thresholdAQI51 to thresholdAQI101 when done testing
	//change if( $( 'bRealtime' ).checked && $( 'thresholdAQI51' ).checked )
	//to if( $( 'bRealtime' ).checked && $( 'thresholdAQI101' ).checked )
	
	
	if( $( 'bRealtime' ).checked && $( 'thresholdAQI101' ).checked )
		$( 'thresholdAQI151' ).checked = true;
	else if ( $('bRealtime').checked == false ) {
		$( 'thresholdAQI101' ).checked = true;
		disableAQI = true;
	}
		
	for(var i = 1; i < radioAQIObj.length; i++)
		radioAQIObj[i].disabled = disableAQI;

}

function showHideCityTool() {
	if( $('citySelectionTool').style.display == 'none' ) {
		$('citySelectionTool').show();
		$( 'cityChangeLink' ).innerHTML = 'Hide';
	}
	else {
		$('citySelectionTool').hide();
		$( 'cityChangeLink' ).innerHTML = 'Change City';
	}
	return false;
}
