
var manamind_chart_mainSource = {
	type: "stock",
	market: "ose",
	ticker: "NHY"
};
var manamind_chart_defaultTimePeriod = 1;
var manamind_chart_calendar_ifFormat = "%d.%m.%y";

var manamind_chart_imgBase = "";

var manamind_chart_instrumentHeight;
var manamind_chart_instrumentOptions = new Array();
var manamind_chart_instrumentTypes = new Array();

var manamind_chart_analysisHeight;
var manamind_chart_analysisTypes = new Array();
var manamind_chart_analysisOptions = new Array();
var manamind_chart_analysisProperties = new Array();

var manamind_chart_overlayTypes = new Array();
var manamind_chart_overlayProperties = new Array();
var manamind_chart_overlayIds = new Array();

var manamind_chart_prefix = "manamind_fragmentChartMain_";

manamind_chart_startCenter = function() {
    manamind_chart_initAnalysis();
    manamind_chart_initInstruments();
	manamind_chart_initOverlays();
    manamind_chart_initForms();
}
window.onload = manamind_chart_startCenter;


function manamind_chart_applet() {
    /*var a = document.getElementById
        (manamind_chart_prefix + "applet_1");
    try {
        a.removeInstrument('test');
    } catch (error) {
        a = document.getElementById
            (manamind_chart_prefix + "applet_2");
    }*/
    return document.manamind_chart_swf;
}


function  manamind_chart_getMainInstrument() {
	return manamind_chart_mainSource;
}

function manamind_chart_changeObjectVisibility(id, value) {
    $(id).setStyle('display', value);
}


function manamind_chart_showObject(id, height) {
    var showEffect = new fx.Height($(id),
            { duration: 250 });
    if (height) {
        $(id).style.height = '0';
        showEffect.custom(0, height);
    } else {
        $(id).style.height = 'auto';
        //showEffect.show();
    }
    manamind_chart_changeObjectVisibility(id, 'block');
}


function manamind_chart_hideObject(id, height) {
    var showEffect = new fx.Height($(id),
            { mode: 'vertical', duration: 250 });
    if (height) {
        showEffect.custom(height, 0);
    } else {
        manamind_chart_changeObjectVisibility(id, 'none');
        //showEffect.hide();
    }
}


function manamind_chart_fadeObject(id, show) {
    var fadeEffect = new fx.Opacity($(id),
            { duration: 250 });
    if (show) {
        fadeEffect.custom(0.5, 1);
    } else {
        fadeEffect.custom(1, 0.5);
    }
}

function manamind_chart_initOverlays() {
	manamind_chart_overlayTypes = new  Array("news","adjusted","volume","turnover","trades");
	
	manamind_chart_overlayProperties["news"] = {  };					
	manamind_chart_overlayProperties["adjusted"] = { displayType: "line" };					
	manamind_chart_overlayProperties["volume"] = { secondary: true, displayType: "bar" };	
	manamind_chart_overlayProperties["turnover"] = { secondary: true, displayType: "bar" };						
	manamind_chart_overlayProperties["trades"] = {  };
}



function manamind_chart_initAnalysis() {
	manamind_chart_analysisTypes = new  Array("analysis-sma","analysis-ema","analysis-wma","volume","turnover","analysis-rsi","analysis-momentum","analysis-stochastic","analysis-roc");
	
	manamind_chart_analysisOptions["analysis-sma"] = new Array("duration");
	manamind_chart_analysisOptions["analysis-ema"] = new Array("duration");
	manamind_chart_analysisOptions["analysis-wma"] = new Array("duration");
	manamind_chart_analysisOptions["volume"] = new Array();
	manamind_chart_analysisOptions["turnover"] = new Array();	
	manamind_chart_analysisOptions["analysis-rsi"] = new Array("duration");
	manamind_chart_analysisOptions["analysis-momentum"] = new Array("duration");
	manamind_chart_analysisOptions["analysis-stochastic"] = new Array("duration");
	manamind_chart_analysisOptions["analysis-roc"] = new Array("duration");	
	
	manamind_chart_analysisProperties["analysis-sma"] = { indicator: false };					
	manamind_chart_analysisProperties["analysis-ema"] = { indicator: false };					
	manamind_chart_analysisProperties["analysis-wma"] = { indicator: false };					
	manamind_chart_analysisProperties["volume"] = { indicator: true, displayType: "bar" };					
	manamind_chart_analysisProperties["turnover"] = { indicator: true, displayType: "bar" };						
	manamind_chart_analysisProperties["analysis-rsi"] = { indicator: true };
	manamind_chart_analysisProperties["analysis-momentum"] = { indicator: true };
	manamind_chart_analysisProperties["analysis-stochastic"] = { indicator: true };
	manamind_chart_analysisProperties["analysis-roc"] = { indicator: true };	
}



