var Wochentag = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
var Monate = new Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");

function tick() {
	var hours, minutes, seconds;
	var intHours, intMinutes, intSeconds;
	var today, TagInWoche, tag, monat, jahr;
	
	today = new Date();
	intHours = today.getHours();
	intMinutes = today.getMinutes();
	intSeconds = today.getSeconds();
	TagInWoche = today.getDay();
	tag = today.getDate();
	monat = today.getMonth();
	jahr = today.getFullYear();
	
	hours = intHours+":";
	if (intMinutes < 10) {
		minutes = "0"+intMinutes+":";
	} else {
		minutes = intMinutes+":";
	}
	
	if (intSeconds < 10) {
		seconds = "0"+intSeconds+" ";
	} else {
		seconds = intSeconds+" ";
	}
	timeString = Wochentag[TagInWoche] + ", " + tag + ". " + Monate[monat] + " " + jahr + ", "+ hours + minutes + seconds;
	document.getElementById('current-time').innerHTML=timeString;
	
	window.setTimeout("tick();", 1000);
}

function popupWindow(url) {
	  window.open(url,'popupWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=736,height=544,screenX=150,screenY=150,top=150,left=150')
	}  

function popupImageWindow(url) {
  window.open(url,'popupImageWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width=736,height=544,screenX=150,screenY=150,top=150,left=150')
}

function showTopFlopAnalyzer(elID, type, amount) {
	if(dojo.byId(elID)) {
		var table = dojo.byId(elID); 
		dojo.xhrGet({
		    url: '/am/topflopanalyser/' + type + '/' + amount,
		    handleAs: "json",
		    load: function(data,args){
				
				var tbody = document.createElement('tbody');
				
				for(var i=1; i <= data.length; i++) {
					var company = data[i-1];
					
					var tr = document.createElement('tr');
					
					var td = document.createElement('td');
					td.className = 'center';
					td.appendChild(document.createTextNode(i));
					tr.appendChild(td);
					
					var td = document.createElement('td');
					var anchor = document.createElement('a');
					
					if(company.name.length > 18) {
	    				company.name = company.name.substring(0,18) + '...';
	    			}
					
					anchor.appendChild(document.createTextNode(company.name));
					anchor.href = '/' + company.url;
					tr.setAttribute("onClick","location.href='"+anchor.href+"'");
					td.appendChild(anchor);
					tr.appendChild(td);
					
					var td = document.createElement('td');
					td.className = 'center';
					td.appendChild(document.createTextNode(company.date));
					tr.appendChild(td);
					
					var td = document.createElement('td');
					td.className = 'right';
					td.appendChild(document.createTextNode(company.price.replace(/\./,',') + ' €'));
					tr.appendChild(td);
					
					var td = document.createElement('td');
					td.className = 'target';
					td.appendChild(document.createTextNode(company.target.toFixed(2).replace(/\./,',') + ' €'));
					tr.appendChild(td);
					
					var td = document.createElement('td');
					td.className = 'upside';
					if(company.upside > 0){
						td.appendChild(document.createTextNode('+' + company.upside.toFixed(2).replace(/\./,',') + ' %'));
						tr.className = 'positiveTR';
					} else {
						td.appendChild(document.createTextNode(company.upside.toFixed(2).replace(/\./,',') + ' %'));
						tr.className = 'negativeTR';
					}
					tr.appendChild(td);
					
					var td = document.createElement('td');
					td.className = 'strength';
					var div = document.createElement('div');
					if(company.upside > 0){
						div.className = 'positive-strength-bar';
					} else {
						div.className = 'negative-strength-bar';
					}
					div.style.width = Math.abs(company.strength) + '%';
					td.appendChild(div);
					
					tr.appendChild(td);
					
					tbody.appendChild(tr);
					
					table.appendChild(tbody);
				}
		    }
		});
	}
}

