var COOKIE_NAME = 'current_currency';
var COOKIES_EXPIRES = 8;

var handleCurrencesList;		// handle for action to get currences list
var currencesList;				// currency list (array)

var originalCurrency;			// original ticker's currency 
var originalPrice;
var originalDayLow;
var originalDayHigh;
var originalOpenPrice;
var originalClosePrice;
var originalYearLow;
var originalYearHigh;
var originalDividend;
var originalHistory;
var ticker;
var rateList;

var currentCurrency;			// currently choosed currency
var currentId;
//var numberDecimalPrecision = 4;
  
//--------------------------------------------------------------

function getCurrencesList()
{
	$.getJSON(handleCurrencesList,{originalCurrency: originalCurrency},function(json){
		if (json == null) {
			return;
		}

//		var size = json.length;
		for(var i in json)
//		for (var i=0;i<size;i++)
		{
			currencesList[json[i].id] = json[i];
			if(originalCurrency == currencesList[json[i].id].sign) rateList = currencesList[json[i].id].rate;	
		}	
		
		// getting currency Id
		getIdForCurrency();
		
		// generating select
		generateSelect();	

		// init slider
		initCurrences();
	});	
}

function generateSelect()
{
	for(var i in currencesList)
	{
		if(currencesList[i].sign == currentCurrency[0])
		{
			$('#listCurrences').append('<li><strong>'+currencesList[i].symbol+' - '+currencesList[i].description+'</strong></li>');
		}
		else 
		{
//			$('#listCurrences').append('<li></li>');
//			$('#listCurrences li:last').append($('<a>').attr('href','#').attr('id','currencyId_'+currencesList[i].id).html(currencesList[i].symbol));
			$('#listCurrences').append('<li><a id="currencyId_'+currencesList[i].id+'" href="#">'+currencesList[i].symbol+' - '+currencesList[i].description+'</a></li>');
		}
		$('#listCurrences li:last').css('display','none');
	}
	
	// init actions
	initCurrencyActions(0);
	
	// autoclick
	updateValues(currentId);
}

function initCurrencyActions()
{
	$('#listCurrences li a').click(function()
	{
		if(!$(this).parent().hasClass('currency-holder'))
		{
			// init variables
			var clickedCurrency = $(this).attr('id').split('_');
			
			// update cookie
			$.cookie(COOKIE_NAME, currencesList[clickedCurrency[1]].sign+';'+ticker, { path: '/', expires: COOKIES_EXPIRES });
			
			// update current currency
			currentCurrency = $.cookie(COOKIE_NAME).split(";");
			
			// update currences list
			var header = $('#listCurrences li:first');
			$('#listCurrences').empty().append('<li></li>');
			$('#listCurrences li:last').attr('class','currency-holder').html(header.html());
			generateSelect();
			// update values
			updateValues(clickedCurrency[1]);
		}
        $('#listCurrences').addClass('no-active').css('border','none').children().hide();
        $('#coverMenu').remove();
        return false;
	});	
}

function updateValues(clicked_id)
{
	if(currencesList.length)
	{
		$('#rate_current_symbol').html(currencesList[clicked_id].symbol);
		$('#rate_current_symbol_1').html(currencesList[clicked_id].symbol);
		$('#rate_current_symbol_2').html(currencesList[clicked_id].symbol);
	
		if(currentCurrency[0] == originalCurrency)
		{
//			$('#rate_current_price').html(originalPrice.toString().replace('.',separatorDecimal));
			$('#rate_current_price').html(setNewFormat(originalPrice,2));
			
			if(originalOpenPrice != null)
			{
//				$('#rate_current_price_1').html(originalPrice.toString().replace('.',separatorDecimal));
//	
//				$('#rate_open_price').html(originalOpenPrice.toString().replace('.',separatorDecimal));
//				$('#rate_close_price').html(originalClosePrice.toString().replace('.',separatorDecimal));
//				
//				$('#rate_day_low').html(originalDayLow.toString().replace('.',separatorDecimal));
//				$('#rate_day_high').html(originalDayHigh.toString().replace('.',separatorDecimal));
//				$('#rate_year_low').html(originalYearLow.toString().replace('.',separatorDecimal));
//				$('#rate_year_high').html(originalYearHigh.toString().replace('.',separatorDecimal));
//				
//				$('#rate_dividend').html(originalDividend.toString().replace('.',separatorDecimal));
				$('#rate_current_price_1').html(setNewFormat(originalPrice,3));
				
				$('#rate_open_price').html(setNewFormat(originalOpenPrice,4));
				$('#rate_close_price').html(setNewFormat(originalClosePrice,4));
				
				$('#rate_day_low').html(setNewFormat(originalDayLow,4));
				$('#rate_day_high').html(setNewFormat(originalDayHigh,4));
				$('#rate_year_low').html(setNewFormat(originalYearLow,4));
				$('#rate_year_high').html(setNewFormat(originalYearHigh,4));
				
				$('#rate_dividend').html(setNewFormat(originalDividend,4));
			}
			if(originalHistory != new Array())
			{
				calculateHistoryForCurrency(clicked_id,1);
			}	
		}
		else 
		{
			$('#rate_current_price').html(setNewFormat(originalPrice * rateList[clicked_id],3));
			
			if(originalOpenPrice != null)
			{
				$('#rate_current_price_1').html(setNewFormat(originalPrice * rateList[clicked_id],3));
	
				$('#rate_open_price').html(setNewFormat(originalOpenPrice * rateList[clicked_id],4));
				$('#rate_close_price').html(setNewFormat(originalClosePrice * rateList[clicked_id],4));
				
				$('#rate_day_low').html(setNewFormat(originalDayLow * rateList[clicked_id],4));
				$('#rate_day_high').html(setNewFormat(originalDayHigh * rateList[clicked_id],4));
				$('#rate_year_low').html(setNewFormat(originalYearLow * rateList[clicked_id],4));
				$('#rate_year_high').html(setNewFormat(originalYearHigh * rateList[clicked_id],4));
			
				$('#rate_dividend').html(setNewFormat(originalDividend * rateList[clicked_id],4));
			}
			
			if(originalHistory != new Array())
			{
				calculateHistoryForCurrency(clicked_id,0);
			}
		}
	}
}

