var getWeather = {
	api : 'api_weather.php',
	
	time : '',
	weather : '',
	cache : false,
	retry : 0,
	
	get : function() {
	    $.ajax( {
	    	url: getWeather.api + '?time=' + ( new Date() ).getTime(),
	        async: true,
	        data: '',
	        dataType: 'html',
	        type: 'get',
	        success: function( data, dataType ) {
	    		if ( data == '' ) {
		    		getWeather.getRetry() ;
	    		} else {
		    		getWeather.weather = '天気:' + data ;
		    		getWeather.cached = true ;
		    		getWeather.retry = 0 ;
		    		
		    		$( '#headWeather' ).html( '<p>' + getWeather.time + ' ' + getWeather.weather + '</p>' ) ;
		    		
		    		var wait = 300000 - ( ( new Date() ).getTime() % 300000 ) ;	// 5 * 60 * 1000
		    		setTimeout( getWeather.get, wait ) ;
	    		}
	    	},
	    	error: function( XMLHttpRequest, textStatus, errorThrown ) {
	    		getWeather.getRetry() ;
	    	}
	    } ) ;
	},

	getRetry : function() {
		getWeather.retry++ ;
		
		if ( getWeather.retry < 5 ) {
    		setTimeout( getWeather.get, 10000 ) ;	// 10 * 1000
		} else {
    		getWeather.retry = 0 ;
    		setTimeout( getWeather.get, 300000 ) ;	// 5 * 60 * 1000
		}
	},

	set : function() {
		var Now = new Date() ;
		var HST = new Date( Now.getTime() + ( ( Now.getTimezoneOffset() - ( 10 * 60 ) ) * 60 * 1000 ) ) ;
		
		var year = HST.getFullYear() ;
		var month = ( '0' + ( HST.getMonth() + 1 ) ).slice( -2 ) ;
		var date = ( '0' + HST.getDate() ).slice( -2 ) ;
		var hours24 = HST.getHours() ;
		var ampm = ( hours24 > 11 ) ? 'PM' : 'AM' ;
		var hours = ( '0' + ( ( hours24 > 11 ) ? ( hours24 - 12 ) : hours24 ) ).slice( -2 ) ;
		var minutes = ( '0' + HST.getMinutes() ).slice( -2 ) ;
		
		getWeather.time = 'ハワイ時間:' + year + '/' + month + '/' + date + ' ' + ampm + hours + ':' + minutes ;
		var str = getWeather.time ;
		
		if ( getWeather.cached ) str += ' ' + getWeather.weather ;
		
		$( '#headWeather' ).html( '<p>' + str + '</p>' ) ;
		
		var wait = 60000 - ( Now.getTime() % 60000 ) ;
		
		setTimeout( getWeather.set, wait ) ;
	}
}



$( window ).load( function() {
	getWeather.set() ;
	getWeather.get() ;
} ) ;

