/** Loader Funktionen **/

function showLoader(f) {
    var dbLoader = new getObj('GUI_loader');
    dbLoader.style.display='block';
    dbLoader.style.height='900px';
     if(f) {
	    var submitButton = new getObj(f);
	    submitButton.obj.disabled  = true;
	}
}

function cancelLoader()
{
	var dbLoader = new getObj('GUI_loader');
    dbLoader.style.display='none';
}

/** Language **/
var lang = Array();
lang['de'] = Array();
lang['en'] = Array();

lang['de']['This query'] = 'Diese Produktsuche';
lang['de']['Seller query'] = 'Allgemeine Analyse';
lang['de']['Item query'] = 'Produkt-Analyse';
lang['de']['For'] = 'Zu';
lang['de']['At eBay'] = 'Bei eBay';

lang['en']['This query'] = 'This Query';
lang['en']['Seller query'] = 'Seller Query';
lang['en']['Item query'] = 'Item Query';
lang['en']['For'] = 'For';
lang['en']['At eBay'] = 'At eBay';

/**
 * A JavaScript function to validate the HTML contents of a form.
 *
 * @param {String} name The id of an HTML element. Example use: var x = new getObj('objectid'); You then must refer to any style attributes as x.style, and any object attributes as x.obj.
 */
function getObj(name)
{
  if (document.getElementById)
  {
  	this.obj = document.getElementById(name);
	this.style = document.getElementById(name).style;
  }
  else if (document.all)
  {
	this.obj = document.all[name];
	this.style = document.all[name].style;
  }
  else if (document.layers)
  {
   	this.obj = document.layers[name];
   	this.style = document.layers[name];
  }
}

function getQueryStringFromForm(url, obj) {
	var getstr = "?";
	for (i=0; i<obj.elements.length; i++) {
		if (obj.elements[i].tagName == "INPUT") {
			if (obj.elements[i].value.length > 0)
			{
				if (obj.elements[i].type == "text" ||
						obj.elements[i].type == "hidden")
				{
					getstr += obj.elements[i].name + "=" +
						obj.elements[i].value.replace(/&/g, "%26") + "&";
				}
				if (obj.elements[i].type == "checkbox") {
					if (obj.elements[i].checked) {
						getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
					}
				}
				if (obj.elements[i].type == "radio") {
					if (obj.elements[i].checked) {
						getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
					}
				}
			}
		}
		if (obj.elements[i].tagName == "SELECT") {
			var sel = obj.elements[i];
			if ((sel.options[sel.selectedIndex].value).length > 0) {
				getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
			}
		}
	}
	//alert( url + getstr );
	return url + getstr;
}

function toggle(id)
{
	var obj = document.getElementById( 's|'+id );

	var objImg = document.getElementById( 'a|'+id  );


	if (navigator.appVersion.indexOf("MSIE")!=-1 && navigator.userAgent.indexOf("Opera")==-1){
		style = 'block';
	} else {
		style = 'table-row';
	}

		if(obj.style.display == style) {
			obj.style.display = 'none';
			objImg.src = SGL_JS_WEBROOT+'/images/application/toggle_plus.png';
		}
		else {
			obj.style.display = style;
			objImg.src = SGL_JS_WEBROOT+'/images/application/toggle_minus.png';
		}

}

function performFilterSearch(v) {

	var obj = document.getElementsByName('filter[Dates][EndDate]')[0];
	if(obj) {
		obj.value = v;
	}
	document.filterForm.submit();
	popup('reportLoading');
}


function simpleToggle(id)
{
	var obj = document.getElementById( id );



	if (navigator.appVersion.indexOf("MSIE")!=-1 && navigator.userAgent.indexOf("Opera")==-1){
		style = 'block';
	} else {
		style = 'table-row';
	}

	if(obj.style.display == style) {
		obj.style.display = 'none';
	}
	else {
		obj.style.display = style;
	}

}