function calculateHistoryForCurrency(clicked_id,to_original)
{
	var size_x = originalHistory.length;
	for(var x=0;x<size_x;x++)
	{
		var size_y = originalHistory[x].length;
		for(var y=0;y<size_y;y++)
		{
			if(to_original == 0)
			{
				$('#rate_history_'+x+'_'+y).html(setNewFormat(originalHistory[x][y].replace(',','.') * rateList[clicked_id],2));
			}
			else 
			{
				$('#rate_history_'+x+'_'+y).html(originalHistory[x][y]);
			}
		}
	}	
}

function prepareTabForHistory()
{
	var columns = 4;
	var max = 100;
	for(var x=0;x<max;x++)
	{
		originalHistory[x] = new Array();
		for(var y=0;y<columns;y++)
		{
			if($('#rate_history_'+x+'_'+y).html() != null)
			{
				originalHistory[x][y] = $('#rate_history_'+x+'_'+y).html();
			}
			else
			{
				break;
			}
		}
	}
}

function setNewFormat(number,numberDecimalPrecision)
{
//	number = 53.0000; // only for test
	number = 0 + number;
	var tmp = number.toFixed(numberDecimalPrecision).toString();
	var tmp_as_tab = tmp.split('.');
	tmp_as_tab[0] = includeThousandSeparator(tmp_as_tab[0]);
	
	return (tmp_as_tab[0] + '.' + tmp_as_tab[1]).replace('.',separatorDecimal);
}

function getIdForCurrency()
{
	for(var i in currencesList)
	{
		if(currencesList[i].sign == currentCurrency[0])
		{
			currentId = i;
			break;
		}
	}
}

function includeThousandSeparator(number)
{
	var tmp = number.toString();
	var result = '';
	var len = tmp.length;
	while(len > 3)
	{
		result = separatorThousandth + tmp.substr(len-3,3) + result;
		len -= 3;
	}
	return tmp.substr(0,len) + result;
}

//--------------------------------------------------------------

$(document).ready(function()
{
	// init global variables
	currencesList = new Array();
	rateList = new Array();	
	originalHistory = new Array();
	
	// init cookies
	if($.cookie(COOKIE_NAME) != null)
	{
		var temp_currentCurrency = $.cookie(COOKIE_NAME).split(";");
		
		// update cookie
		if(ticker == temp_currentCurrency[1])
		{
			$.cookie(COOKIE_NAME, temp_currentCurrency[0]+';'+temp_currentCurrency[1], { path: '/', expires: COOKIES_EXPIRES });
		}
		else
		{
			$.cookie(COOKIE_NAME, originalCurrency+';'+ticker, { path: '/', expires: COOKIES_EXPIRES });
		}
	}
	else
	{
		// init cookie
		$.cookie(COOKIE_NAME, originalCurrency+';'+ticker, { path: '/', expires: COOKIES_EXPIRES });
	}
	currentCurrency = $.cookie(COOKIE_NAME).split(";");

	// init currences list
	getCurrencesList();
	
	// init history tab
	prepareTabForHistory();
});
   