function showTopFlopStocks(params) {
	dojo.xhrGet({
	    url: '/httpcontent/get_base64_encoded/' + params.url,
	    handleAs: "json",
	    load: function(data,args){
	    	if(data.length > 0) {
	    		var table = dojo.byId(params.id);
	    		table.className = 'listing';
	    		
	    		if(table) {
	    			var isins = new Array();
	    			
	    			for(var i=0; i < data.length; i++) {
		    			var curStock = data[i];
		    			
		    			var tbody = document.createElement("tbody") 
		    			var newTr = document.createElement('tr');
		    			var nameTd = document.createElement('td');
		    			//var isinTd = document.createElement('td');
		    			var priceTd = document.createElement('td');
		    			var perfTd = document.createElement('td');
		    			var strengthTd = document.createElement('td');
		    			var strengthBar = document.createElement('div');
		    			
		    			nameTd.id = 'topflop-name-' + params.position + '-' + curStock.isin;
		    			newTr.appendChild(nameTd);
		    			
		    			isins.push(curStock.isin);
		    			
		    			priceTd.appendChild(document.createTextNode(curStock.price.replace(/\./,',') + " €"));
		    			priceTd.className = 'right';
		    			newTr.appendChild(priceTd);
		    			
		    			perfTd.appendChild(document.createTextNode(curStock.performance.replace(/\./,',') + " %"));
		    			perfTd.style.textAlign = 'right';
		    			
		    			strengthTd.className = 'strength';
		    			strengthBar.style.width = curStock.strength + '%';
		    			strengthBar.appendChild(document.createTextNode(''));
		    			strengthTd.appendChild(strengthBar);
		    			
		    			if(curStock.performance > 0) {
		    				perfTd.className = 'positive-performance';
		    				strengthBar.className = 'positive-strength-bar';
		    			} else if(curStock.performance < 0) {
		    				perfTd.className = 'negative-performance';
		    				strengthBar.className = 'negative-strength-bar';
		    			} else {
		    				perfTd.className = 'neutral-performance';
		    				strengthBar.className = 'neutral-strength-bar';
		    			}
		    			newTr.appendChild(perfTd);
		    			newTr.appendChild(strengthTd);
		    			
		    			tbody.appendChild(newTr);
		    			table.appendChild(tbody);
		    		}
	    			
	    			if(isins.length > 0) {
	    				var isinString = '';
	    				for(var i=0; i < isins.length; i++) {
	    					var isin = isins[i];
	    					isinString += isin + ':';
	    				}
	    				
	    				dojo.xhrGet({
    					    url: '/am/isinlink/' + isinString,
    					    handleAs: "json",
    					    load: function(data,args){	
	    						if(data.length > 0) {
	    							for(var i=0; i < data.length; i++) {
	    								var curCompany = data[i];
	    								var cellName = 'topflop-name-' + params.position + '-' + curCompany.isin;
	    								if(dojo.byId(cellName)) {
	    									var cell = dojo.byId(cellName);
	    									var cellName = curCompany.name;
	    									
	    									if(cellName) {
								    			if(cellName.length > 18) {
								    				cellName = cellName.substring(0,18) + '...';
								    			}
							    			}
							    			
	    									cell.innerHTML = '<a href="/' + curCompany.url + '">' + cellName + '</a>';
	    								}
	    							}
	    						}
    						},
    					    error: function(error,args){
    							//console.warn("error!",error);
    					    }
    					});
	    			}
	    		}
		    }
	    },
	    error: function(error,args){
			//console.warn("error!",error);
	    }
	});
}
 
