/*	

**************************************	
*    (c) 2006-2008 Oliver Zeidler    *
*    http://intergraphica.de         *
*                                    *
**************************************

*/


// AJAX FUNCTIONS


// EMPTY AJAX CACHE --------------------------------------------------------

var Http = {
	ReadyState: {
		Uninitialized: 0,
		Loading: 1,
		Loaded:2,
		Interactive:3,
		Complete: 4
	},
		
	Status: {
		OK: 200,
		
		Created: 201,
		Accepted: 202,
		NoContent: 204,
		
		BadRequest: 400,
		Forbidden: 403,
		NotFound: 404,
		Gone: 410,
		
		ServerError: 500
	},
		
	Cache: {
		Get: 1,
		GetCache: 2,
		GetNoCache: 3,
		FromCache: 4
	},
	
	Method: {Get: "GET", Post: "POST", Put: "PUT", Delete: "DELETE"},
	
	enabled: false,
	logging: false,
	_get: null,	// Reference to the XmlHttpRequest object
	_cache: new Object(),
	
	Init: function(){
		Http._get = Http._getXmlHttp()
		Http.enabled = (Http._get != null)
		Http.logging = (window.Logging != null);
	},
	
	_getXmlHttp: function(){
	/*@cc_on @*//*@if (@_jscript_version >= 5)
		try { return new ActiveXObject("Msxml2.XMLHTTP"); } 
		catch (e) {} 
		try { return new ActiveXObject("Microsoft.XMLHTTP"); } 
		catch (e) {} 
	@end @*/
		try { return new XMLHttpRequest();}
		catch (e) {}

		return null;
	},

/*
	Params:
		url: The URL to request. Required.
		cache: Cache control. Defaults to Cache.Get.
		callback: onreadystatechange function, called when request is completed. Optional.
		method: HTTP method. Defaults to Method.Get.
*/
	get: function(params, callback_args){	
		if (!Http.enabled) throw "Http: XmlHttpRequest not available.";
		
		var url = 'http://gallery.polygonismus.de';
		if (!url) throw "Http: A URL must be specified";
				
		var cache = params.cache || Http.Cache.Get;
		var method = params.method || Http.Method.Get;
		var callback = params.callback;
		
		if ((cache == Http.Cache.FromCache) || (cache == Http.Cache.GetCache))
		{
			var in_cache = Http.from_cache(url, callback, callback_args)

			if (Http.logging){
				Logging.log(["Http: URL in cache: " + in_cache]);
			}

			if (in_cache || (cache == Http.Cache.FromCache)) return in_cache;
		}
		
		if (cache == Http.Cache.GetNoCache)
		{
			var sep = (-1 < url.indexOf("?")) ? "&" : "?"	
			url = url + sep + "__=" + encodeURIComponent((new Date()).getTime());
		}
	
		// Only one request at a time, please
		if ((Http._get.readyState != Http.ReadyState.Uninitialized) && 
			(Http._get.readyState != Http.ReadyState.Complete)){
			this._get.abort();
			
			if (Http.logging){
				Logging.log(["Http: Aborted request in progress."]);
			}
		}
		
		Http._get.open(method, url, true);

		Http._get.onreadystatechange =  function() {
			if (Http._get.readyState != Http.ReadyState.Complete) return;
			
			if (Http.logging){
				Logging.log(["Http: Returned, status: " + Http._get.status]);
			}

			if ((cache == Http.Cache.GetCache) && (Http._get.status == Http.Status.OK)){
				Http._cache[url] = Http._get.responseText;
			}
			
			if (callback_args == null) callback_args = new Array();

			var cb_params = new Array();
			cb_params.push(Http._get);
			for(var i=0;i<callback_args.length;i++)
				cb_params.push(callback_args[i]);
				
			callback.apply(null, cb_params);
		}
		
		if(Http.logging){
			Logging.log(["Http: Started\n\tURL: " + url + "\n\tMethod: " + method + "; Cache: " + Hash.keyName(Http.Cache,cache)])
		}
		
		Http._get.send(params.body || null);
	},
	
	from_cache: function(url, callback, callback_args){
		var result = Http._cache[url];
		
		if (result != null) {
			var response = new Http.CachedResponse(result)
			
			var cb_params = new Array();
			cb_params.push(response);
			for(var i=0;i<callback_args.length;i++)
				cb_params.push(callback_args[i]);
							
			callback.apply(null, cb_params);
				
			return true
		}
		else
			return false
	},
	
	clear_cache: function(){
		Http._cache = new Object();
	},
	
	is_cached: function(url){
		return Http._cache[url]!=null;
	},
	
	CachedResponse: function(response) {
		this.readyState = Http.ReadyState.Complete
		this.status = Http.Status.OK
		this.responseText = response
	}	
}

