var isInitRss = false;//true;
var filter_rank = 0;
var getRssParams = {};
$(document).ready(function(){	
/*
 	$(".filter-star").rating({
        callback: function(value, link){
 			getRssFilter();
 		}
 	});
 */
}); // end of renady
 
$(window).load(function(){
	checkAllFilter();
	checkOneFilter();
})
	
function checkAllFilter(){
	$("#js_filter_all").click( function(){
//			getRssFilter();
	})
}

function checkOneFilter(){
	$("input[name='filter_name[]']").livequery('click', function(){ 
		//getRssFilter();
		
		var config = {};
		var options = {};
		var eventType = $(this).attr('value');
		config['eventType'] = eventType;
		if(eventType == "keydev"){
			config['eventType'] = "article";
			options['filter'] = 'keydev';
			options['callback'] = 'keydevelopment';
		}
		else if(eventType == "earning" || eventType == "dividend" || eventType == "analystopinion"){
			config['eventType'] = "marketdata";
			
			if(eventType == "earning"){
				options['callback'] = "earning";
			}
			else if(eventType == "dividend"){
				options['callback'] = "dividend";
			}
			else if(eventType == 'analystopinion'){
				options['callback'] = "analystopinion";
			}
		}
		config['options'] = options;
		
		getFlexApp("assetChart").userConfigAnnotation(config);
	})
	
	
	/*
	$("input[name='filter_options_name[]']").livequery('click', function(){ 
		getRssFilter();
	})
	*/
}

function getRssFilter(){
	var config = {};
	$("input[name='filter_name[]']").each(function(i) {
		if( $(this).attr('checked')) {
			config['eventType'] = $(this).attr('value');
		}
	});
	config['options'] = {};
	$("input[name='filter_options_name[]']").each(function(i) {
		if( $(this).attr('checked')) {				
			config['options'][$(this).attr('id')] = $(this).attr('value');
		}
	});	
	
	 if( $(this).val() == $('input[name="'+$(this).attr("name")+'"]').val()){
         $(this).attr('checked', 'checked');
     }

	filter_rank = $("input[type=radio][name=filter-star]:checked").val();
	
	getFlexApp("assetChart").userConfigAnnotation(config);
}

 function getRss(options){
	var queryParam = "?";
	if(options.startTime && options.endTime){
		queryParam += "&starttime=" + options.startTime + "&endtime=" + options.endTime;
	}
	 
	if( typeof(filter_rank) != 'undefined' )  queryParam += "&rank=" + filter_rank;
	if( options.sector )  queryParam += "&sector=" + options.sector;
	if( options.industry )  queryParam += "&industry=" + options.industry;	
	if( options.filter ) queryParam += "&filter=" + options.filter;
	if( options.callback ){
		queryParam += "&callback=" + options.callback;
		if(options.callback == "keydevelopment")
			queryParam += "&count=1000";
	} 
	
	$.ajax({
		type: "GET",
		url: location.protocol + "\/\/" + location.host+"/restapi/events/" + options.eventType + "/tickers/" + options.ticker.toLowerCase() + queryParam,
		dataType: "json",
		error: function (XMLHttpRequest, textStatus, errorThrown){
		},
		success: function( data ){
			pushDataToFlexAndRenderArticle(data);
		},
		beforeSend:function(){
//			if(!options.callback)
//				$("#js_rss_content").html('<div class="show_load_tips">Loading asset\'s articles. Please wait...</div>');
		}
	})
 }
 
function initAnnotation( rssData ){	 
	if( rssData &&  rssData.events ){
	  refreshAnnotation(rssData);
	}
}
 
function pushDataToFlexAndRenderArticle(rssData){
	if( rssData && rssData.events ){
		refreshAnnotation(rssData);
	}
}

function requestAnnotation(params, ticker, startTime, endTime){
	//request dividend annotaitons
	if(params['eventType'].toLowerCase() == "marketdata"){
		var marketDataparams = {};
		
		if(params['options']['callback'] == "dividend"){
			marketDataparams = {
				ticker: ticker,
				attributes: ["amount", "exDividendDate"],
				callback: params['options']['callback']
			}
		}
		else if(params['options']['callback'] == "earning"){
			var endDate = new Date();
			endDate.setDate(endDate.getDate() + 183);
			marketDataparams = {
				ticker: ticker,
				attributes: ["earningDate", "earningEpsEstimate", "earningEpsActual", "earningDiffDate", "earningPreYearActual","earningDateTimeET", "earningEventTitle"],
				callback: params['options']['callback'],
				endTime: endDate.format('yyyyMMdd')
			}
		}
		else if(params['options']['callback'] == 'analystopinion'){
			marketDataparams = {
				ticker: ticker,
				attributes: ["upgradesDate","upgradesTicker","upgradesCompany","upgradesAnalyst","upgradesAction","upgradesFrom","upgradesTo","upgradesPriceTarget"],
				callback: params['options']['callback']
			}
		}
		getMarketDataAnnotations(marketDataparams);
	}
	else {
		if (!isInitRss || (params.options && params.options.callback)) {
			var options = params.options;
			var industry;
			var filter;
			var callback;
			if (options) {
				industry = options.industry;
				filter = options.filter;
				callback = options.callback;
			}
			getRssParams = {
				eventType: params.eventType,
				ticker: ticker,
				startTime: startTime,
				endTime: endTime,
				rank: 0,
				industry: industry,
				filter: filter,
				callback: callback
			};
			getRss(getRssParams);
		}
		else {
			isInitRss = false;
			initAnnotation(initRssData);
		}
	}
}

function getMarketDataAnnotations(params){
	var queryParam = "?";
	if(params['callback']){
		queryParam += "callback=" + params['callback'];
	}
	
	if(params['startTime']){
		queryParam += '&startTime=' + params['startTime'];
	}
	
	if(params['endTime']){
		queryParam += '&endTime=' + params['endTime'];
	}	
 
	var attributeStr = params['attributes'].join(",");
	 
	$.ajax({
		type: "GET",
		url: location.protocol + "\/\/" + location.host+"/restapi/assets/" + params.ticker + "/timeSeries/" + attributeStr + queryParam,
		dataType: "json",
		error: function (XMLHttpRequest, textStatus, errorThrown){
		},
		success: function( data ){
			refreshAnnotation(data);
		}
	});
}

function refreshAnnotation(jsonObj){
	getFlexApp("assetChart").loadAnnotation(jsonObj);
}