function showRealtimeStocks(params) {
	dojo.xhrGet({
	    url: '/httpcontent/get_base64_encoded/' + params.url,
	    handleAs: "json",
	    load: function(data,args){
	    	if(data.length > 0) {
				for(var i=0; i < data.length; i++) {	
			    	var el = data[i];
			    	
			    	/*
			    	var name = dojo.byId(params.name + el.isin);
			    	if(name) {
			    		name.innerHTML = el.name;
			    	}
			    	*/
			    	
			    	var price = dojo.byId(params.price + el.isin);
			    	if(price) {
			    		price.innerHTML = el.price.replace(/\./,',') + "&nbsp;&euro;";
			    		
			    		if(dojo.byId(params.pricewrap + el.isin)) {
			    			if(el.performance > price.getAttribute('oldperformance')) {
				    			var anim1 = dojo.animateProperty({
									node: dojo.byId(params.pricewrap + el.isin),
									duration: 200,
									properties: {
										backgroundColor: { start:"#ffffff", end: "#99CC99" }
									}
								});
								var anim2 = dojo.animateProperty({
									node: dojo.byId(params.pricewrap + el.isin),
									duration: 200,
									properties: {
										backgroundColor: { start:"#99CC99", end: "#ffffff" }
									}
								});
								dojo.fx.chain([anim1,anim2]).play();
				    		} else if(el.performance < price.getAttribute('oldperformance')) {
				    			var anim1 = dojo.animateProperty({
									node: dojo.byId(params.pricewrap + el.isin),
									duration: 200,
									properties: {
										backgroundColor: { start:"#ffffff", end: "#CC9999" }
									}
								});
								var anim2 = dojo.animateProperty({
									node: dojo.byId(params.pricewrap + el.isin),
									duration: 200,
									properties: {
										backgroundColor: { start:"#CC9999", end: "#ffffff" }
									}
								});
								dojo.fx.chain([anim1,anim2]).play();
				    		}
				    	}
				    	
				    	price.setAttribute('oldperformance', el.performance);
			    	}
			    	
			    	
			    	var performance = dojo.byId(params.performance + el.isin);
			    	if(performance) {
			    		var performanceString = el.performance;
			    		if(el.performance > 0) {
			    			performance.className = 'positive-performance';
			    			performanceString = '+&nbsp;' + el.performance;
			    			
			    			price.className = 'positive-price';
			    			 
			    		} else if(el.performance < 0) {
			    			performance.className = 'negative-performance';
			    			performanceString = performanceString.replace(/-/, '-&nbsp;');
			    			
			    			price.className = 'negative-price';
			    			 
			    		} else {
			    			performance.className = 'neutral-performance';
			    			price.className = 'neutral-price';
			    		}
			    		
			    		performanceString += '%';
			    		
			    		performance.innerHTML = performanceString;
			    	}
			    	
			    	var ask = dojo.byId(params.ask + el.isin);
			    	if(ask) {
			    		ask.innerHTML = el.ask.replace(/\./,',');
			    		if(el.ask > el.old_ask) {
			    			ask.className = 'positive-price';
			    		} else if(el.ask < el.old_ask) {
			    			ask.className = 'negative-price';
			    		} else {
			    			ask.className = 'neutral-price';
			    		}
			    	}
			    	
			    	var bid = dojo.byId(params.bid + el.isin);
			    	if(bid) {
			    		bid.innerHTML = el.bid.replace(/\./,',');
			    		if(el.bid > el.old_bid) {
			    			bid.className = 'positive-price';
			    		} else if(el.bid < el.old_bid) {
			    			bid.className = 'negative-price';
			    		} else {
			    			bid.className = 'neutral-price';
			    		}
			    	}
			    	
			    	
			    	var timestamp = dojo.byId(params.time + el.isin);
			    	if(timestamp) {
			    		var timestampArray =  el.timestamp.split(' ');
			    		timestamp.innerHTML = timestampArray[1];
			    		//timestamp.innerHTML = data.timestamp;
			    	}
		    	}
		    	
		    	window.setTimeout("showRealtimeStocks(params_" + params.size + ");", 7000);
		    }
	    },
	    error: function(error,args){
			//console.warn("error!",error);
	    }
	});
}