function sT(id)
{
	var obj = document.getElementById( id );

	if (navigator.appVersion.indexOf("MSIE")!=-1 && navigator.userAgent.indexOf("Opera")==-1){
		style = 'block';
	} else {
		style = 'table-row';
	}

	if(obj.style.display == style) {
		obj.style.display = 'none';
	}
	else {
		obj.style.display = style;
	}
}

function toogleMultiple(id)
{
	if (navigator.appVersion.indexOf("MSIE")!=-1 && navigator.userAgent.indexOf("Opera")==-1){
		var st = 'block';
	} else {
		var st = 'table-row';
	}

	var i=1;
	while(document.getElementById(id+"_"+i)) {
	 document.getElementById(id+"_"+i).style.display = document.getElementById(id+"_"+i).style.display == 'none' ? st : 'none';
	 i++;
	}

}

function getElementsByClassName(class_name)
{
  var all_obj,ret_obj=new Array(),j=0;
  if(document.all)all_obj=document.all;
  else if(document.getElementsByTagName && !document.all)all_obj=document.getElementsByTagName("*");
  for(i=0;i<all_obj.length;i++)
  {
    if(all_obj[i].className==class_name)
    {
      ret_obj[j]=all_obj[i];
      j++
    }
  }
  return ret_obj;
}

function execJS(node)
{
  var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
  var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
  var bMoz = (navigator.appName == 'Netscape');

  if (!node) return;

  /* IE wants it uppercase */
  var st = node.getElementsByTagName('script');
  var strExec;

  for(var i=0;i<st.length; i++)
  {
    if (bSaf) {
      strExec = st[i].innerHTML;
      st[i].innerHTML = "";
    } else if (bOpera) {
      strExec = st[i].text;
      st[i].text = "";
    } else if (bMoz) {
      strExec = st[i].textContent;
      st[i].textContent = "";
    } else {
      strExec = st[i].text;
      st[i].text = "";
    }

    try {
      var x = document.createElement("script");
      x.type = "text/javascript";

      if ((bSaf) || (bOpera) || (bMoz))
        x.innerHTML = strExec;
      else x.text = strExec;

      document.getElementsByTagName("head")[0].appendChild(x);
    } catch(e) {
      alert(e);
    }
  }
};

var isIE = document.all?true:false;
var _x;
var _y;
if (!isIE) document.captureEvents(Event.MOUSEMOVE);


function getMousePosition(e) {

	if (!isIE) {
		_x = e.pageX;
		_y = e.pageY;
	}
	if (isIE) {
		if( document.documentElement.scrollTop ) {
			_x = event.clientX + document.documentElement.scrollLeft;
			_y = event.clientY + document.documentElement.scrollTop;
		} else {
			_x = event.clientX + document.body.scrollLeft;
			_y = event.clientY + document.body.scrollTop;
		}
	}
	return true;
}
// Kontextmenü verstecken
function hideMenu(e) {
    document.getElementById("context_menu").style.display = 'none';
}

var non_print = new Array();

var display_elements = new Array();

var reportUID = false;

var gui_filter = false;

var uids = false;

var sort = new Object();
sort.page = 1;