Http.Init()

function json_response(response){
	var js = response.responseText;
	try{
		return eval(js); 
	} catch(e){
		if (Http.logging){
			Logging.logError(["json_response: " + e]);
		}
		else{
			alert("Error: " + e + "\n" + js);
		}
		return null;
	}
}

function getResponseProps(response, header){
	try {
		var s = response.getResponseHeader(header || 'X-Ajax-Props');
		if (s==null || s=="")
			return new Object()
		else
			return eval("o="+s)
	} catch (e) { return new Object() }
}



// AJAX CONTENT LOADER

var loadedobjects=""
var rootdomain="http://"+window.location.hostname

function ajaxpage(url, containerid){
var page_request = false
if (window.XMLHttpRequest) // if Mozilla, Safari etc
page_request = new XMLHttpRequest()
else if (window.ActiveXObject){ // if IE
try {
page_request = new ActiveXObject("Msxml2.XMLHTTP")
} 
catch (e){
try{
page_request = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
else
return false
page_request.onreadystatechange=function(){
loadpage(page_request, containerid)
}
page_request.open('GET', url, true)
page_request.send(null)
}

function loadpage(page_request, containerid){
if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){
document.getElementById(containerid).innerHTML=page_request.responseText;
// Gallery einfaden
opacity('gallery', 0, 100, 2000);
// Loader ausfaden
var ausblenden=setTimeout("opacity('loader', 100, 0, 700);",1000);

// Info einfaden 
var einfaden=setTimeout("opacity('infotext', 0, 100, 700);",2000);
}

}



function loadobjs(){
if (!document.getElementById)
return
for (i=0; i<arguments.length; i++){
var file=arguments[i]
var fileref=""
if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
if (file.indexOf(".js")!=-1){ //If object is a js file
fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", file);
}
else if (file.indexOf(".css")!=-1){ //If object is a css file
fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", file);
}
}
if (fileref!=""){
document.getElementsByTagName("head").item(0).appendChild(fileref)
loadedobjects+=file+" " //Remember this object as being already added to page
}
}
}



function schreibeInfo(beschreibung) {
	changeOpac(0, 'infotext');
	document.getElementById('infotext').innerHTML=beschreibung;
}



// AUTO SCROLL THE PAGE

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);


// Parameter
var sense1 = 20; // Sensibilitaetszone 1 (in %)
var sense2 = 10; // Sensibilitaetszone 2 (in %)
var speed1 = 1;  // Scrollgeschwindigkeit in Zone 1
var speed2 = 3;  // Scrollgeschwindigkeit in Zone 2
var stime  = 30; // Timer zum Scrollen

// Interne Variablen
var scrolling = false;
var scrollfast;
var richtung;
var y_mem = -1;
var myWin;

// Scrolling anhalten
function stopp_scrolling()
{
  scrolling = false;
  y_mem     = -1;
}

// Scroll aktivieren und durchfuehren
function start_scrolling(initial)
{
  if(!scrolling)
    return;

  // Dokumentposition ermitteln
  var dy = (myWin.pageYOffset != null) ? myWin.pageYOffset : myWin.document.body.scrollTop;
  if((y_mem != dy) && !initial)
    return;
  var dx = (myWin.pageXOffset != null) ? myWin.pageXOffset : myWin.document.body.scrollLeft;
  dy += richtung * (scrollfast ? speed2 : speed1);

  // Scrollen
  myWin.scrollTo(dx, dy);
  y_mem = dy;

  // Funktion erneut aufrufen
  setTimeout("start_scrolling(false)", stime);
}