function manamind_chart_timePeriodMenuChanged(value) {
	if(value == 99) {
		manamind_chart_showObject("manamind_fragmentChartMain_timePeriod_manual");
		manamind_chart_setFromAndToDate();	    
	} else {
		manamind_chart_hideObject("manamind_fragmentChartMain_timePeriod_manual");
		
		// Set input fields
		manamind_chart_applet().setTimePeriod(value);
		
        if(value != -1) {
    	    var toDate = manamind_chart_applet().getToDate();
    	    var fromDate = manamind_chart_applet().getFromDate();
    	}
    }
    
}

function manamind_chart_setFromAndToDate() {
    manamind_chart_applet().setFromAndToDate(
         Date.parseDate($("inputchartMenufromDate").value,manamind_chart_calendar_ifFormat) ,
         Date.parseDate($("inputchartMenutoDate").value,manamind_chart_calendar_ifFormat)
         );
    
}

function manamind_chart_initForms() {
    // Reset the time select (mozilla reload)
    var id = manamind_chart_prefix + 'timePeriod';
    $(id).value = manamind_chart_defaultTimePeriod;
    // Reset the instrumentType select (mozilla reload)
    id = manamind_chart_prefix + 'instrumentType';
    $(id).value = 'stock';
}


function manamind_chart_initInstruments() {
    manamind_chart_instrumentTypes = new Array
        ("stock", "index", "currency");
    manamind_chart_instrumentOptions["stock"] = new Array(
        { name: "market", values: new Array("ose") }
    );
    manamind_chart_instrumentOptions["index"] = new Array(
        { name: "market", values: new Array("ose") }
	);
}

function manamind_chart_changeInstrumentType() {
    var id = manamind_chart_prefix + 'instrumentType';
    var selected = $(id).value;
    manamind_chart_showHideAlternatives
        (id, selected, manamind_chart_instrumentTypes);
}

function manamind_chart_changeAnalysisType() {
    var id = manamind_chart_prefix + 'analysisType';
    var selected = $(id).value;
    manamind_chart_showHideAlternatives
        (id, selected, manamind_chart_analysisTypes);
}


function manamind_chart_configureInstrumentOptions(type, key) {
    var options = manamind_chart_instrumentOptions[type];
    if (!options) {
        return;
    }
    var id = manamind_chart_prefix + 'instrumentType_' + type + 'Select';
    var value = $(id).value;
    var prefix = manamind_chart_prefix + 'instrumentType_' + type;
    for (var i = 0; i < options.length; i++) {
        if (options[i].name == key) {
            manamind_chart_showHideAlternatives
                (prefix, value, options[i].values);
        }
    }
}


function manamind_chart_showHideAlternatives(prefix, selected, list) {
    for (i = 0; i < list.length; i++) {
        if (list[i] == selected) {
            manamind_chart_showObject(prefix + "_" + list[i]);
        } else {
            manamind_chart_hideObject(prefix + "_" + list[i]);
        }
    }
}


function manamind_chart_getAnalysisSource() {
	var id = manamind_chart_prefix + "analysisType";	
	var source = manamind_chart_getMainInstrument();
	var analysisType = $(id).value;	
	
	// default values
	source.history = true;
	source.intraday = true;
	source.dataType = analysisType;	
	source.indicator = true;
	source.secondary = false;
	source.displayType = "line";
	source.units = 1;
	source.contractLength = 1;
	source.duration = 0;
		
	// analysis values
	var props = manamind_chart_analysisProperties[analysisType];
	for(var key in props)	{
		source[key] = props[key];
	}
	
	var options = manamind_chart_analysisOptions[$(id).value];
	for(i = 0; i < options.length; i++) {
		var optionId = manamind_chart_prefix + "analysisType_" + analysisType + "_" + options[i];
		var input = $(optionId);
		source[options[i]] = $(optionId).value;
	}

	
	return source;
}


