function Language() {
	var languages = new Array();
	var data = new Array();
	var currentLanguage = null;
	
	this.set = function(key, value) {
		data[key] = value;
	}
	this.get = function(key, params) {
		if (!data[key]) return key;
		if (params && params.length > 0) {
			var result = data[key];
			for (var i = 0; i < params.length; i++) {
				result = result.replace('\#'+i+'\#',params[i]);
			}
			return result;
		}
		return data[key];
	}
	
	this.addLanguage = function(code, lang, active) {
		if (active) currentLanguage = code;
		languages.push(new Array(code, lang, active));
	}
	
	this.getLanguage = function(code) {
		for (var i = 0; i < languages.length; i++) {
			if (languages[i][0] == code) return languages[i];
		}
		return null;
	}
	this.refreshLanguageSelect = function(id) {
		var curLang = this.getLanguage(currentLanguage)
		document.getElementById(id).innerHTML = curLang[1];
	}
	this.showLanguageSelect = function(id) {
		var elem = document.getElementById(id);
		if (!elem) return false;
		if (elem.style.display == 'block')
			elem.style.display = 'none';
		else
			elem.style.display = 'block';
	}
}
function setCookie(name, value, expires, path, domain, secure) {
	//return '';
	name = name + escape(vaUserId);
	var curCookie = name + "=" + escape(value)
	+ ((expires) ? "; expires=" + expires.toGMTString() : "")
	+ ((path) ? "; path=" + path : ((vaWebRoot) ? "; path=" +vaWebRoot : ""))
	+ ((domain) ? "; domain=" + domain : "")
	+ ((secure) ? "; secure" : "");
	// alert(curCookie);
	document.cookie = curCookie;
}
function getCookie(name) {
	//return '';
	name = name + escape(vaUserId);
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	if (begin == -1) {
		begin = dc.indexOf(prefix);
		if (begin != 0)
			return null;
	} else
		begin += 2;
	var end = document.cookie.indexOf(";", begin);
	if (end == -1)
		end = dc.length;
	return unescape(dc.substring(begin + prefix.length, end));
}
function deleteCookie(name, path, domain) {
	name = name + escape(vaUserId);
	if (getCookie(name)) {
		document.cookie = name + "=" + ((path) ? "; path=" + path : ((vaWebRoot) ? "; path=" +vaWebRoot : ""))
		+ ((domain) ? "; domain=" + domain : "")
		+ "; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
}

function classExists(c) {
    return typeof(c) == "function" && typeof(c.prototype) == "object" ? true : false;
}

function showFormGroup(el, groupId, dirClosed, forceClose) {
	if (!dirClosed) dirClosed = 'left';
	var eGroup = document.getElementById(groupId);
	
	if (el.src.substr(el.src.length-8,8) == 'down.gif' || forceClose) { 
		el.src=vaHtmlDir+'/imgs/arrow_'+dirClosed+'.gif';
		if (eGroup) eGroup.style.display = 'none';
	} else { 
		el.src=vaHtmlDir+'/imgs/arrow_down.gif';
		if (eGroup) eGroup.style.display = 'block';
	}
}

function EvtHandler() {
	this.events = new Array();
	this.addEvent = function(eventName, functionName, params) {
		if (!this.events[eventName]) this.events[eventName] = new Array();
		var evt = new Array();
		evt['function'] = functionName;
		evt['params'] = params;
		this.events[eventName].push(evt);
	}
	this.triggerEvent = function(eventName,sourceParams) {
		if (this.events[eventName]) {
			var strEval = '';
			for (var i = 0; i < this.events[eventName].length; i++) {
				strEval = this.events[eventName][i]['function'] + '(';
				if (this.events[eventName][i]['params']) {
					for (var j = 0; j < this.events[eventName][i]['params'].length; j++) {
						strEval += '\''+this.events[eventName][i]['params'][j]+'\'';
						if (j < this.events[eventName][i]['params'].length - 1) strEval += ', ';
					}
				}
				if (sourceParams) {
					if (this.events[eventName][i]['params'].length > 0) strEval += ', ';
					/*strEval += 'new Array(';
					for (var j = 0; j < sourceParams.length; j++) {
						strEval += '\''+sourceParams[j]+'\'';
						if (j < sourceParams.length - 1) strEval += ', ';
					}
					strEval += ')';*/
					strEval += Object.toJSON(sourceParams);
				}
				strEval += ');';
			}
			eval(strEval);
		}
	}
}

function ajaxCacheTrafficData(vpsId) {
	var uri = vaWebRoot+"/vs/vz/AjaxCacheTrafficData/"+vpsId;
	new Ajax.Request(uri, {
	  	method: 'post',
	  	parameters: {'vpsid':vpsId},
	  	onComplete: function(transport)	{
	  		if (200 == transport.status) {
				response = transport.responseXML;
				var result = 0;
				if (response.getElementsByTagName('result').length > 0 
					&& response.getElementsByTagName('result')[0].childNodes.length > 0) {
					result = response.getElementsByTagName('result')[0].childNodes[0].nodeValue;
				}
				if (result == 0) {
					//alert('Fehler beim Cachen des Traffics');
				} else {
					//alert(result);
				}
			}
			
		}
	});
}

function ajaxSyncPowerState(vpsId) {
	var uri = vaWebRoot+"/vs/vz/AjaxSyncPowerState/"+vpsId;
	new Ajax.Request(uri, {
	  	method: 'post',
	  	parameters: {'vpsid':vpsId},
	  	onComplete: function(transport)	{
	  		if (200 == transport.status) {
				response = transport.responseXML;
				var result = 0;
				if (response.getElementsByTagName('power_state_id').length > 0 
					&& response.getElementsByTagName('power_state_id')[0].childNodes.length > 0) {
					result = response.getElementsByTagName('power_state_id')[0].childNodes[0].nodeValue;
				}
				alert(result);
				if (result == 0) {
					//alert('Fehler beim Cachen des Traffics');
				} else {
					//alert(result);
				}
			}
			
		}
	});
}

function CButton(btTitle, btIcon, btOnclick) {
	var title = btTitle;
	var onclickFunc = btOnclick;
	var icon = btIcon;
	
	var elA, elImg, elSpan;
	var additionalClassName = '';
	var elA_Id ='';
	var elImg_Id = '';
	var elSpan_Id = '';
	
	this.createButton = function() {
		elA = new Element('a', {'className':('button'+(icon ? ' bt_image' : '')),'nohref':'nohref','id':elA_Id});
		elA.className = ('button'+(icon ? ' bt_image' : '')) + additionalClassName;
		elImg = new Element('img', {'id':elImg_Id});
		elSpan = new Element('span', {'id': elSpan_Id});
		elA.appendChild(elImg);
		elA.appendChild(elSpan);
	}
	this.toHtml = function() {
		if (!elA) {
			this.createButton();
		}
		elA.onclickFunc = onclickFunc;
		elA.onclick = function() { this.blur(); if (this.onclickFunc) eval(this.onclickFunc); };
		elSpan.innerHTML = btTitle;
		if (icon) {
			if (icon.lastIndexOf('.') != icon.length-4) {
				icon += '.gif';
			}
			elImg.src = vaHtmlDir+'/imgs/button_icon_'+icon;
		}
		return elA;
	}
	this.addClassName = function(strClassName) {
		additionalClassName += (' ' + strClassName);
	}
	this.setId = function(strId){
		elA_Id = strId + "_a";
		elImg_Id = strId + "_img";
		elSpan_Id = strId + "_span";
	}
	this.setOnClickFunc = function (strOnClickFunc){
		onclickFunc = strOnClickFunc;
	}
}


function ajaxLoadContent(uri, targetId, guiId) {
	var eOverlay = document.getElementById("ajax_content_target_"+guiId+"_overlay");
	var eContent = document.getElementById(targetId);
	if (eOverlay) eOverlay.style.display = 'block';
	eContent.style.display = 'none';
	new Ajax.Updater(targetId, uri, 
		{ 
			method: 'post', 
			evalScripts: true,
			parameters: {ajaxGuiId : guiId},
			onComplete: function(transport) {
				if (eOverlay) eOverlay.style.display = 'none';
				eContent.style.display = 'block';
			}
		}
	);
}

function ajaxSetClientProperty(propertyName, propertyValue) {
	var uri = vaWebRoot + "/core/base/AjaxSetClientProperty/"+propertyName+"/"+propertyValue;
	new Ajax.Request(uri, {method:'get',onSuccess: function(transport){}});
}

function getKeyCodeEnter(e) {
	var kC = (window.event) ?    // MSIE or Firefox?
			event.keyCode : e.keyCode;
	var kEnter = (window.event) ?   
			13 : (e.DOM_VK_ENTER - 1) // MSIE : Firefox
	if (kC == kEnter) {
		return true;
	}
	return false;
}
function rf() {
	return false;
}

function checkAjaxReponseError(text) {
	if (text.substr(0,9) == '<!DOCTYPE') {
		if (text.indexOf('<!-- PAGE_LOGIN -->') > 0) { 
			window.location=vaWebRoot+'?session_expired=1&lng='+vaLanguage;
			return true;
		} else if (text.indexOf('<!-- PAGE_SOFTWARE_ERROR -->') > 0) {
			return true;
		} else if (text.indexOf('<!-- PAGE_MAINTENANCE_ERROR -->') > 0) {
			window.location=vaWebRoot+'/maintenance-error.html';
			return true;
		}
	}
	return false;
}