var __showStockInTitle = false;
function showStocks(params) {
	dojo.xhrGet({
	    url: '/httpcontent/get_base64_encoded/' + params.url,
	    handleAs: "json",
	    load: function(data,args){
	    	if(! data.ask) {
				dojo.byId(params.stock).style.display = 'none';
	    	} else {
		    	var price = dojo.byId(params.price);
		    	if(price) {
		    		var titleString = data.price.replace(/\./,',') + " €";
		    		price.innerHTML = data.price.replace(/\./,',') + "&nbsp;&euro;";
		    		
		    		if(dojo.byId(params.pricewrap)) {
		    			if(data.performance > price.getAttribute('oldperformance')) {
			    			var anim1 = dojo.animateProperty({
								node: dojo.byId(params.pricewrap),
								duration: 200,
								properties: {
									backgroundColor: { start:"#ffffff", end: "#66CC66" }
								}
							});
							var anim2 = dojo.animateProperty({
								node: dojo.byId(params.pricewrap),
								duration: 200,
								properties: {
									backgroundColor: { start:"#66CC66", end: "#ffffff" }
								}
							});
							dojo.fx.chain([anim1,anim2]).play();
			    		} else if(data.performance < price.getAttribute('oldperformance')) {
			    			var anim1 = dojo.animateProperty({
								node: dojo.byId(params.pricewrap),
								duration: 200,
								properties: {
									backgroundColor: { start:"#ffffff", end: "#CC6666" }
								}
							});
							var anim2 = dojo.animateProperty({
								node: dojo.byId(params.pricewrap),
								duration: 200,
								properties: {
									backgroundColor: { start:"#CC6666", end: "#ffffff" }
								}
							});
							dojo.fx.chain([anim1,anim2]).play();
			    		}
			    	}
			    	
			    	price.setAttribute('oldperformance', data.performance);
		    	}
		    	
		    	
		    	var performance = dojo.byId(params.performance);
		    	if(performance) {
		    		var performanceString = data.performance;
		    		if(data.performance > 0) {
		    			performance.className = 'positive-performance';
		    			performanceString = '+&nbsp;' + data.performance;
		    			titleString += " / +" + data.performance;
		    			
		    			price.className = 'positive-price';
		    			 
		    		} else if(data.performance < 0) {
		    			performance.className = 'negative-performance';
		    			performanceString = performanceString.replace(/-/, '-&nbsp;');
		    			titleString += " / " + data.performance;
		    			
		    			price.className = 'negative-price';
		    			 
		    		} else {
		    			performance.className = 'neutral-performance';
		    			price.className = 'neutral-price';
		    		}
		    		
		    		performanceString += '%';
		    		titleString += "%";
		    		
		    		performance.innerHTML = performanceString;
		    		
		    	}
		    	
		    	var ask = dojo.byId(params.ask);
		    	if(ask) {
		    		ask.innerHTML = data.ask.replace(/\./,',');
		    		if(data.ask > data.old_ask) {
		    			ask.className = 'positive-price';
		    		} else if(data.ask < data.old_ask) {
		    			ask.className = 'negative-price';
		    		} else {
		    			ask.className = 'neutral-price';
		    		}
		    	}
		    	
		    	var bid = dojo.byId(params.bid);
		    	if(bid) {
		    		bid.innerHTML = data.bid.replace(/\./,',');
		    		if(data.bid > data.old_bid) {
		    			bid.className = 'positive-price';
		    		} else if(data.bid < data.old_bid) {
		    			bid.className = 'negative-price';
		    		} else {
		    			bid.className = 'neutral-price';
		    		}
		    	}
		    	
		    	
		    	var timestamp = dojo.byId(params.time);
		    	if(timestamp) {
		    		var timestampArray =  data.timestamp.split(' ');
		    		timestamp.innerHTML = timestampArray[1];
		    		//timestamp.innerHTML = data.timestamp;
		    	}
		    	
		    	if(__showStockInTitle) {
		    		document.title = titleString + " - " + __originalTitle;
		    	}
		    	
		    	/* Analysen */
		    	var analysen = dojo.query('.analysis-price');
		    	if(analysen.length > 0) {
		    		for(var i=0; i < analysen.length; i++) {
		    			var analysePrice = analysen[i].innerHTML;
		    			var analyseId = analysen[i].id;
		    			analyseId =  analyseId.replace(/analysis_/,'');
		    				
		    			analysePrice = parseFloat(analysePrice.replace(/\,/,'.'));
		    			var upside = 100 / data.price * (analysePrice - data.price);
		    			upside = upside.toFixed(2);
		    			
		    			var analysisUpside = dojo.byId('analysis-upside-' + analyseId);
		    			if(analysisUpside) {
		    				if(! analysePrice) {
		    					analysisUpside.innerHTML = 'N/A';
		    				} else {
		    					if(upside > 0) {
		    						analysisUpside.innerHTML = '+' +  upside.replace(/\./,',') + ' %';
		    					} else {
		    						analysisUpside.innerHTML = upside.replace(/\./,',') + ' %';
		    					}
		    				}
		    			}
		    		}
		    	}
		    	
		    	window.setTimeout("showStocks(params_" + params.size + "_" + params.objectid + ");", 7000);
		    }
	    },
	    error: function(error,args){
			//console.warn("error!",error);
	    }
	});
}


function setSymbolLink() {
	var loadedData = new Array();
	var contentWrap = dojo.byId('main-article');
	if(contentWrap) {
		var expression = new RegExp(/&lt;[A-Z0-9]{1,5}.[A-Z]{1,3}&gt;/g);
		var results = contentWrap.innerHTML.match(expression);
		if(results && results.length > 0) {
			for(var j=0; j < results.length; j++) {
				var result = results[j];
				var resultCleared = result.replace(/&(l|g)t;/g,'');
				dojo.xhrGet({
			    	url: '/am/symbollink/' + resultCleared,
			    	handleAs: "json",
			    	load: function(data,args){
			    		if(data['name']) {
			    			var replaceExpression = new RegExp('&lt;' + data.symbol + '&gt;');
			    			var linkString = ' <a href="/'+ data['url'] +'"><img src="/extension/am_site_aktien_meldungen/design/am_site_aktien_meldungen/images/symbollink.gif" alt="Zum Kurs von ' + data['name'] + '"></a>';
			    			contentWrap.innerHTML = contentWrap.innerHTML.replace(replaceExpression, linkString);
			    		} else {
			    			var replaceExpression = new RegExp('&lt;' + data.symbol + '&gt;');
			    			contentWrap.innerHTML = contentWrap.innerHTML.replace(replaceExpression, '');
			    		}
			    	}
			    });
			}
		}
	}
}