// Auswertung der Mausposition
function zeige(e)
{
  // Mausposition und Dokumentdaten
  var y = myWin.Event ? e.pageY : myWin.event.clientY;
  if(myWin.Event)
    y -= - (myWin.pageYOffset != null) ? myWin.pageYOffset : myWin.document.body.scrollTop;
  var wh = myWin.innerHeight ? myWin.innerHeight : myWin.document.body.clientHeight;
  var dh = myWin.document.height ? myWin.document.height : myWin.document.body.scrollHeight;

  // Zwischenvariablen
  var s1 = Math.round(wh * sense1 / 100);
  var s2 = Math.round(wh * sense2 / 100);
  var now_scroll;

  // Scrollnotwendigkeit ermitteln
  if((y < s1) || (y > (wh - s1)))
  {
    now_scroll = true;
    richtung   = (y < s1) ? -1 : 1;
    scrollfast = ((y < s2) || (y > (wh - s2))) ? true : false;
  }
  else
  {
    now_scroll = false;
    scrolling  = false;
  }

  // Scrollstatus geaendert?
  if(now_scroll != scrolling)
  {
    y_mem     = -1;
    scrolling = now_scroll;
    if(scrolling)
      start_scrolling(true);
  }
}

// Mauskontrolle initiieren
function init()
{
  myWin = window;

  if(myWin.Event)
    myWin.document.captureEvents(Event.MOUSEMOVE);

  myWin.document.onmousemove = zeige;
}





// MOVING SITEMENU

 var verticalpos="fromtop"

 if (!document.layers)
 document.write('</div>')

 function JSFX_FloatTopDiv()
 {
 var startX = 50,
 startY = 465;
 var ns = (navigator.appName.indexOf("Netscape") != -1);
 var d = document;
 
 function ml(id)
 {
 var el=d.getElementById?d.getElementById(id):d.all?d.all[id]:d.layers[id];
 if(d.layers)el.style=el;
 el.sP=function(x,y){this.style.left=x;this.style.top=y;};
 el.x = startX;
 if (verticalpos=="fromtop")
 el.y = startY;
 else{
 el.y = ns ? pageYOffset + innerHeight : document.body.scrollTop + document.body.clientHeight;
 el.y -= startY;
 }
 return el;
 }
 window.stayTopLeft=function()
 {
 if (verticalpos=="fromtop"){
 
 if (screen.availHeight>800){
 var pY = ns ? pageYOffset : document.body.scrollTop;
 ftlObj.y += (pY + startY - ftlObj.y)/8;
 
 }
 }
 else{
 var pY = ns ? pageYOffset + innerHeight : document.body.scrollTop + document.body.clientHeight;
 ftlObj.y += (pY - startY - ftlObj.y)/8;
 }
 ftlObj.sP(ftlObj.x, ftlObj.y);
 setTimeout("stayTopLeft()", 10);
 }
 ftlObj = ml("divStayTopLeft");
 stayTopLeft();
 }
 
 
 
 
 
 // TOP MENU ------------------------------------------------------------------

function showSubmenu(id)  {
	var ms=500; 
	// set all divs to -moz 0
	
	changeOpac(0, '1');
	changeOpac(0, '2');
	changeOpac(0, '3');
	changeOpac(0, '4');
	changeOpac(0, '5');
	changeOpac(0, '6');
	changeOpac(0, '7');
	
	// fade in
	shiftOpacity('1', ms);
	shiftOpacity('2', ms);
	shiftOpacity('3', ms);
	shiftOpacity('4', ms);
	shiftOpacity('5', ms);
	shiftOpacity('6', ms);
	shiftOpacity('7', ms);
	
	// hide other divs
	document.getElementById('1').style.display='none';
	document.getElementById('2').style.display='none';
	document.getElementById('3').style.display='none';
	document.getElementById('4').style.display='none';
	document.getElementById('5').style.display='none';
	document.getElementById('6').style.display='none';
	document.getElementById('7').style.display='none';
		
	document.getElementById(id).style.display='block';	
} 



// Fading Effect --------------------------------------------------------------

function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
} 

function shiftOpacity(id, millisec) {
	 //if an element is invisible, make it visible, else make it ivisible
     if(document.getElementById(id).style.opacity == 0) {
        opacity(id, 0, 100, millisec);
    } else {
        opacity(id, 100, 0, millisec);
    } 
     
} 




// THE FLY 

//Browser Sniffer
var ns4up = (document.layers) ? 1 : 0;
var ie4up = (document.all) ? 1 : 0;
var mozup = (!document.all && document.getElementById) ? 1 : 0;

//var Ver4=parseInt(navigator.appVersion.charAt(0))>=4
//var IE=navigator.appName.indexOf("Microsoft")!=-1
var al, imagesrc, ex=-55, ey=-55, x0=-55, y0=-55
  
