//Copyright: www.media-authoring.de
//Initial author: Peter Minholz
//Last modified: 10.3.2010

// Note +"px" is essential to work in firefox and opera
// To get values to calculate we must use x = parseFloat(x); to eliminate units
// Is parseFloat a valid function ?


//returns basename of path
//example js_Basename(documet.URL) returns the actual file
function js_BaseName(path) {
    return path.replace(/\\/g,'/').replace( /.*\//, '' );
}

//returns foldername
//example js_FolderName(documet.URL) returns the folder of the actual file
function js_FolderName(path) {
    return path.replace(/\\/g,'/').replace(/\/[^\/]*$/, '');
} 




//get the current css property 
function js_getStyleValue (elementID, cssProperty) {
	var value = "";
	var element = document.getElementById(elementID);
	if (window.getComputedStyle) {
		value = window.getComputedStyle(element, null)[cssProperty];
	} else if (element.currentStyle) {
		value = element.currentStyle[cssProperty];
	}
	return value;
}


	
//define layers before using the function
//styles must to be read must be defined intern, not in extern area or in stylesheet file
//if you need this data to calculate positions for example
function js_layerHide(v_layerID){
	var v_layerID = v_layerID;
	document.getElementById(v_layerID).style.visibility = "hidden";
}

function js_layerShow(v_layerID){
	var v_layerID = v_layerID;
	document.getElementById(v_layerID).style.visibility = "visible";
}


function js_layerWidth(v_layerID,v_layerWidth){
	var v_layerID = v_layerID;
	var v_layerWidth = v_layerWidth;
	document.getElementById(v_layerID).style.width = v_layerWidth+"px";
}

function js_layerHeight(v_layerID,v_layerHeight){
	var v_layerID = v_layerID;
	var v_layerHeigth = v_layerHeight;
	document.getElementById(v_layerID).style.height = v_layerHeight+"px";
}


//does work, but note this returns the values defined in the stylesheet
//this is a position relative to the parent element 
function js_layerX(v_layerID){
		var v_layerID = v_layerID;
		x = document.getElementById(v_layerID).style.left;
		x = parseFloat(x); //eliminate unit
		return (x);
}

//does work, but note this returns the values defined in the stylesheet
//this is a position relative to the parent element 
function js_layerY(v_layerID){
		var v_layerID = v_layerID;
		y = document.getElementById(v_layerID).style.top;
		y = parseFloat(y); //eliminate unit
		return (y);
}



//move
// this still causes errors
var moving;

function js_layerStop(){
	clearInterval(moving);
}


function js_layerMovement(v_layerID,v_distanceX,v_distanceY){
	var v_layerID = v_layerID;
	js_layerStop();
	//var v_function = "\"js_layerMove("+v_layerID+","+v_distanceX+","+v_distanceY+")\"";
	//moving = setInterval(v_function,20); geht nicht
	moving = setInterval("js_layerMove('help_div',1,1)",20); //geht
}


//direction left or right - up or down 
/*
function js_layerMove2(v_layerID,v_distanceX,v_distanceY,v_directionX,v_directionY){
		if(v_directionX == "right"){
			document.getElementById(v_layerID).style.left = js_layerX(v_layerID)+v_distanceX+"px";
		} else {
			document.getElementById(v_layerID).style.left = js_layerX(v_layerID)-v_distanceX+"px";
		}
		if(v_directionY == "down"){
			document.getElementById(v_layerID).style.top = js_layerY(v_layerID)+v_distanceY+"px";
		} else {
			document.getElementById(v_layerID).style.top = js_layerY(v_layerID)-v_distanceY+"px";
		}
}
*/

//direction left or right - up or down 
function js_layerMove(v_layerID,v_distanceX,v_distanceY){
		var v_layerID = v_layerID;
		document.getElementById(v_layerID).style.left = js_layerX(v_layerID)+v_distanceX+"px";
		document.getElementById(v_layerID).style.top = js_layerY(v_layerID)+v_distanceY+"px";
}


function js_layerContent(v_layerID,v_layerContent) {
	var v_layerID = v_layerID;
	var v_layerContent = v_layerContent;
    var element = document.getElementById(v_layerID);
    element.innerHTML = v_layerContent;
}

//note this is working with style position:absolute and a high z-index
function js_layerPos(v_layerID,v_newX,v_newY,v_offsetX,v_offsetY){
	var v_layerID = v_layerID;
	document.getElementById(v_layerID).style.left = v_newX+v_offsetX+"px";
	document.getElementById(v_layerID).style.top = v_newY+v_offsetY+"px";
	js_layerShow(v_layerID);
}


// example onmouseover="js_helpEvent(event,'<b>Titel</b><br/>Hilfetext',8,8);" onmouseout="js_layerHide('help_div');" 
// exampe for help_div
// <div id="help_div" style="background-color:#FFE0FF; position:absolute; top:-300px; left:-300px; padding:2px 4px; font-family:arial; font-size:8pt; z-index:99;" >Hilfetext</div>
function js_helpEvent(aEvent,v_helpText,v_offsetX,v_offsetY) {
   var v_helpEvent = window.event ? window.event : aEvent;
   var v_newX = v_helpEvent.clientX;
   var v_newY = v_helpEvent.clientY;
   
   //for Safari,Firefox,Opera window.scrollY else IE,Firefox,Opera document.body.parentNode.scrollTop;
   if(!window.scrollY){
    var v_scroll_offsetY = document.body.parentNode.scrollTop;
    var v_scroll_offsetX = document.body.parentNode.scrollLeft;
   }else {
     var v_scroll_offsetY = window.scrollY;
     var v_scroll_offsetX = window.scrollX;
   }
   var v_realY = v_scroll_offsetY + v_newY;
   var v_realX = v_scroll_offsetX + v_newX;
   //var newX = aEvent.screenX; far
   //var newY = aEvent.screenY; far
   //var myString = "screenX="+v_helpEvent.screenX+" clientX="+v_helpEvent.clientX+"\nscreenY="+v_helpEvent.screenY+" clientY="+v_helpEvent.clientY;
   //alert(myString);
   js_layerContent("help_div",v_helpText);
   js_layerPos("help_div",v_realX,v_realY,v_offsetX,v_offsetY);
   js_layerShow("help_div");
}


function js_posEvent(aEvent,v_layerID,v_offsetX,v_offsetY) {
	var v_layerID = v_layerID;
	var v_helpEvent = window.event ? window.event : aEvent;
	var v_newX = v_helpEvent.clientX;
	var v_newY = v_helpEvent.clientY;
    if(!window.scrollY){
    	var v_scroll_offsetY = document.body.parentNode.scrollTop;
    	var v_scroll_offsetX = document.body.parentNode.scrollLeft;
	}else {
   	  	var v_scroll_offsetY = window.scrollY;
    	var v_scroll_offsetX = window.scrollX;
   }
   var v_realY = v_scroll_offsetY + v_newY;
   var v_realX = v_scroll_offsetX + v_newX;
   js_layerPos(v_layerID,v_realX,v_realY,v_offsetX,v_offsetY);
}


//set pos of layer centered into the browser window without changing size
function js_layerCenter (v_layerID, v_offsetX, v_offsetY){
	var v_layerID = v_layerID;
	var v_windowWidth = window.innerWidth || (window.document.documentElement.clientWidth || window.document.body.clientWidth);
	var v_windowHeight = window.innerHeight || (window.document.documentElement.clientHeight || window.document.body.clientHeight);
	var v_layerWidth = js_getStyleValue(v_layerID, 'width');
	var v_layerHeight = js_getStyleValue(v_layerID, 'height');
	var v_newY =  (v_windowHeight /2)-(v_layerHeight/2);
	var v_newX =  (v_windowWidth/2)-(v_layerWidth/2);
	js_layerPos(v_layerID,v_newX,v_newY,v_offsetX,v_offsetY);
}


//shows a centered layer with content in the browser window
//php use: use " quotes and mask the " quotes, inside the js function use '
//does still not work with srolled content
//note: using vars content must be set $var = " 'content' " in the moment;
function js_layerCenterContent(v_layerID,v_layerContent,v_layerWidth,v_layerHeight) {
	var v_layerID = v_layerID;
	var v_offsetX = 0;
	var v_offsetY = 0;
	var v_layerWidth = v_layerWidth;
	var v_layerHeight = v_layerHeight;
	var v_layerContent = v_layerContent;
	//alert("width: "+v_layerWidth+" height: "+v_layerHeight);
	
	var v_windowWidth = window.innerWidth || (window.document.documentElement.clientWidth || window.document.body.clientWidth);
	var v_windowHeight = window.innerHeight || (window.document.documentElement.clientHeight || window.document.body.clientHeight);   
	
	//alert("window width: "+v_windowWidth+" window height. "+v_windowHeight);
	
	var v_newY =  (v_windowHeight /2)-(v_layerHeight/2);
    var v_newX =  (v_windowWidth/2)-(v_layerWidth/2);
	
	
	
	//alert("newX: "+" newY: "+v_newY);
	
	if(!window.scrollY){
    	var v_scroll_offsetY = document.body.parentNode.scrollTop;
    	var v_scroll_offsetX = document.body.parentNode.scrollLeft;
	} else {
   	  	var v_scroll_offsetY = window.scrollY;
    	var v_scroll_offsetX = window.scrollX;
    }
	var v_realY = v_scroll_offsetY + v_newY;
    var v_realX = v_scroll_offsetX + v_newX;
	
	
	//js_layerPos(v_layerID,v_newX,v_newY,v_offsetX,v_offsetY); //without sroll offset
    js_layerPos(v_layerID,v_realX,v_realY,v_offsetX,v_offsetY); //with scroll offset

	js_layerWidth(v_layerID,v_layerWidth);
   	js_layerHeight(v_layerID,v_layerHeight);
   	js_layerContent(v_layerID,v_layerContent);
    js_layerShow(v_layerID);
}



//shows a centered layer with content in the browser window
//php use: use " quotes and mask the " quotes, inside the js function use '
//does still not work with srolled content
function js_showImage(event,v_layerID,v_layerContent,v_layerWidth,v_layerHeight) {
	var v_layerID = v_layerID;
	var v_offsetX = 0;
	var v_offsetY = 100;
	var v_layerWidth = v_layerWidth;
	var v_layerHeight = v_layerHeight;
	var v_layerContent = v_layerContent;
	//alert("width: "+v_layerWidth+" height: "+v_layerHeight);
	
	var v_windowWidth = window.innerWidth || (window.document.documentElement.clientWidth || window.document.body.clientWidth);
	var v_windowHeight = window.innerHeight || (window.document.documentElement.clientHeight || window.document.body.clientHeight);   
	
	//alert("window width: "+v_windowWidth+" window height. "+v_windowHeight);
	
	var v_newY =  (v_windowHeight /2)-(v_layerHeight/2);
    var v_newX =  (v_windowWidth/2)-(v_layerWidth/2);
	
	
	
	//var v_newY =  (v_windowHeight /2);
    //var v_newX =  (v_windowWidth/2);
	
	
	//alert("newX: "+" newY: "+v_newY);
	/*
	if(!window.scrollY){
    	var v_scroll_offsetY = document.body.parentNode.scrollTop;
    	var v_scroll_offsetX = document.body.parentNode.scrollLeft;
	} else {
   	  	var v_scroll_offsetY = window.scrollY;
    	var v_scroll_offsetX = window.scrollX;
    }
	var v_realY = v_scroll_offsetY + v_newY;
    var v_realX = v_scroll_offsetX + v_newX;
	*/
	
	//alert(v_realY+"|"+v_realX);
	//js_layerPos(v_layerID,0,800,v_offsetX,v_offsetY); //with position absolute the image is scrolling with fixed it does not work
	//js_layerPos(v_layerID,v_newX,v_newY,v_offsetX,v_offsetY); //without sroll offset
    //js_layerPos(v_layerID,v_realX,v_realY,v_offsetX,v_offsetY); //with scroll offset

	js_layerWidth(v_layerID,v_layerWidth);
   	js_layerHeight(v_layerID,v_layerHeight);
   	js_layerContent(v_layerID,v_layerContent);
	//var v_layerWidth = js_getStyleValue(v_layerID, 'width');
	//var v_layerHeight = js_getStyleValue(v_layerID, 'height');
	//alert( v_layerHeight);
	js_posEvent(event,v_layerID,v_offsetX,v_offsetY)
    js_layerShow(v_layerID);
}





function js_setSRC ( v_elementID, v_src ){
	 document.getElementById(v_elementID).src = v_src;
}



function UhrzeitAnzeigen()
{
	//alert('Uhr-Funktion');
	
	if(!document.all && !document.getElementById)
	{
		return;
	}
	
	var Stunden = Versextzeit.getHours();
	var Minuten = Versextzeit.getMinutes();
	var Sekunden = Versextzeit.getSeconds();
	Versextzeit.setSeconds(Sekunden+1);
	   
	if(Stunden<=9)
	{
		Stunden = '0' + Stunden;
	}
	if(Minuten<=9)
	{
		Minuten = '0' + Minuten;
	}
	if(Sekunden<=9)
	{
		Sekunden = '0' + Sekunden;
	}
	Uhrzeitanzeige = Stunden + ':' + Minuten + ':' + Sekunden;
	if(document.getElementById)
	{
		document.getElementById('Uhrzeit').innerHTML = Uhrzeitanzeige
	}
	else if(document.all)
	{
		Uhrzeit.innerHTML = Uhrzeitanzeige;
	}
	setTimeout('UhrzeitAnzeigen()', 1000);
}



function f_onload(){
		UhrzeitAnzeigen();
		var temp = js_BaseName(location.pathname);
		//alert (temp);
		//note the load()-function is necassary for google maps function
		//but the load function leads to erros in following js functions
		//execute load() only if neccassary
		switch (temp){
			case "karte.php":	
			load(); //Google Maps causes errors
			break;
			case "profil.php":
			load();
			break;
			default:
		}
}


function f_unload(){
		GUnload(); //Google Maps
}



function resize_iframe(ht) {
    document.getElementById('Beschreibungsframe').style.height = ht+'px';
}

function resize_iframe2(ht) {
	document.getElementById('Beschreibungsframe2').style.height = ht+'px';
}

function resize_iframe3(ht) {
    document.getElementById('Beschreibungsframe3').style.height = ht+'px';
}

function FensterOeffnen (Adresse) {
	MeinFenster = window.open(Adresse, 'Zweitfenster', 'width=300,height=300,scrollbars=yes');
	MeinFenster.focus();
}

function ma_popup_center (theURL,winName,winWidth,winHeight,winFeatures){
		//alert ("function >> ma_popup_center");
		var L_top =  ", top=" + ((screen.height/2)-(winHeight/2)-50);
		var L_left =  ", left=" + ((screen.width/2)-(winWidth/2));
		winFeatures = winFeatures + "," + " width=" + winWidth + ", height=" + winHeight + L_top + L_left;
		//alert(winFeatures); 
  		myWindow=window.open(theURL,"winName",winFeatures );
		myWindow.focus();
}