var gui = {

	init: function() {
		//Flag to see whether data has been set initially
		this.initialDataSet = false;

		this.set;

		this.r;

		//Create container objects
		this.params = new Object();
		this.chartParams = new Object();
		this.categories = new Object();
		this.attributes = new Array();
		this.url = new Array();
		this.chartTypes = new Array();

		this.guiDefinedPost = 1;
		this.guiDefinedGet = 2;

		 this.responseText = false;

		this.loadingTimeout;

		this.uid = false;
	},

	setTitle: function(title) {
		document.getElementById('gui_container_title').innerHTML = title;
	},

	addCategory: function(key,name) {
		if(document.getElementById('filter[categoryId]').length >= 3) {
			alert('Sie können maximal drei Kategorien miteinander vergleichen.');
			return false;
		}

		for (i = 0; i < document.getElementById('filter[categoryId]').length; ++i) {
			if(document.getElementById('filter[categoryId]').options[i].value == document.getElementById('fcatid').value) {
				alert('Diese Kategorie befindet sich bereits in Ihrer Auswal');
				return false;
			}
		}

		option = new Option(document.getElementById('fcatname').value, document.getElementById('fcatid').value, false, false);
		document.getElementById('filter[categoryId]').options[document.getElementById('filter[categoryId]').length] = option;
		this.catgories[key] = name;
	},

	selectCopy:	function (objSource,objDest) {
		if(objDest.length >= 3) {
			alert('Sie können maximal drei Kategorien miteinander vergleichen.');
			return false;
		}
		for (i = 0; i < objDest.length; ++i) {
			if(objDest.options[i].value == objSource.options[objSource.selectedIndex].value) {
				alert('Diese Kategorie befindet sich bereits in Ihrer Auswal');
				return false;
			}
		}
		var o = objSource.options[objSource.selectedIndex].cloneNode(true);
		if(o.text.match(/-->$/)) {
			o.text = o.text.replace(/-->/, '');
		}
		objDest.appendChild(o);

	},

	selectDelete: function(obj){
		var o = obj.removeChild(obj.options[obj.selectedIndex]);
	},

	//Get the XMLHttpRequest Object
	getRequestObject: function()
	{

		var req = null;
		if (typeof XMLHttpRequest != "undefined")
			req = new XMLHttpRequest();
		if (!req && typeof ActiveXObject != "undefined")
		{
			try
			{
				req=new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch (e)
			{
				try
				{
					req=new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (e2)
				{
					try {
						req=new ActiveXObject("Msxml2.XMLHTTP.4.0");
					}
					catch (e3)
					{
						req=null;
					}
				}
			}
		}
		if(!req && window.createRequest)
			req = window.createRequest();

		if (!req) alert("Request Object Instantiation failed.");

		return req;
	},

	loadingFunction: function()
	{
		window.status = 'sending...';
		showLoader();
	},

	doneLoadingFunction: function(){
		cancelLoader();
		window.status = 'ready';
	},

	call: function(uri, targetID)
	{
		var i,r,postData;
		var guiRequestType = this.guiDefinedPost;

		var value;
		var aArgs;

		clearTimeout(this.loadingTimeout);
		this.loadingTimeout = window.setTimeout("gui.loadingFunction();",100);

		window.status = 'Sending Request...';

		switch(guiRequestType)
		{
			case this.guiDefinedGet:{
				var uriGet = uri.indexOf("?")==-1?"?xajax="+encodeURIComponent(sFunction):"&xajax="+encodeURIComponent(sFunction);
				/*if (aArgs) {
					for (i = 0; i<aArgs.length; i++)
					{
						value = aArgs[i];
						if (typeof(value)=="object")
							value = this.objectToXML(value);
						uriGet += "&xajaxargs[]="+encodeURIComponent(value);
					}
				}*/
				uriGet += "&xajaxr=" + new Date().getTime();
				uri += uriGet;
				uri += aArgs;
				postData = null;
				} break;
			case this.guiDefinedPost:{
				//postData = "xajax="+encodeURIComponent(sFunction);
				postData += "&xajaxr="+new Date().getTime();
				/*if (aArgs) {
					for (i = 0; i <aArgs.length; i++)
					{
						value = aArgs[i];

						postData = postData+"&xajaxargs[]="+encodeURIComponent(value);
					}
				}*/
				postData += aArgs;
				} break;
			default:
				alert("Illegal request type: " + xajaxRequestType); return false; break;
		}

		r = this.getRequestObject();

		if (!r) return false;
		r.open(guiRequestType==this.guiDefinedGet?"GET":"POST", uri, true);
		if (guiRequestType == this.guiDefinedPost)
		{
			try
			{
				r.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
				r.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			}
			catch(e)
			{
				alert("Your browser does not appear to  support asynchronous requests using POST.");
				return false;
			}
		}
		r.onreadystatechange = function()
		{
			if (r.readyState != 4)
				return;

			if (r.status==200)
			{
				if( r.responseText) {

					var responseText =  r.responseText;

					document.getElementById(targetID).innerHTML = responseText;
					execJS(document.getElementById(targetID));

				  	clearTimeout(this.loadingTimeout);
				  	gui.doneLoadingFunction();
				}
			}
			else {
				alert('error');
			}

			delete r;
			r = null;
		}

		r.send(postData);

		delete r;
		return true;
	},

	print: function()
	{
		var st = (navigator.appVersion.indexOf("MSIE")!=-1 && navigator.userAgent.indexOf("Opera")==-1) ? 'block' : 'table-row';

		for(var i=0; i<non_print.length; i++) {
			 document.getElementById(non_print[i]).style.display = document.getElementById(non_print[i]).style.display == 'none' ? st : 'none';
		}
	}
}

gui.init();

function showMenuTopseller ( id, maxItems ) {

	var div = document.getElementById( 'context_menu' );
	div.style.left =(_x-200) + "px";
	div.style.top =(_y+7) + "px";
	var items =  "<ul class=markermenu>"
				+"<li><span>"+lang[MR_LANG]['For']+" <i>"+id+"</i></span></li>"
				+"<li><a href='"+SGL_JS_WEBROOT+"/index.php/research/action/do/?"+queryFilter +"searchtype=2&filter[query][0][Seller]="+ id +"' target='_blank'>"+lang[MR_LANG]['This query']+" </a></li>"
				+"<li><a href='"+SGL_JS_WEBROOT+"/index.php/research/action/do/?&searchtype=2&filter[query][0][Seller]="+ id +"&filter[SiteID]="+ filter_SiteID +"&filter[Currency]="+ filter_Currency +"' target='_blank'>"+lang[MR_LANG]['Seller query']+"</a></li>"
				+"</ul>";
	
    document.getElementById("context_menu").innerHTML = items;
    document.getElementById("context_menu").style.display = 'block';
}

function showMenuTopsellerCategory ( id, maxItems ) {

	var div = document.getElementById( 'context_menu' );
	div.style.left =(_x-200) + "px";
	div.style.top =(_y+7) + "px";
	var items =  "<ul class=markermenu>"
				+"<li><span>"+lang[MR_LANG]['For']+" <i>"+id+"</i></span></li>"
				+"<li><a href='"+SGL_JS_WEBROOT+"/index.php/research/action/do/?&filter[query][0][Seller]="+ id +"&filter[SiteID]="+ filter_SiteID +"&filter[Currency]="+ filter_Currency +"' target='_blank'>"+lang[MR_LANG]['Seller query']+"</a></li>"
				+"</ul>";

    document.getElementById("context_menu").innerHTML = items;
    document.getElementById("context_menu").style.display = 'block';
}

function showMenuItems ( itemLink, item, seller ) {

	var div = document.getElementById( 'context_menu' );
	div.style.left =(_x-200) + "px";
	div.style.top =(_y+7) + "px";
	var items =  "<ul class=markermenu>"
				+"<li><a href='"+SGL_JS_WEBROOT+"/index.php/research/action/do/?&filter[query][0][Keywords]="+ escape(item) +"&filter[SiteID]="+ filter_SiteID +"&filter[Currency]="+ filter_Currency +"' target='_blank'>"+lang[MR_LANG]['Item query']+"</a></li>"
				+"<li><a href='"+SGL_JS_WEBROOT+"/redirect.php?"+ itemLink +"' target='_blank'>"+lang[MR_LANG]['At eBay']+"</a></li>"
				+"</ul>";

    document.getElementById("context_menu").innerHTML = items;
    document.getElementById("context_menu").style.display = 'block';
}

/* ---- */
function resetSort()
{
	sort = new Object();
	sort.page 	= 1;
	sort.dir 	= 1;
}

function sort2(order, id, dir)
{
	sort.page = 1;
	sort.order = order;
	sort.dir =  dir;
		
	var uri = SGL_JS_WEBROOT+'/index.php/'+display_elements[id]+'/ajax/1/pageID/'+sort.page+'/?'+queryFilter+'&filter[order]='+order+'&filter[order_dir]='+sort.dir ;
	gui.call(uri, 'gui_content_container');
}

function paginationResearch(pageID, id)
{
	sort.page = pageID;
	var uri = SGL_JS_WEBROOT+'/index.php/'+display_elements[id]+'/ajax/1/pageID/'+sort.page+'/?'+queryFilter+'&filter[order]='+sort.order+'&filter[order_dir]='+sort.dir ;
	gui.call(uri, 'gui_content_container');
}

function initGui(id)
{
	var displayElement = readCookie('displayElement');
	displayElement('101');	
}
/* ---- */

function displayElement( id, filter )
{
	resetSort();
	createCookie('displayElement',id, 1);
	
	/*
	 * Das Element gibt es noch nicht,
	 * versuche es per AJAX Request nachzuladen
	 */
	if(document.getElementById('gui_element_'+id)) {
		document.getElementById('gui_content_container').innerHTML = document.getElementById('gui_element_'+id).innerHTML;
		if(document.getElementById('gui_interface_loading')) {
			document.getElementById('gui_interface_loading').style.display = 'none';
		}
	}
	else {
		if(filter) {
			var uri = SGL_JS_WEBROOT+'/index.php/'+display_elements[id]+'/ajax/1/?'+queryFilter;
		}
		else {
			var uri = SGL_JS_WEBROOT+'/index.php/'+display_elements[id]+'/ajax/1/uid/'+reportUID;
		}
		//alert(uri);
		gui.call(uri, 'gui_content_container');
		gui.doneLoadingFunction();
	}
}

/**
 * Client Side Update of Flash Charts
 */
var chartLoaded = false;

if(typeof guiChart == "undefined")
var guiChart = new Object();

guiChart.init = function() {
		this.chart_file = "MSLine";

		this.chart_type = false;

		this.dataset_params = new Array();
		this.chart_params = new Array();

		this.use_label_steps = false;

		this.chart_rotate_labels = false;

		this.useMinMaxTrend = false;

		this.chartWidth = 600;

		this.chartHeight = 300;

		this.chartAnchor = true;
		
		this.showLegend = true;

		this.div = false;

		this.selected = false;
		this.setIndex = false;
		this.dataIndex = false;

		this.chartSelect 	= new Array ();
		this.chartSelect[0] = 'gChartSelect_1';
		this.chartSelect[1] = 'gChartSelect_2';


}

guiChart.init.prototype = {

	setSetIndex: function( v ) {
		this.setIndex 	= v;
	},

	setSetID: function ( v ) {
		this.selected 	= v;
	},

	setDiv: function ( v ) {
		this.div 	= v;
	},

	processBySelect: function(){

		if(typeof(dataIndex) == "undefined")
		    dataIndex = 0;


		// chart params zurücksetzten
		this.dataset_params = new Array();

		var chartSelect = this.chartSelect;

		var axis = 1;
		var key = 0;
		for (var i=0; i < chartSelect.length; i++){

			var sel = document.getElementById(chartSelect[i]);

			if ((sel.options[sel.selectedIndex].value).length > 0) {

				axis = i == 0 ? 'P' : 'S'
				this.chart_params[axis+'YAxisName'] = sel.options[sel.selectedIndex].text;

				var param_tmp = sel.options[sel.selectedIndex].value;

				if (param_tmp.match(/|/)) {

					var tmp = param_tmp.split("|");
					for (var k=0; k  < tmp.length; k++){
						this.dataset_params[key] = new Array();

						var p = tmp[k].split(',');
						var aixs100 = false;
						for (var j=0; j  < p.length; j++){
							var t = p[j].split(':');

							this.dataset_params[key][t[0]] = t[1];

							if(t[0] == 'aixs100') {
								aixs100 = true;
							}

						}
						this.chart_params[axis+'Aixs100'] 	= aixs100;
						this.dataset_params[key]['parentYAxis'] 	= axis;
						++key;
					}
				}
				else {

					this.dataset_params[key] = new Array();
					var aixs100 = false;
					var p = param_tmp.split(',');
					for (var k=0; k  < p.length; k++){
						var t = p[k].split(':');
						this.dataset_params[key][t[0]] = t[1];
						if(t[0] == 'aixs100') {
							aixs100 = true;
						}

					}
					this.chart_params[axis+'Aixs100'] 	= aixs100;
					this.dataset_params[key]['parentYAxis'] 	= axis;
					++key;
				}
			}
		}

		if(this.dataset_params.length == 0 ) {
			return;
		}

		if(this.dataset_params.length > 1) {
			this.chart_type = 'MSCombiDY2D';
		}
		else {
			this.chart_type = 'MSLine';
		}

		/*
		var p = param_tmp[0].split(',');
		for (var i=0; i  < p.length; i++){
			var t = p[i].split(':');
			this.chart_params[t[0]] = t[1];
		}

		this.chart_type = this.chart_params['type'];*/

		var chart1 = new FusionCharts(SGL_JS_WEBROOT+"/fc/"+this.chart_type+".swf", this.div+"_ID", this.chartWidth, this.chartHeight, "0", "1");
		chart1.setDataXML(this.generateXML());
		chart1.render(this.div);

		///gui.doneLoadingFunction();
	},
	


	process: function(selected, setIndex, dataIndex, div ){

		var domId = 'chart1Id';

		this.selected 	= selected;
		this.setIndex 	= setIndex;
		this.dataIndex 	= dataIndex;

		if(typeof(dataIndex) == "undefined")
		    dataIndex = 0;
		    
		if(dataIndex == "") {			
			return false;
		}

		//if(typeof(div) == "undefined")
		//    div = 'chart1div';
		
		// chart params zurücksetzten
		this.dataset_params = new Array();

		if(dataIndex.match("::")) {
			var param_tmp = dataIndex.split("::");
			
			var p = param_tmp[0].split(',');
			for (var i=0; i  < p.length; i++){
				var t = p[i].split(':');
				this.chart_params[t[0]] = t[1];
			}
			
			if (param_tmp[1].match(/|/)) {
				var tmp = param_tmp[1].split("|");
				for (var i=0; i  < tmp.length; i++){
					this.dataset_params[i] = new Array();
	
					var p = tmp[i].split(',');
					for (var j=0; j  < p.length; j++){
						var t = p[j].split(':');
	
						this.dataset_params[i][t[0]] = t[1];
					}
				}
			}
			else {
				//
				this.dataset_params[0] = new Array();
	
				var p = param_tmp[1].split(',');
				for (var i=0; i  < p.length; i++){
					var t = p[i].split(':');
					this.dataset_params[0][t[0]] = t[1];
				}
			}
	
			this.chart_type = this.chart_params['type'];
		}
		else {
			
			if (dataIndex.match(/|/)) {
				var tmp = dataIndex.split("|");
				for (var i=0; i  < tmp.length; i++){
					this.dataset_params[i] = new Array();
	
					var p = tmp[i].split(',');
					for (var j=0; j  < p.length; j++){
						var t = p[j].split(':');
	
						this.dataset_params[i][t[0]] = t[1];
					}
				}
			}
			else {
				//
				this.dataset_params[0] = new Array();
	
				var p = dataIndex[1].split(',');
				for (var i=0; i  < p.length; i++){
					var t = p[i].split(':');
					this.dataset_params[0][t[0]] = t[1];
				}
			}
			
			if(this.dataset_params.length > 1) {
				this.chart_type = 'MSCombiDY2D';
			}
			else {
				this.chart_type = 'MSLine';
			}
		}

		var fc_chart = new FusionCharts(SGL_JS_WEBROOT+"/fc/"+this.chart_type+".swf", div+"_DomId", this.chartWidth, this.chartHeight, "0", "1");
		fc_chart.setDataXML(this.generateXML());
		fc_chart.render(div);
	},

		generateXML: function(){
			//Variable to store XML
			var strXML;
			var animate = 0;
			
			
			if(typeof( this.selected ) != "undefined") {
				if(typeof( this.selected ) == "object") {
					var first_uid = this.selected[0][0];
				}
				else if(typeof( this.selected ) == "number") {
					var first_uid = this.selected;
				}
			}
			//alert(first_uid);

			if(this.use_label_steps)
				var labelStep = this.use_label_steps;
			else
				var labelStep = 1;
	
			var c_params = new Object();

			var title = false;
			if(typeof(this.chart_params['caption']) != "undefined") {
				var title = this.chart_params['caption'];
			}


			if(this.chart_type == 'MSCombiDY2D') {
				if(this.chart_params['PAxis100'] == true) {
					c_params['PYAxisMinValue'] ='0';
					c_params['PYAxisMaxValue'] ='100';
				}
				if(this.chart_params['SAxis100']  == true) {
					c_params['SYAxisMinValue'] ='0';
					c_params['SYAxisMaxValue'] ='100';
				}
				
				if(this.chart_params['PAxisSmall'] == true) {
					c_params['PYAxisMinValue'] ='0';
					c_params['PYAxisMaxValue'] = 300; //this.chart_params['PAxisSmall'] * 3;
				}

				c_params['PYAxisName']		= typeof(this.chart_params['PYAxisName']) != "undefined" ? this.chart_params['PYAxisName'] : '';
				c_params['SYAxisName'] 		= typeof(this.chart_params['SYAxisName']) != "undefined" ? this.chart_params['SYAxisName'] : '';
			}
			else {
				//c_params['yAxisMaxValue'] ='100';
				c_params['yAxisMinValue'] ='0';
			}

			strXML = "<chart showBorder='0' formatNumberScale='0' chartLeftMargin='0' chartRightMargin='5' showFCMenuItem='0' numberPrefix='' labelStep='"+ labelStep +"' animation='" + ((animate==true)?"1":"0") + "' showLegend='" + ((this.showLegend==true)?"1":"0") + "' showValues='0'  lineThickness='1' bgColor='#ffffff' decimalSeparator=',' thousandSeparator='.'  plotGradientColor=''  ";
			if(this.chartAnchor == false) {
				//strXML += "anchorAlpha ='0' ";
				strXML += "anchorRadius ='1.5' ";
			}

			if(title != false) {
				strXML += "caption='"+ title +"' ";
			}
			if(this.chart_rotate_labels == true) {
				strXML += "rotateLabels='1' slantLabels='1' ";
			}
			for(var key in c_params) {
				strXML += key+"='"+c_params[key]+"' ";
			}
			strXML += ">";

			
			//Store <categories> and child <category> elements
			if(this.dataset_params.length > 1 || this.chart_type == 'MSLine' || this.chart_type == 'MSColumn2D' || this.chart_type == 'ScrollLine2D' ) {
				strXML += "<categories>";
				for (var i=0; i<label[first_uid][this.setIndex].length; i++){
					strXML += "<category name='" + label[first_uid][this.setIndex][i] + "' />";
				}
				strXML += "</categories>";
			}

			for (var i=0; i  < this.dataset_params.length; i++){
				strXML += this.getProductXML(first_uid,this.setIndex,this.dataset_params[i],i);
			}

			//Close <chart> element;
			strXML = strXML + "</chart>";
			
			//alert(strXML);

			//Return data
			return escape(strXML);
		},

		/**
		 * getProductXML method returns the <dataset> and <set> elements XML for
		 * a particular product index (in data array).
		 *	@param	productIndex	Product index (in data array)
		 *	@return					XML Data for the product.
		*/
		getProductXML: function(first_uid,setIndex,d,setNumber){

			if(typeof(d['dataIndex']) == "undefined") {
				alert('keine Daten definiert');
				return false;
			}

			var productXML;
			var use_dataset = false;

			var dataIndex = d['dataIndex'];

			if(this.chart_type == 'MSCombiDY2D' ) {
				var parentYAxis = typeof(d['parentYAxis']) == "undefined" ? 'P' : d['parentYAxis'];
				var seriesName = typeof(d['seriesName']) == "undefined" ? '' : d['seriesName'];
				var renderAs = typeof(d['renderAs']) ==  "undefined" ? 'COLUMN' : d['renderAs'];
			}
			else {
				var seriesName = typeof(d['seriesName']) == "undefined" ? '' : d['seriesName'];
			}

			if(this.chart_type == 'MSLine' ||
				this.chart_type == 'MSCombiDY2D' ||
				this.chart_type == 'ScrollLine2D' ||
				 this.chart_type == 'MSColumn2D' ) {
				use_dataset = true;
			}

			// xml initieren
			var productXML = '';

			// Anzahl der Elemente
			var cnt = (data[first_uid][this.setIndex][dataIndex].length);// - 1 ;

			// Trend Lines
			var trendLines = '';
			if(this.useMinMaxTrend == true) {
				//var minValue = data[uid][setIndex][dataIndex][0];
				//var maxValue = data[uid][setIndex][dataIndex][cnt-1];
				//trendLines += "<line startValue='"+ minValue +"' endValue='"+ maxValue +"' displayvalue=''/>";
			}

			if(typeof(d['trend']) != "undefined" && typeof(trend_lines[d['trend']]) != "undefined") {
				trendLines += "<line startValue='"+ trend_lines[d['trend']] +"' displayvalue='' color='009933' />";
			}

			if(trendLines.length > 1 ) {
				productXML += "<trendLines>"+trendLines+"</trendLines>";
			}

			var colors = Array();
			colors[0] = '058DC7,058DC7';
			colors[1] = 'ED561B,ED561B';
			colors[2] = '33CC00,33CC00';
			colors[3] = 'B4DBF5,B4DBF5';
			
			colors[4] = '50B432';

			if(typeof(this.selected) == 'number' ) {

				if(use_dataset)
					productXML += "<dataset seriesName='" + seriesName + "' parentYAxis='"+ parentYAxis +"' renderAs='"+ renderAs +"' color='"+colors[setNumber]+"' >";

				//Create set elements
				for (var j=0; j<cnt; j++){
					productXML = productXML + "<set label='"+ label[first_uid][this.setIndex][j] +"' value='" + data[first_uid][this.setIndex][dataIndex][j] + "' />";
				}

				if(use_dataset)
					productXML = productXML + "</dataset>";

			}
			else {
				for (var i=0; i<this.selected.length; i++){
					//Create <dataset> element
					if(use_dataset)
						productXML += "<dataset seriesName='"+ this.selected[i][1]+ "' parentYAxis='"+ parentYAxis +"' renderAs='"+ renderAs +"' color='"+colors[i]+"'>";

					var u = this.selected[i][0];
					//Create set elements
					for (var j=0; j<cnt; j++){
						productXML = productXML + "<set label='"+ label[u][this.setIndex][j] +"' value='" + data[u][this.setIndex][dataIndex][j] + "' />";
					}

					//Close <dataset> element
					if(use_dataset)
						productXML = productXML + "</dataset>";
				}
			}


			//Return
			return productXML;
		},

		getMaxMin: function (array, maximum){
			  var mini, maxi;
			  if(typeof(maximum) == "undefined")
			    maximum = true;

			  mini = array[1];
			  maxi = array[1];
			  for(var i=1; i < array.length; i++){
			    mini = Math.min(array[i], mini);
			    maxi = Math.max(array[i], maxi);
			  }

			  return (maximum)?maxi:mini;
		}
}

var gChart = guiChart.init;


function runde(x, n) {
  if (n < 1 || n > 14) return false;
  var e = Math.pow(10, n);
  var k = (Math.round(x * e) / e).toString();
  if (k.indexOf('.') == -1) k += '.';
  k += e.toString().substring(1);
  return k.substring(0, k.indexOf('.') + n+1);
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}