function Bewegefly() {
	
	// Neue Position des fly berechnen
	if (Math.abs(ex-x0)>=10) {
		x0+=Math.floor((ex-x0)*0.1)
	} else if (ex!=x0) {
		x0+=Math.abs(ex-x0)/(ex-x0)
	}
	if (Math.abs(ey-y0)>=10) {
		y0+=Math.floor((ey-y0)*0.1)
	} else if (ey!=y0) {
		y0+=Math.abs(ey-y0)/(ey-y0)
	}

	// entsprechende Grafik in Bezug zur Maus-Position waehlen
	imagesrc=""
	if ( (ex<x0) && ( (x0-ex) > Math.abs(y0-ey)/2 ) ) {
		imagesrc="images/fly_l.gif"
		if ( (x0-ex) < Math.abs(y0-ey)*2 ) {
			if (ey<y0) imagesrc="images/fly_lo.gif"
			if (ey>y0) imagesrc="images/fly_lu.gif"
		}
	}
	if ( (ex>x0) && ( (ex-x0) > Math.abs(y0-ey)/2) ) {
		imagesrc="images/fly_r.gif"
		if ( (ex-x0) < Math.abs(y0-ey)*2 ) {
			if (ey<y0) imagesrc="images/fly_ro.gif"
			if (ey>y0) imagesrc="images/fly_ru.gif"
		}
	}
	if (imagesrc=="") {
		if (ey<y0) imagesrc="images/fly_o.gif"
		if (ey>y0) imagesrc="images/fly_u.gif"
		if ((ex==x0)&&(ey==y0)) imagesrc="images/fly.gif"
	}
		// Grafik und Position setzen
	if (ns4up || ie4up || mozup) {
		if (ns4up) {
			document.flyLayer.document.images.fly.src=imagesrc
		}
		if (ie4up) {
			document.all.flyLayer.document.images.fly.src=imagesrc
		}
		if (mozup) {
			document.getElementById("flyLayer").firstChild.firstChild.src = imagesrc
		}
	}
	
	// Distanz zum Cursor
	
	al.left=x0-60
	al.top=y0+20

	setTimeout("Bewegefly();",100)
}

// Capturing MouseMove
function handlerMM(e) {
	ex = (ns4up || mozup) ? e.pageX : document.body.scrollLeft+event.clientX
	ey = (ns4up || mozup) ? e.pageY : document.body.scrollTop+event.clientY
}

if (ns4up) {
	window.captureEvents(Event.MOUSEMOVE);
	window.onMouseMove = handlerMM;
}
if (ie4up || mozup) {
	window.document.onmousemove = handlerMM;
}

function ScriptSetup() { // Alle fly-Grafiken laden
	isIm = (document.images) ? 1 : 0
	if (isIm) {
		arImLoad = new Array('fly','fly_u','fly_o','fly_l','fly_r','fly_lu','fly_lo','fly_ru','fly_ro')
		arImList = new Array ()
		for (counter in arImLoad) {
			arImList[counter] = new Image()
			arImList[counter].src = arImLoad[counter] + '.gif'
		}
	}

	// Erste Gallerie laden (Allegoria)
	ajaxpage('includes/include_gallery.php?cat=11', 'gallery');
	opacity('link_1', 70, 80, 800);
	schreibeInfo('<font color=#636363>Allegoria:</font> Weissheit / Rubedo / Roetung / Sonnenaufgang / Iosis')
	
	// Globale Variablen setzen und Maus-Event initialisieren	

	if (ns4up || ie4up || mozup) {
		if (ns4up) {
			al=document.flyLayer
		}
		if (ie4up) {
			al=document.all.flyLayer.style
		}
		if (mozup) {
			al = document.getElementById("flyLayer").style
		}
		Bewegefly()
	}
}


function Zeigefly() { // Setzen der Block-Level Container zur Anzeige der Grafiken
	if(ns4up || ie4up || mozup) {
		s ='<DIV STYLE="visibility:hidden"></DIV>'
		s+='<DIV ID="flyLayer" STYLE="position:absolute; z-index: 1;'
		s+='top:-55; left:-80; width:55; height:55">'
		s+='<A HREF="#">'
		s+='<IMG STYLE="cursor: pointer" NAME="fly" SRC="fly.gif" border=0>'
		s+='</A></DIV>'
		document.writeln(s)
	}
}

window.onload = ScriptSetup
Zeigefly();