function manamind_chart_getOverlaySource(overlayType, lang, languageFilter, sourceFilter) {	
	var source = manamind_chart_getMainInstrument();	
	
	// default values
	source.history = true;
	source.language = lang;
	source.languageFilter = languageFilter;
	source.sourceFilter = sourceFilter;
	source.intraday = true;
	source.dataType = overlayType;	
	source.indicator = false;
	source.secondary = false;
	source.displayType = "symbol";
	source.units = 1;
	source.contractLength = 1;
	source.duration = 0;
		
	// overlay values
	var props = manamind_chart_overlayProperties[overlayType];
	for(var key in props)	{
		source[key] = props[key];
	}

	
	return source;
}


function manamind_chart_getInstrumentSource() {
    var id = manamind_chart_prefix + "instrumentType";
	var source = {};
	
	var value = $(manamind_chart_prefix + "instrumentType_stock_item").value;
    var sourceItem;
    if (value.indexOf(";") < 0) {
	    sourceItem = value.split(":");
    } else {
        sourceItem = value.split(";");
    }
	var sourceString = sourceItem[0];
	var item = sourceItem[1];
	var sourceParts = sourceString.split(".");
	var market = sourceParts[1];
	var type = "stock";
//	alert('hereitis: ' + sourceParts(2)));
	if (sourceParts[1] == 'lme' && sourceParts[2] == 'index') {
	    // feed.lme.index
		type = "aluminium";
	} else if (sourceParts[2] == 'index') {
	    // feed.ose.index
		type = "index";
	} else if (sourceParts[1] = 'nordpool' && sourceParts[2] == 'elspot') {
        // feed.nordpool.elspot
		type = "elspot";
	}
//	alert('hereitis: type = ' + sourceParts(2)) + ' market = ' + market + ' type2 = ' + type);
	
	source.type = type;
	source.market = market;
	source.ticker = item;
	source.contractLength = 1;
	source.duration = 0;
	source.history = true;
	source.intraday = true;
	source.dataType = "price";	
	source.analysis = true;
	source.indicator = false;
	source.secondary = false;
	source.displayType = "line";
	source.units = 1;
	source.contractLength = 1;
	source.duration = 0;

    return source;
}


function manamind_chart_removeInstrument(el) {
    var source = el.getProperty('id');
    var prefix = manamind_chart_prefix + "remove_";
    source = source.substr(prefix.length);
    manamind_chart_applet().removeInstrument(source);
}


function manamind_chart_addInstrument() {
    var id = manamind_chart_prefix + 'instrument_item';
    var template = id + 'Template';
    var source = manamind_chart_getInstrumentSource();
    var elementId = manamind_chart_applet().addInstrument(source);
	if(!elementId) { return; }
	
    var clone = manamind_chart_prefix + elementId;
    var cloneRemove = manamind_chart_prefix + 'remove_' + elementId;

    // set up DIV in GUI with loading analysis
    var newComp = $(template).clone();
    newComp.setProperty('id', clone);
    var removeLink = newComp.getElement('img', id + '_remove');
    removeLink.setProperty('id', cloneRemove);
    newComp.injectInside($(manamind_chart_prefix + 'instrument_items'));
    manamind_chart_showObject(clone);

}

function manamind_chart_addAnalysis() {
    var id = manamind_chart_prefix + 'analysis_item';
    var template = id + 'Template';
    var source = manamind_chart_getAnalysisSource();
    
    var elementId = manamind_chart_applet().addInstrument(source);
	if(!elementId) return;
	
    var clone = manamind_chart_prefix + elementId;
    var cloneRemove = manamind_chart_prefix + 'remove_' + elementId;

    // set up DIV in GUI with loading analysis
    var newComp = $(template).clone();
    newComp.setProperty('id', clone);
    var removeLink = newComp.getElement('img', id + '_remove');
    removeLink.setProperty('id', cloneRemove);
    newComp.injectInside($(manamind_chart_prefix + 'analysis_items'));
    manamind_chart_showObject(clone);
}

