/*******************************************
* kwBasic
*******************************************/

/* function for clickable resized images */
var theWindow;
function openPic(url,winName,winParams)	{
	theWindow = window.open(url,winName,winParams);	
	if(theWindow)	theWindow.focus();
}

function openPortrait(URL){
	fenster=window.open(URL,"Portrait","scrollbars=yes,locationbar=no,menubar=no,resizable=no,width=500,height=500");
}

function openWindow(strUrl, strTitle, intWidth, intHeight){
	var strFeatureMode = false;
	var strFeatures = '';
	if(typeof intWidth == 'string'){
		strFeatures = intWidth;
		strFeatureMode = true;
	}else{
		var winWidth = 20 + parseInt(intWidth);
		var winHeight = 30 + parseInt(intHeight);
		var ieWinWidth = 50 + parseInt(intWidth);
		var ieWinHeight = 80 + parseInt(intHeight);
		strFeatures = "width=" + winWidth + ",height=" + winHeight + ",status=no,locationbar=no,menubar=no,resizable=yes,scrollbars";
	}
	myOpenedWindow = window.open(strUrl, strTitle, strFeatures);
	myOpenedWindow.focus();
	// return
	return false;
}

function toggleDiv(idDiv,idA,classA0,classA1){
	var objDiv = null;
	var objA = null;
	var classAClosed = "clo";
	var classAOpen = "ope";
	if(document.getElementById(idDiv)) objDiv = document.getElementById(idDiv);
	if(document.getElementById(idA)) objA = document.getElementById(idA);
	if(classA0!=undefined) classAClosed = classA0;
	if(classA1!=undefined) classAOpen = classA1;
	if(objDiv!=null){
		if(objDiv.style.display=="none"){
			objDiv.style.display = "";
			if(objA!=null) objA.className = classAOpen;
		}else if(objDiv.style.display==""){
			objDiv.style.display = "none";
			if(objA!=null) objA.className = classAClosed;
		}
	}
	return false;
}

function toggleElements(idA,idB,idLink,linkTextA,linkTextB){
	var objA = null;
	var objB = null;
	var objLink = null;
	if(document.getElementById(idA)) objA = document.getElementById(idA);
	if(document.getElementById(idB)) objB = document.getElementById(idB);
	if(idLink!="" && document.getElementById(idLink)) objLink = document.getElementById(idLink);
	if(objA!=null && objA.style.display==""){
		objA.style.display = "none";
		if(objB!=null) objB.style.display = "";
		if(idLink!=null) objLink.innerHTML = linkTextA;
	}else if(objB!=null && objB.style.display==""){
		objB.style.display = "none";
		if(objA!=null) objA.style.display = "";
		if(objLink!=null) objLink.innerHTML = linkTextB;
	}
	return false;
}

function toggleElement(id,idLink,linkTextA,linkTextB){
	var obj = null;
	var objLink = null;
	if(document.getElementById(id)) obj = document.getElementById(id);
	if(idLink!="" && document.getElementById(idLink)) objLink = document.getElementById(idLink);
	if(obj.style.display=="none"){
		obj.style.display = "";
		if(objLink!=null) objLink.innerHTML = linkTextB;
	}else{
		obj.style.display = "none";
		if(objLink!=null) objLink.innerHTML = linkTextA;
	}
	return false;
}

function showKwSelect(id,objCal,offX,offY){
	var offsetX = 0;
	var offsetY = 0;
	var height = 15;
	var lines = document.getElementById(id).getElementsByTagName("a").length;
	if(typeof offX=="undefined") offX = 0;
	if(typeof offY=="undefined") offY = 0;
	// berechnung
	offsetX = getElementLeftPos(objCal) + offX;
	if(offsetX<0) offsetX = 0;
	offsetY = getElementTopPos(objCal) - height*lines/2 + offY;
	if(offsetY<10) offsetY = 10;
	// action
	toggleElement(id);
	document.getElementById(id).style.left = offsetX+"px";
	document.getElementById(id).style.top = offsetY+"px";
	return false;
}

function addBookmark(url,title){
	if(window.sidebar){
		// Mozilla Firefox Bookmark
		window.sidebar.addPanel(title, url,"");
		return false;
	}else if(window.external){
		// IE Favorite
		window.external.AddFavorite(url, title);
		return false;
	}else if(window.opera && window.print){
		// Opera Hotlist
		var elem = document.createElement("A");
		elem.setAttribute("href",url);
		elem.setAttribute("title",title);
		elem.setAttribute("rel","sidebar");
		elem.click();
	}
	return false;
}

function getElementTopPos(inputObj){		
  var returnValue = inputObj.offsetTop;
  while((inputObj = inputObj.offsetParent) != null){
  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetTop;
  }
  return returnValue;
}

function getElementLeftPos(inputObj){
  var returnValue = inputObj.offsetLeft;
  while((inputObj = inputObj.offsetParent) != null){
  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetLeft;
  }
  return returnValue;
}

