﻿/* Bookmarks
---------------------------------------------------------------- */

 bookmarks = function(){
	var lasthash = '';
	var isie = false;
	var iec = 0;
	var iev = 0;
	var bookmarked = new Array();
	var jumpBack = false;// daniel: wenn jemand von einer anderen Site kommt wird immer initialisiert !!1
	var lastHash = "";
	var checkHash; // gibt an, ob das Checkhash ausgefuerht werden soll
	return {
		initialize:function(){
			console.log("initialize");
			this.checkHash = true; // checkhash soll ausgefuehrt wernde
			console.log("this.checkHash = " + this.checkHash);
			// in einem Link, der ein ajax aufruft, zb lookupPeople,
			// muss das sethash eingefuegt werden.
			
			var quirks = document.compatMode;
			if(document.all){
				if(/MSIE (\d+\.\d+);/.test(navigator.userAgent)){iev = new Number(RegExp.$1);}
				if(iev>=8 && quirks=='BackCompat' || iev<8){
					bookmarks.iframe();
					isie = true;
				}
			}
			//bookmarks.checkhash();
			setInterval("bookmarks.checkhash();", 400);
		},
		sethash:function(hash,check){
			//check gibt an, ob checkhash ausgefuehrt werden soll.
			this.checkHash = check;
			console.log(" 2 this.checkHash = " + this.checkHash);
			var url,container;
			if(hash){
				if(isie){iec++;}
				var str = hash + ',' + url + ',' + container + ',' + iec;
				var num = '';
				var partof = false;
				lasthash = hash;
				window.location.href = hash;
				//window.opener.window.location.href = hash;
				for(var i=0;i<bookmarked.length;i++){
					var tmp = bookmarked[i].split(",");
					if(tmp[0]==hash){
						partof = true;
						num = tmp[3];
					}
				}
				if(isie){
					if(!partof){
						bookmarks.setiframe(hash,iec);
					}else{
						bookmarks.setiframe(hash,num);
					}
				}
				if(!partof){bookmarked.push(str);}
			}
		},
		checkhash:function(){
		//	console.log("checkhash");
		//var doc = document.getElementById("daniel-pop-up");
		//doc.style.display = "block";
		var splitH,	page, pagination;
			//console.log("this.checkHash " , this.checkHash);
			//console.log("location.hash " ,  window.location.hash);
			//console.log("window.opener.window.location " ,  window.opener.window.location);
			
			
			if( window.location.hash != "" && this.checkHash) {	
				//console.log("if 1");
				if(this.lastHash !=  window.location.hash){
						//alert("checkhash pos 2");
					console.log("hash: " + window.location.hash + " last hash " + this.lastHash);
					this.lastHash = window.location.hash;
					//if( !this.jumpBack ){
						//this.jumpBack = true;
							//alert("checkhash lade ajax");
						loadBackButtonAjax(this.lastHash); // ext
					//}
				}
			}
			var obj = window.location.hash;
			
			//console.log("window.location.hash" + window.location.hash);
			var purl, pctn, phas;
			if(obj){
					//alert("checkhash pos 10");
				//console.log("checkhash obj exist");
				if(obj!=lasthash){
						//	alert("checkhash pos 11");
					//console.log("checkhash obj obj!=lasthash");
					if(lasthash!=undefined){
						//alert("checkhash pos 12");
							//console.log("lasthash!=undefined bookmarked.length: " + bookmarked.length);
	
						
						//console.log("lasthash!=undefined lang array " + bookmarked.length);
						for(var i=0;i<bookmarked.length;i++){
							
							var tmp = bookmarked[i].split(",");
							if(tmp[0]==obj){							
							 //doc.innerHTML = "<br>lade ajaxPos 10";
								phas = tmp[0];purl = tmp[1];pctn = tmp[2];
								splitH = phas.split('=');
								//console.log("vor Gleich : " + splitH[0] + " nach gleich " + splitH[1]);
								//alert("checkhash lade ajax");
								console.log("wurde nun das ajax laden...");
								
								break;
							}
						}
						if(phas && purl && pctn){
							//doc.innerHTML += "<br>lade ajax";
							lasthash = phas;
							loadBackButtonAjax(phas); // ext
							//ajax.load(purl,pctn,false,'','');
						}
					}
				}
			}
		},
		iframe:function(){
			var bug = document.createElement("iframe");
			bug.src = '/bookmarks/blank.html';
			bug.id = 'bugframe';
			bug.style.width = '100px';
			bug.style.height = '100px';
			bug.style.display = 'none';
			document.body.appendChild(bug);
		},
		setiframe:function(f,num){
			document.getElementById('bugframe').src = '/bookmarks/blank.html?' + num + f;
		},
		fixiframe:function(f){
			var obj = window.location.hash;
			if(f){if(f!=obj){window.location.href = f;}}
		}
	};
}();

/* Ajax <|> ajax.load('http://www.','ajaxdiv',true,hash,['customfunction()','anotherfunction()']);
---------------------------------------------------------------- */

var ajax = function(){
	return {
		nocache:function(){
			var minutes = 1000 * 60;
			var hours = minutes * 60;
			var days = hours * 24;
			var years = days * 365;
			var d = new Date();
			var t = d.getTime();
			return t;
		},
		load:function(url,container,load,store,functions){
			var obj = document.getElementById(container);
			var loader = '<div class="loading">Loading...</div>';
			if(obj && url){
				if(load){obj.innerHTML = loader;}
				//ajax.page(url,container,functions);
				if(store){bookmarks.sethash(store,url,container);}
			}
		},
		page:function(url,container,functions){
			var _url = '';var _no = '';var page_request = false;
			if(url.indexOf("?")==-1){_no = '?~' + ajax.nocache();}else{_no = '&~' + ajax.nocache();}
			_url = url + _no;
			
			if(window.XMLHttpRequest){
				page_request = new XMLHttpRequest();
			}else if(window.ActiveXObject){
				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(){
				ajax.parse(page_request,container,functions);
			}
			page_request.open('GET', _url, true);
			page_request.send(null);
		},
		parse:function(page_request,container,functions){
			if(page_request.readyState==4 && (page_request.status==200 || window.location.href.indexOf('http')==-1)){
				document.getElementById(container).innerHTML = page_request.responseText;
				ajax.completed(functions);
			}
		},
		completed:function(functions){
			// After complete functions here..
			if(functions){
				for(var i=0;i<functions.length;i++){
					try{eval(functions[i]);}catch(e){alert(e.description);}
				}
			}
		}
	};
}();

/* Initialize onload */
//window.onload = function(){
//	bookmarks.initialize();
//}