function manamind_chart_showHideOverlay(overlayType, show, lang, languageFilter, sourceFilter) {
    var source = manamind_chart_getOverlaySource(overlayType, lang, languageFilter, sourceFilter);
   	var elementId;

	// Hide checkbox
	
	if(show) {
    	elementId = manamind_chart_applet().addInstrument(source);			
	}
	else {
		elementId = manamind_chart_applet().removeInstrument(manamind_chart_overlayIds[overlayType]);
	}
		
	if(!elementId) return;
	
	manamind_chart_overlayIds[overlayType] = elementId;
	
}


//
// Applet callbacks
//
function manamind_chart_chartReady() {
    manamind_chart_applet().setTimePeriod(manamind_chart_defaultTimePeriod);
	
	var source = {		
			history: true,
			intraday: true,
			contractLength: 1,
			dataType: "price",
			displayType: "line",
			indicator: false,
			secondary: false,
			units: 1,
			duration: 0
	};
	// overlay values
	var props = manamind_chart_mainSource;
	for(var key in props)	{
		source[key] = props[key];
	}
	manamind_chart_applet().addInstrument(source);
	
}


function manamind_chart_chartFailed(exception) {
    var idLoading = manamind_chart_prefix + "loading";
    $(idLoading).setStyle('display', 'none');
    alert(exception);
}


// Change temporary analysis to configuration box
function manamind_chart_addChartElementSuccess(displayName, elementId) {
     var compDiv = $(manamind_chart_prefix + elementId);
     if (compDiv) {
            var removeLink = compDiv.getElement('img');
            removeLink.addEvent('click', function() {
                manamind_chart_removeInstrument(this);
                return false;
            });
            removeLink.setProperty
                ('src', manamind_chart_imgBase + "/bin_closed.png");
            var longName = compDiv.getElement('span');
            longName.setHTML(displayName);
        }
}


// Remove temporary analysis
function manamind_chart_addChartElementFailed(elementId) {
    var id = manamind_chart_prefix + elementId;
	if($(id))
    	$(id).remove();
}

// Show drill-down data
function manamind_chart_setChartElementData(type, code, data) {
    if (type == 'instrument') {
        var id = manamind_chart_prefix + 'instrument_item_';
		var spans = $$('#' + id + code + ' span');
		for(i=0;i<spans.length;i++) {
			if(spans[i].attributes["name"] != null) {
				if(spans[i].attributes["name"].value == 'value')
            		spans[i].setHTML(data[0]);
				else if(spans[i].attributes["name"].value == 'changePct')
					spans[i].setHTML(data[1]);
			}
        }
    }
}


// Remove configuration box
function manamind_chart_removeChartElementSuccess(type, elementId) {
   var id = manamind_chart_prefix + elementId;
	if($(id))
	    $(id).remove();
}


function manamind_chart_removeChartElementFailed(type, elementId) {
   var id = manamind_chart_prefix + elementId;
	if($(id))
	    $(id).remove();
}

// Links clicked in chart

function getQueryVariable(text, variable) { 
  var query = text.substring(1); 
  var vars = query.split("&"); 
  for (var i=0;i<vars.length;i++) { 
    var pair = vars[i].split("="); 
    if (pair[0] == variable) { 
      return unescape(pair[1]); 
    } 
  } 
  return "";
}

function manamind_chart_link(text) {
	switch(getQueryVariable(text, "type")) {
		case "news": 
		 	var url = getQueryVariable(text, "url");
			var win = window.open(url, 'news');
			win.focus();
			break;
	}
}

// Printing

function manamind_chart_doPrint() {
	manamind_chart_applet().doPrint();
}

function manamind_chart_doPdf() {
	var pngData = manamind_chart_applet().generatePNG();
  	document.pdfprint.png.value = pngData;
	document.pdfprint.submit();
}

// Calendar support


function manamind_chart_showFromDates(date, y, m, d){
    var today = new Date();
    today.setDate(today.getDate());
	var toDateStr = $("inputchartMenutoDate").value;
	var toDate = Date.parseDate(toDateStr, manamind_chart_calendar_ifFormat);
    if(today<date || date >= toDate){
        return true;
    }else{
        return false;
    }
}

function manamind_chart_showToDates(date, y, m, d){
    var today = new Date();
    today.setDate(today.getDate());
	var fromDateStr = $("inputchartMenufromDate").value;
	var fromDate = Date.parseDate(fromDateStr, manamind_chart_calendar_ifFormat);
    if(today<date || date <= fromDate){
        return true;
    }else{
        return false;
    }
}