function getViewportWidth(){
	return self.innerWidth || (document.documentElement.clientWidth || document.body.clientWidth);
}

function getViewportHeight(){
	return self.innerHeight || (document.documentElement.clientHeight || document.body.clientHeight);
}

function wday(num,spr){
	var sprache = "de";
	if(typeof spr=="string") sprache = spr;
	if(sprache=="de"){
		var day = new Array("So.","Mo.","Di.","Mi.","Do.","Fr.","Sa.");
	}else if(sprache=="fr"){
		var day = new Array("dim.","lun.","mar.","mer.","jeu.","ven.","sam.");
	}
	return day[num%7];
}

function wdayFull(num,spr){
	var sprache = "de";
	if(typeof spr=="string") sprache = spr;
	if(sprache=="de"){
		var day = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
	}else if(sprache=="fr"){
		var day = new Array("dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi");
	}
	return day[num%7];
}

function in_array(item,arr){
	for(p=0;p<arr.length;p++) if(item==arr[p]) return true;
	return false;
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}


// Javascript sprintf http://www.webtoolkit.info/
sprintfWrapper = {
	init : function () {
		if (typeof arguments == "undefined") { return null; }
		if (arguments.length < 1) { return null; }
		if (typeof arguments[0] != "string") { return null; }
		if (typeof RegExp == "undefined") { return null; }
		var string = arguments[0];
		var exp = new RegExp(/(%([%]|(\-)?(\+|\x20)?(0)?(\d+)?(\.(\d)?)?([bcdfosxX])))/g);
		var matches = new Array();
		var strings = new Array();
		var convCount = 0;
		var stringPosStart = 0;
		var stringPosEnd = 0;
		var matchPosEnd = 0;
		var newString = '';
		var match = null;
		while (match = exp.exec(string)) {
			if (match[9]) { convCount += 1; }
			stringPosStart = matchPosEnd;
			stringPosEnd = exp.lastIndex - match[0].length;
			strings[strings.length] = string.substring(stringPosStart, stringPosEnd);
			matchPosEnd = exp.lastIndex;
			matches[matches.length] = {
				match: match[0],
				left: match[3] ? true : false,
				sign: match[4] || '',
				pad: match[5] || ' ',
				min: match[6] || 0,
				precision: match[8],
				code: match[9] || '%',
				negative: parseInt(arguments[convCount]) < 0 ? true : false,
				argument: String(arguments[convCount])
			};
		}
		strings[strings.length] = string.substring(matchPosEnd);
		if (matches.length == 0) { return string; }
		if ((arguments.length - 1) < convCount) { return null; }
		var code = null;
		var match = null;
		var i = null;
		for (i=0; i<matches.length; i++) {
			if (matches[i].code == '%') { substitution = '%'; }
			else if (matches[i].code == 'b') {
					matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(2));
					substitution = sprintfWrapper.convert(matches[i], true);
			}else if (matches[i].code == 'c') {
					matches[i].argument = String(String.fromCharCode(parseInt(Math.abs(parseInt(matches[i].argument)))));
					substitution = sprintfWrapper.convert(matches[i], true);
			}else if (matches[i].code == 'd') {
					matches[i].argument = String(Math.abs(parseInt(matches[i].argument)));
					substitution = sprintfWrapper.convert(matches[i]);
			}else if (matches[i].code == 'f') {
					matches[i].argument = String(Math.abs(parseFloat(matches[i].argument)).toFixed(matches[i].precision ? matches[i].precision : 6));
					substitution = sprintfWrapper.convert(matches[i]);
			}else if (matches[i].code == 'o') {
					matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(8));
					substitution = sprintfWrapper.convert(matches[i]);
			}else if (matches[i].code == 's') {
					matches[i].argument = matches[i].argument.substring(0, matches[i].precision ? matches[i].precision : matches[i].argument.length)
					substitution = sprintfWrapper.convert(matches[i], true);
			}else if (matches[i].code == 'x') {
					matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(16));
					substitution = sprintfWrapper.convert(matches[i]);
			}else if (matches[i].code == 'X') {
					matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(16));
					substitution = sprintfWrapper.convert(matches[i]).toUpperCase();
			}else {
					substitution = matches[i].match;
			}
			newString += strings[i];
			newString += substitution;
		}
		newString += strings[i];
		return newString;
	}
	,
	convert : function(match, nosign){
		if (nosign) {
				match.sign = '';
		} else {
				match.sign = match.negative ? '-' : match.sign;
		}
		var l = match.min - match.argument.length + 1 - match.sign.length;
		var pad = new Array(l < 0 ? 0 : l).join(match.pad);
		if (!match.left) {
			if (match.pad == "0" || nosign) {
				return match.sign + pad + match.argument;
			} else {
				return pad + match.sign + match.argument;
			}
		} else {
			if (match.pad == "0" || nosign) {
				return match.sign + match.argument + pad.replace(/0/g, ' ');
			} else {
				return match.sign + match.argument + pad;
			}
		}
	}
}
sprintf = sprintfWrapper.init;
