
var AppConf = AppConf != undefined ? AppConf : [0,"_blank",false,0,0];

var App = {
	id: AppConf[0],
	target: AppConf[1],
	user: AppConf[2],
	qDel: AppConf[3],
	tabs: AppConf[4],
	gmapKey: AppConf[5],
	dragging: false,
	opacity: .8,
	hasChanged: 0,
	zBuff:10,
	activeTab: false,
	tabConfig: _ce("img"),
	icons: 71,
	tabsTop: null,
	tabsHeight: null,
	targetTab: false,
	forbidden: [],
	themes: ["v3","lih","v8","v10","v1","v2","v4","apl","mac","chr","weo","xms","spr","ert","syn"],
	blockColors: [false,"redish","orangeish","yellowish","greenish","blueish","grayish"],
	resizeTimer: null,
	resizes: [],
	scrollTimer: null,
	scrolls: [],
	titleEdit: false,
	treeNum: 0,
	animGroupArr: [],
	bigDiv: false,
	fadeBuff: null,
	bigDivFrame: false,
	saveScaler: 0,
	draggingBlock: false,
	loaded: false,
	loads: [],
	
	go: function(){
		this.initTabConfig();
		for(var i=0;i<App.tabs.length;i++){
			this.addTab(App.tabs[i]);
		}
		this.activateTab(App.tabs[0][0]);
		this.dragBlocks();
		this.renderHeader();
		this.updater(0);
		this.customCSS();
		
		this.loaded = true;
		for(var x=0;x<this.loads.length;x++){
			this.loads[x]();
		}
		this.loads = [];
	},
	
	customCSS: function(){
		var a = location.href.split("?");
		if(a.length > 1){
			a.shift();
			a = a.join("?");
			a = a.replace(new RegExp("#"+location.hash.replace("#", "")+"$"),"");
			if(b = a.match(/css=(google\.parser\.php\?url=)(.+)$/)){
				var url = decodeURIComponent(b[2]);
				var a = _ce("A");
				a.innerHTML = "Sätt tema som ditt standardtema";
				a.target = "_self";
				a.href = "#";
				
				a.onclick = function(){App.setTheme(false, url, 1);return false;};
				var c = _gel("headerTools");
				c.insertBefore(a, c.firstChild);
			}
		}
	},
	
	getActiveTab: function(b){
		var a = App.activeTab;
		var t = App.tabs;
		var k = -1;
		for(var x in t){
			if(t[x][0] == a){
				k = x;break;
			}
		}
		if(k == -1){return false;}
		return b != undefined && b ? k : t[k];
	},
	
	setTabPass: function(){
		var a = App.activeTab;
		var k = App.getActiveTab(1);
		var g = App.tabs[k];
		var x = g[5];
		App.showBig("<form action='tab.php?action=pass&id="+a+"&key="+k+"' method='post' target='_self' onsubmit='return formSubmit(this);'>"+
		"<div class='tabPass'><table cellspacing=0 cellpadding=4 border=0>"+
		(x ? "<tr><td>Ange gamla lösenordet</td><td><input type='password' id='tabPassOld' name='tabPassOld'></td></tr>" : "")+
		"<tr><td>"+(x ? "Nytt lösenord" : "Lösenord")+"</td><td><input type='password' id='tabPass1' name='tabPass1'>"+(x ? " Lämna blankt för att ta bort lösenordsskyddet" : "")+"</td></tr>"+
		"<tr><td>Repetera lösenord</td><td><input type='password' id='tabPass2' name='tabPass2'>"+(x ? " Lämna blankt för att ta bort lösenordsskyddet" : "")+"</td></tr>"+
		"<tr><td></td><td><input type='submit' value='Spara'></td></tr>"+
		"</table></div></form>");
		setTimeout(function(){
			_gel("tabPass1").value = "";
			_gel("tabPass1").focus();
			_gel("tabPass2").value = "";
			if(_gel("tabPassOld")){
				_gel("tabPassOld").value = "";
				_gel("tabPassOld").focus();
			}
		},100);
	},
	
	setTabLogin: function(tab){
		var p = _gel("tabPass").value;
		var t = App.tabs;
		var k = -1;
		for(var x in t){
			if(t[x][0] == tab){
				k = x;break;
			}
		}
		if(k == -1){return false;}
		t[k][6] = p;
		App.closeBig();
		App.activateTab(tab);
	},
	
	tabLogin: function(tab){
		var t = App.getActiveTab();
		t[6] = "";
		App.showBig("<form target='_self' onsubmit='App.setTabLogin("+tab+");return false;'>"+
		"<div class='tabPass'><table cellspacing=0 cellpadding=4 border=0>"+
		"<tr><th colspan=3><div class='right'><a href='#' target='_self' onclick='App.closeBig();return false;'>Avbryt</a></div>Lösenordsskyddad</th></tr>"+
		"<tr><td>Ange lösenord</td><td><input type='password' id='tabPass'></td><td><input type='submit' value='OK'></td></tr>"+
		"</table></div></form>");
		_gel("tabPass").focus();
		if(_gel("pageLoader")){
			_gel("pageLoader").parentNode.removeChild(_gel("pageLoader"));
		}
		App.inactivateTab(tab);
		App.activeTab = false;
	},
	
	initTabConfig: function(){
		var a = this.tabConfig;
		a.src = "http://static.superstart.se/images/s.gif";
		a.className = "tabConfig";
		a.onclick = function(){
			if(App.titleEdit){App.titleEdit.blur();}
			if(App.dragging){return;}

			var b = _gel("tabConfigDiv");

			var html = "<table cellspacing=0 cellpadding=3><tr><td colspan=2 align='right'><img src='images/x.gif' onclick='App.hideTabConfig()' style='cursor:pointer;'></td></tr><tr><td>Kolumner</td><td>";
			for(var x=1;x<=10;x++){
				html += "<button onclick='App.setCols("+x+")'>"+x+"</button>";
			}
			html += "</td></tr><tr><td valign=top><br>Ikon</td><td class='icons'>";
			for(var x=0;x<=App.icons;x++){
				if(x % 14 == 0){ html += "<br>"; }
				html += "<img src='http://static.superstart.se/ico/"+x+".gif' onclick='App.saveTabIcon("+x+")'>";
			}
			var t = App.getActiveTab();
			html += "</td></tr>"+
			"<tr><td>Lösenord</td><td>"+
			(t[5] ? "<span style='color:#a00;'>Skyddad</span> &nbsp; [<a href='#' target='_self' onclick='App.setTabPass();return false;'>byt eller ta bort lösenord</a>]" : "Ej skyddad &nbsp; [<a href='#' target='_self' onclick='App.setTabPass();return false;'>skydda denna flik</a>]")+
			"</td></tr>"+
			"<tr><td>Ta bort</td><td><button onclick='App.deleteTab()' style='cursor:pointer;' class='delete'><img src='http://static.superstart.se/ico/12.gif' style='vertical-align:-2px;'> Ta bort denna flik</button></td></tr>"+
			"</table></div>";
			b.innerHTML = html;
			
			b.onclick = function(){this.style.zIndex = App.zBuff++;};
			var t = _gel("tab_"+App.activeTab);
			var pos = FindXYWH(t);
			var l = _getn("BODY")[0].style.marginLeft;
			l = l == NaN || !l ? 0 : parseInt(l);
			b.style.left = (pos.x)+"px";
			b.style.top = (pos.y + pos.h + document.body.scrollTop - 1)+"px";
			b.style.display = "block";
			b.style.zIndex = App.zBuff++;

			var scrollX = document.body.scrollLeft;
			var scrollY = document.body.scrollTop;
			var w = b.offsetWidth;
			var h = b.offsetHeight;
			var x = parseInt(b.style.left)-scrollX;
			var y = parseInt(b.style.top)-scrollY;
			
			var arr = ["SELECT", "IFRAME", "EMBED", "OBJECT"];
			for(var j=0;j<arr.length;j++){
				for (i = 0; i < _getn(arr[j]).length; ++i){
					var obj = _getn(arr[j])[i];
					var o = FindXYWH(obj);
					if ( (o.x > (x + w) || (o.x + o.w) < x) || (o.y > (y + h) || (o.y + o.h) < y) ){
						obj.style.visibility = "visible";
					}else{
						obj.style.visibility = "hidden";
					}
				}
			}
		};	
	},
	
	tipsaArr: [],
	tipsaPos: 0,
	tipsLink: function(){
		var a = parseInt(GetCookie("tips"))+0;
		_gel("tipsLink").innerHTML = !a ? "Visa tips" : "Dölj tips";
		_gel("tips").style.display = !a ? "none" : "block";
		if(a){
			if(!this.tipsaArr.length){
			_gel("tips").innerHTML = "<div class='right'><span id='tipsNav'></span><a href='#' target='_self' onclick='App.tips();return false;'>Stäng</a></div><div id='tipsDiv'></div>";
				call2("tips.php", false, function(b){
					b = eval("("+b.responseText+")");
					App.tipsaArr = b;
					App.initTips();
				});
			}else{
				this.initTips();
			}
		}
	},
	
	tipsNav: function(a){
		var b = this.tipsaArr.length;
		var x = this.tipsaPos;
		this.tipsaPos = !a ? (x ? x-1 : b-1) : (x==b-1 ? 0 : x+1);
		this.renderTips();
		return false;
	},
	
	initTips: function(){
		var i = parseInt(GetCookie("tips"))+0;
		if(!i){return;}
		var a = this.tipsaArr;
		var x = Math.floor(Math.random() * a.length);
		this.tipsaPos = x;
		this.renderTips();
	},
	
	renderTips: function(){
		var a = this.tipsaArr;
		_gel("tipsNav").innerHTML = 
			"<a href='#' target='_self' onclick='return App.tipsNav(0);'>«</a>"+
			" &nbsp; "+(this.tipsaPos+1)+" av "+a.length+" &nbsp; "+
			"<a href='#' target='_self' onclick='return App.tipsNav(1);'>»</a>"
			;
		var d = _gel("tipsDiv");
		d.innerHTML = a[this.tipsaPos];
	},
	
	tips: function(){
		var a = parseInt(GetCookie("tips"))+0;
		SetCookie("tips", a ? 0 : 1, exp);
		this.tipsLink();
	},
	
	renderHeader: function(){
		
		_gel("addBlocks").innerHTML = 
			"<a href='#' class='addBtn' onclick='App.newBlocks();this.blur();return false;' onmouseout='kill()' onmouseover='popup(\"Klicka här för att lägga till nya block till sidan. Vad som visas som standard är bara ett bråkdel av de funktioner som finns tillgängliga.\",\"<img src=http://static.superstart.se/images/add_2.png>Lägg till fler saker till din sida\");' target='_self'>Lägg till fler funktioner</a>"+
			"<a href='#' onclick='App.theme();this.blur();return false;' target='_self'>Välj tema</a>"+
			"<a href='#' id='targets' target='_self'></a>";
		
		var d = _gel("headerTools");
		d.innerHTML = 
			"<a href='#' onclick='App.guide();this.blur();return false;' target='_self'>Användarguide</a>"+
			"<a href='#' id='tipsLink' target='_self'onclick='App.tips();this.blur();return false;' ></a>"+
			"<a href='#' onclick='App.setHomepage(this);this.blur();return false;' target='_self'>Startsida</a>"+
			(App.user ? 
				"<a href='#' onclick='App.settings(4);this.blur();return false;' target='_self'>Inställningar</a>"+
				"<a href='#' onclick='App.logOut();this.blur();return false;' target='_self' class='last'>Logga ut</a>"
				: 
				"<a href='#' onclick='App.settings(2);this.blur();return false;' target='_self'>Skapa konto</a>"+
				"<a href='#' onclick='App.settings(0);this.blur();return false;' target='_self' class='last'>Logga in</a>"
			);
		this.renderTargets();
		this.tipsLink();

	},
	
	setHomepage: function(a){
		if(document.all){
			a.style.behavior="url(#default#homepage)";
			a.setHomePage("http://www.superstart.se");
		}else{
			alert("För att ange www.superstart.se som din startsida, drag S-ikonen bredvid adressfältet till huset till vänster om adressfältet.");
		}
	},

	theme: function(){
		var d = _gel("theme");
		if(!d.innerHTML.length){
			d.innerHTML =  "<i>Laddar...</i>";
		}
		d.style.display = d.style.display == "block" ? "none" : "block";
		
		call2("themes.php", false, function(g){
			if(d){
				d.innerHTML = g.responseText;
				callOnce("js/themes.js", function(){Themes.init();});
			}
		});
	},
	
	setTarget: function(x){
		this.target = x;
		_gel("baseTarget").target = x;
		call2("/user.process.php?action=target&t="+x);
		this.renderTargets();
	},

	renderTargets: function(){
		var t = _gel("targets");
		t.innerHTML = "Öppna länkar i: "+(App.target == "_top" ? "<b>Samma fönster</b>" : "<b>Nytt fönster</b>");
		t.onclick = function(){ App.setTarget(App.target == "_top" ? "_blank" : "_top"); return false; };
		t.onmouseover = function(){popup("Här väljer du om du vill att länkar ska öppnas i nytt eller i samma fönster.", "Mål för länkar");};
		t.onmouseout = kill;
	},
	
	timerTB: false,
	blkTB: false,
	blockColor: false,
	blockTB: function(blk, x, y){
		if(this.timerTB && !y){clearTimeout(this.timerTB);this.timerTB = null;}
		if(blk != this.blkTB && this.blkTB){
			this.blockTB(this.blkTB,0,1);
		}
		if(this.blkTB === blk && x){
			return;
		}
		if(!x && !y){
			this.timerTB = setTimeout(function(){
				App.blockTB(blk,0,1);
			},50);
			return;
		}
		this.blkTB = x ? blk : false;
		if(_gel("tb"+blk)){
			var d = _gel("tb"+blk);
			d.style.visibility = x ? "visible" : "hidden";
			this.blockColor = !x ? false : _gel("blk"+blk).firstChild.className.split(" ");
			this.blockColor = this.blockColor ? this.blockColor[1] : false;
		}else{
			this.blockColor = false;
		}
		if(_gel("popTheme")){
			_gel("popTheme").className = "round_b"+(this.blockColor ? " "+this.blockColor : "");
		}
	},
	
	hideTabConfig: function(){
		_gel("tabConfigDiv").style.display = "none";
		showSel();
	},
	
	newBlocks: function(){
		var d = _gel("config");
		if(d.style.display == "block"){
			App.configClose();
			return;
		}
		App.hideTabConfig();
		d.style.display = "block";
		_getn("BODY")[0].style.marginLeft = parseInt(d.offsetWidth)+"px";
		if(!_gel("config").innerHTML.length){
			_gel("config").innerHTML = "<i>Laddar...</i>";
			call2("add.content.php");
		}else{
			kill();
			App.onResize();	
		}
	},
	
	treeNav: function(elem, url, addDrag){
		
		var pn = elem.parentNode;
		var sib = pn.parentNode.childNodes;
		for(var x=0;x<sib.length;x++){
			var s = sib[x];
			if(s.firstChild.className == "dir plus" && s != pn){App.treeNav(s.firstChild, null);}
		}
		
		if(elem.nextSibling == null){
			var d = _ce("DIV");
			d.innerHTML = "Laddar...";
			d.className = "cat";
			d.id = "node"+App.treeNum;
			App.treeNum++;
			elem.parentNode.appendChild(d);
			elem.className = "dir plus";
			call2(url, false, function(x){
				_gel(d.id).innerHTML = x.responseText;
				if(addDrag != undefined){
					addBlockDrag(d.id);
				}
			});
		}else{
			var d = elem.nextSibling;
			var x = /minus/.test(elem.className) ? 1 : 0;
			elem.className = x ? "dir plus" : "dir minus";
			d.style.display = x ? "block" : "none";
		}
	},
	
	tab: function(id){
		return _gel("tab_"+id);
	},
	
	addTab: function(t){
		var id = t[0];
		var tab = _ce("LI");
		tab.id = "tab_"+id;
		tab.className = "inactive";
		tab.innerHTML = "<div><div><span><img src='http://static.superstart.se/ico/"+t[3]+".gif'></span></div></div>";
		var title = _ce("SPAN");
		title.className = "title";
		title.innerHTML = t[1];
		title.onclick = function(){
			if(App.dragging){return false;}
			id = tab.id.replace(/\D/g, "");
			if(id == App.activeTab){
				var fs = this.firstChild;
				if(fs.tagName == undefined || fs.tagName == "A"){
					App.titleEdit = this;
					var inp = _ce("INPUT");
					inp.value = this.innerHTML.replace(/<\/?a[^>]*>/ig, "");
					inp.size = inp.value.length+3;
					inp.className = "title";
					inp.onkeydown = function(e){var k = e == undefined ? event.keyCode : e.keyCode;if(k == 13){this.blur();return false;}};
					inp.onkeyup = function(){inp.size = inp.value.length+3;};
					inp.onblur = function(){App.titleEdit = false;App.saveTabTitle(inp.value);};
					this.innerHTML = "";
					this.appendChild(inp);
					inp.focus();
					inp.select();
				}
			}
		};
		tab.firstChild.firstChild.appendChild(title);
		var ts = _gel("tabs");
		ts.insertBefore(tab, ts.lastChild);
		tab.onclick = function(){
			if(App.dragging){return;}
			var id = this.id.replace(/\D/g, "");
			if(id != App.activeTab){
				if(App.titleEdit){App.titleEdit.blur();}
				App.activateTab(id);
			}
		};
		App.tabDrag(tab);
	},
	
	addNewTab: function(title, icon, cols){
		call2("/tab.php?action=newTab"+(title == undefined ? "" : "&title="+title+"&icon="+icon+"&cols="+cols));
	},

	activateTab: function(id){
		if(App.activeTab){
			App.inactivateTab(App.activeTab);
		}
		var tab = App.tab(id);
		tab.className = "active";
		tab.style.zIndex = App.zBuff++;
		App.activeTab = id;
		App.showPage(id);
		var t = tab.firstChild.firstChild;
		t.appendChild(App.tabConfig);
	},
	
	inactivateTab: function(id){
		App.hidePage(id);
		var tab = App.tab(id);
		tab.className = "inactive";
		tab.style.zIndex = 10;
		var t = tab.firstChild.firstChild;
		t.removeChild(App.tabConfig);
		App.hideTabConfig();
	},
	
	showPage: function(id){
		if(_gel("page_"+id)){
			_gel("page_"+id).style.display = "block";
			App.colScalers();
		}else{
			if(_gel("pageLoader")){
				_gel("pageLoader").parentNode.removeChild(_gel("pageLoader"));
			}
			var p = _ce("DIV");
			p.id = "pageLoader";
			p.className = "page";
			p.innerHTML = "&nbsp; Laddar sida...";
			_gel("content").appendChild(p);
			var t = App.getActiveTab();
			call2("/page.php?action=loadPage&id="+id+(t[6] != undefined && t[6] ? "&p="+escape(t[6]) : ""));
		}
		App.onResize();
	},
	
	hidePage: function(id){
		var d =_gel("page_"+id);
		if(d){d.style.display = "none";}
	},

	setDragging: function(b,d){
		if(b){
			if(d){
				setTimeout("App.dragging = true;", 50);
			}else{
				App.dragging = true;
			}
		}else{
			setTimeout("App.dragging = false;", 50);
		}
	},
	
	tabDrag: function(tab){
		Drag.init(tab, tab, null,null,0,0);
		var startPos = [0,0];
		tab.onDragStart = function(x,y){
			startPos = [x,y];
			App.hideTabConfig();
			this.style.zIndex = App.zBuff++;
			this.style.opacity = App.opacity;
			this.style.filter = 'alpha(opacity=' + (App.opacity * 100) + ')';
		};
		tab.onDrag = function(x,y){
			if(!App.dragging){
				if(startPos[0] == x && startPos[0] == y){return;}
				App.setDragging(1,1);
			}
			var p = this.parentNode;
			var l = this.offsetLeft;
			var ps = this.previousSibling;
			var ns = this.nextSibling;
			if(ps && l < ps.offsetLeft){
				var p1 = FindXY(this);
				p.removeChild(this);
				this.style.left = "0px";
				p.insertBefore(this, ps);
				var p2 = FindXY(this);
				this.style.left = (p1.x - p2.x)+"px";
				App.hasChanged = 1;
			}else if(ns && l > ns.offsetLeft && ns.nextSibling){
				var p1 = FindXY(this);
				p.removeChild(this);
				if(ns.nextSibling){
					p.insertBefore(this, ns.nextSibling);
				}else{
					p.appendChild(this);
				}
				var l = this.offsetWidth - ns.offsetWidth;
				this.style.left = l+"px";
				var p2 = FindXY(this);
				this.style.left = (l + p1.x - p2.x)+"px";
				App.hasChanged = 1;
			}
		};
	
		tab.onDragEnd = function(){
			this.style.opacity = 1;
			this.style.filter = 'alpha(opacity=' + (100) + ')';
			this.style.zIndex = 2;
			if(App.activeTab){
				App.tab(App.activeTab).style.zIndex = App.zBuff++;
			}
			App.setDragging(0);
			this.style.left = "0px";
			if(App.hasChanged){
				var srt = [];
				for(var x=0;x<_gel("tabs").childNodes.length - 1;x++){
					srt[srt.length] = _gel("tabs").childNodes[x].id.replace(/\D/g, "");
				}
				call2("/tab.php?action=saveOrder&order="+srt.join(","));
				App.hasChanged = 0;
			}
		};
	},
	
	saveTabTitle: function(str){
		str = str == "" ? "Ny flik" : str;
		var tab = App.tab(App.activeTab);
		var title = tab.firstChild.firstChild.childNodes[1];
		title.innerHTML = str;
		App.hideTabConfig();
		call2("tab.php?action=saveTitle&tab="+App.activeTab+"&title="+escape(str));
	},

	saveTabIcon: function(id){
		var tab = App.tab(App.activeTab);
		tab.firstChild.firstChild.firstChild.innerHTML = "<img src='http://static.superstart.se/ico/"+id+".gif'>";
		call2("/tab.php?action=saveIcon&tab="+App.activeTab+"&icon="+id);
	},

	deleteTab: function(){
		if(confirm("Vill du ta bort denna flik?\n\nAlla block och inställningar på sidan kommer raderas!")){
			var t = App.getActiveTab();
			var tpass = t[6] != undefined && t[6] ? t[6] : false;

			App.hideTabConfig();
			if(App.tabs.length == 1){
				alert("Du kan inte ta bort sista sidan!");
				return;
			}
			var tabId = App.activeTab;
			var tab = App.tab(App.activeTab);
			var page = _gel("page_"+App.activeTab);
			for(var x=0;x<page.childNodes.length;x++){
				var col = page.childNodes[x];
				for(y=0;y<col.childNodes.length;y++){
					col.removeChild(col.firstChild);
				}
				page.removeChild(col);
			}
			page.parentNode.removeChild(page);
			tab.parentNode.removeChild(tab);
			for(var x=0;x<App.tabs.length;x++){
				if(App.tabs[x][0] == App.activeTab){
					break;
				}
			}
			App.tabs.splice(x,1);
			App.activeTab = false;
			App.activateTab(App.tabs[0][0]);
			var t = App.getActiveTab();
			call2("/tab.php?action=deleteTab&id="+tabId+(tpass ? "&p="+escape(tpass) : ""));
		}
	},

	configClose: function(){
		_gel("config").style.display = "none";
		_getn("BODY")[0].style.marginLeft = "0px";
		App.onResize();
	},

	settingsClose: function(){
		_gel("settings").style.display = "none";
		_getn("BODY")[0].style.marginRight = "0px";
		App.onResize();
	},

	settingsBuff: -1,
	settings: function(x){
		var d = _gel("settings");
		if(d.style.display == "block" && x == settingsBuff){
			settingsBuff = -1;
			App.settingsClose();
			return;
		}
		settingsBuff = x;
		d.style.display = "block";
		_getn("BODY")[0].style.marginRight = parseInt(d.offsetWidth)+"px";
		d.innerHTML = "<i>Laddar...</i>";
		kill();
		App.onResize();
		var url = App.user ? "settings.user.php" : "settings.php"+(x >= 0 ? "?sel="+x : "");
		call2(url, false, function(a){
			d.innerHTML = a.responseText;
			if(_gel("login_user")){
				_gel("login_user").focus();
			}
		});
	},

	logOut: function(){
		if(confirm("Är du säker på att du vill logga ut?")){
			top.location = "logout.php";
		}
	},

	configGroup: function(elem, onlyThis){
		onlyThis = onlyThis == undefined ? 0 : 1;
		var ns = elem.nextSibling;
		if(ns.className == "show"){
			App.animGroup(ns,0);
		}else{
			var pn = elem.parentNode;
			for(var x=0;x<pn.childNodes.length;x++){
				div = pn.childNodes[x];
				if(div.className == "show" && div != ns){
					if(!onlyThis){
						App.animGroup(div,0);
					}
				}
			}
			App.animGroup(ns,1);
		}
	},

	doAnimGroup: function(x, s, m, dir){
		var elem = App.animGroupArr[x];
		s++;
		if(s == 10){
			if(!dir){
				elem.className = "hide";
			}
			elem.style.height = "auto";
		}else{
			var y = parseInt(elem.style.height);
			y = dir ? y + ((m-y) * (s/10)) : y - ((y) * (s/10));
			if(parseInt(y) == 0 && !dir){
				elem.className = "hide";
			}
			elem.style.height = y+"px";
			setTimeout("App.doAnimGroup("+x+","+s+","+m+","+dir+");", 10);
		}
	},

	animGroup: function(elem, dir){
		if(dir){
			elem.style.position = "absolute";
			elem.style.visibility = "hidden";
			elem.style.display = "block";
			var h = elem.offsetHeight;
			elem.style.display = "";
			elem.style.visibility = "visible";
			elem.style.position = "";
		}else{
			var h = elem.offsetHeight;
		}
		var x = App.animGroupArr.length;
		App.animGroupArr[x] = elem;
		elem.style.overflow = "hidden";
		if(dir){
			elem.style.height = "0px";
			elem.className = "show";
		}else{
			elem.style.height = h+"px";
		}
		App.doAnimGroup(x,0,h,dir ? 1 : 0);
	},

	addBlock: function(id, extra, x, extra2){
		// if(!App.activePage){return;}
		extra = extra == undefined ? false : escape(extra);
		var d = _gel("addDragTarget");
		if(d.style.display == "block"){
			var c = d.parentNode;
			var b = d;
			x = 0;
			while(1){
				if(c.previousSibling){
					c = c.previousSibling;
					x++;
				}else{
					break;
				}
			}
			var y = 0;while(1){
				if(b.previousSibling){
					b = b.previousSibling;
					y++;
				}else{
					break;
				}
			}
			d.style.display = "none";
			_getn("BODY")[0].appendChild(d);
		}else{
			x = x != undefined ? x : 0;
			var y = 0;
		}
		call2("/block.php?action=add&tab="+App.activeTab+"&id="+id+"&x="+x+"&y="+y+(extra ? "&extra="+extra : "")+(extra2 != undefined ? "&extra2="+extra2 : ""));
	},

	insertBlock: function(obj,x,y){
		x = x == undefined ? 0 : x;
		y = y == undefined ? 0 : y;
		var p = _gel("page_"+App.activeTab);
		var c = p.childNodes[x];
		if(y < c.childNodes.length){
			c.insertBefore(obj, c.childNodes[y]);
		}else{
			c.appendChild(obj);
		}
		App.dragBlock(obj);
	},

	toolbar: function(id,blk_exp){
		var str = "<img class='p_conf' src='http://static.superstart.se/images/s.gif' onclick='App.config("+id+")'>"+
		"<img class='p_"+(blk_exp ? "c" : "e")+"' src='http://static.superstart.se/images/s.gif' id='exp_icon"+id+"' onclick='App.expandBlock("+id+")'>"+
		"<img class='p_del' src='http://static.superstart.se/images/s.gif' onclick='App.removeBlock("+id+")'>";
		_gel("tb"+id).innerHTML = str;
	},

	expandBlock: function(id, force, extra){
		if(App.dragging){return;}
		if(force == undefined){
			var exp_status = _gel("exp_icon"+id).className == "p_e" ? "p_c" : "p_e";
		}else{
			var exp_status = force ? "p_c" : "p_e";
		}
		_gel("exp_icon"+id).className = exp_status;
		_gel("title"+id).innerHTML = "Laddar...";
		call2("/block.php?action=expander&blk="+id+"&exp="+(exp_status == "p_e" ? 0 : 1)+(extra == undefined ? "" : "&"+extra));
	},

	setCols: function(num){
		var page = _gel("page_"+App.activeTab);
		var nl = page.childNodes;
		var diff = num - nl.length;
		var w = Math.round(9950 / num) / 100;
		if(num >= nl.length){
			for(var x=0;x<diff;x++){
				var col = _ce("DIV");
				col.className = "column";
				col.id = "col_"+App.activeTab+"_"+(nl.length+x);
				col.style.width = w+"%";
				page.appendChild(col);
			}
		}else{
			var remBlocks = [];
			for(var x=1;x<=-diff;x++){
				var col = nl[nl.length-x];
				for(var y=0;y<col.childNodes.length;y++){
					remBlocks[remBlocks.length] = col.childNodes[y].id.replace(/\D/g, "");
				}
			}
			if(remBlocks.length){
				if(!confirm("Du kommer att ta bort "+remBlocks.length+" block om du fortsätter.\n\nOBS: Kan inte ångras.")){
					return;
				}else{
					call2("/block.php?action=deleteBlock&ids="+remBlocks.join(","));
				}
			}
			for(var x=1;x<=-diff;x++){
				page.removeChild(nl[nl.length-1]);
			}
		}
		for(var x=0;x<nl.length;x++){
			nl[x].style.width = w+"%";
		}
		App.onResize();
		App.colScalers();
		call2("/block.php?action=saveTabCols&tab="+App.activeTab+"&cols="+num);
	},

	doRemoveBlock: function(id){
		var div = _gel("blk_"+id);
		div.parentNode.removeChild(div);
		call2("/block.php?action=deleteBlock&ids="+id);
		if(App.qDel){
			if(_gel("qDelBox").checked){
				App.qDel = 0;
				call2("/user.php?action=qDel");
			}
			App.closeBig();
		}
	},

	removeBlock: function(id){
		if(App.dragging){return;}
		if(App.qDel){
			App.showBig("<div class='delConfirm'>Är du säker på att du vill ta bort detta block?<br><br><span style='color:#900;font-weight:bold;'>Alla inställningar du gjort i detta block kommer tas bort och kan inte återskapas!</span><br><br><input type='checkbox' class='checkbox' id='qDelBox'> Fråga inte i fortsättningen utan ta bort direkt.<br><br><button onclick='App.doRemoveBlock("+id+")' style='color:#fff;background:#900;border:2px solid #600;'>Ta bort blocket</button> &nbsp; &nbsp; <button onclick='App.closeBig()' id='qDelNo' style='color:#fff;background:#090;border:2px solid #060;'>Avbryt</button><br><br><br>Vill du lägga till denna typ av block igen finns det uppe till vänster under länken:<br><br>[ <b>Lägg till fler funktioner</a> ]<br><br></div>");
			_gel("qDelNo").focus();
		}else{
			App.doRemoveBlock(id);
		}
	},

	config: function(id){
		if(App.dragging){return;}
		if(_gel("m_"+id+"_form") && _gel("m_"+id+"_form").innerHTML.length){
			var x = _gel("m_"+id+"_form");
			x.style.display = x.style.display == "none" ? "block" : "none";
			return;
		}
		var exp_status = _gel("exp_icon"+id).className == "p_e" ? "p_c" : "p_e";
		if(exp_status == "p_c"){
			_gel("blk"+id).className = "expblock";
			var ex = 0;
		}else{
			ex = 1;
		}
		_gel("cnt"+id).innerHTML = "<i>Laddar inställningar...</i>";
		call2("/block.php?action=config&id="+id+"&exp="+ex);
	},

	saveBlockDesign: function(){
		var str = "";
		var cols = _gel("page_"+App.activeTab).childNodes;
		for(var x=0;x<cols.length;x++){
			if(x){
				str += ";";
			}
			for(var y=0;y<cols[x].childNodes.length;y++){
				var blk = cols[x].childNodes[y].id.substring(4);
				str += blk;
				if(y != cols[x].childNodes.length - 1){
					str += ",";
				}
			}
		}
		App.onResize();
		call2("/block.php?action=saveOrder&tab="+App.activeTab+"&data="+str);
	},
	
	moveBlockToTab: function(a){
		if(!App.targetTab){return;}
		var tabId = App.targetTab.id.replace(/\D/g, "");
		var blk = a.id.replace(/\D/g, "");
		call2("/block.php?action=moveBlock&blk="+blk+"&tab="+tabId);
		
		if(_gel("page_"+tabId)){
			var p = _gel("page_"+tabId);
			var pFc = p.firstChild;
			if(pFc.childNodes.length > 0){
				pFc.insertBefore(a, pFc.firstChild);
			}else{
				pFc.appendChild(a);
			}
		}else{
			a.parentNode.removeChild(a);
		}
		App.targetTab.className = "inactive";
		App.targetTab = 0;
	},
	
	blockToTab: function(a){
		if(!App.dragging){App.setDragging(1);}
		var x = mouseX;
		var y = mouseY;
		var t = _gel("tabs");
		var s = FindXYWH(t);
		var m = 0;
		var n = 0;
		if(y < s.y+s.h && y > s.y - 10){
			var tabs = t.childNodes;
			for(var i=0;i<tabs.length-1;i++){
				var j = FindXYWH(tabs[i]);
				if(x > j.x && x < j.x + j.w){
					if(tabs[i].className != "active"){
						var m = tabs[i];
					}
					break;
				}
			}
			var n = 1;
		}
		if(App.targetTab && (App.targetTab != m || !m)){
			App.targetTab.className = "inactive";
			App.targetTab = false;
		}
		if(m && !App.targetTab){
			App.targetTab = m;
			App.targetTab.className = "hover";
		}
		dragSort.force = App.targetTab ? App.moveBlockToTab : false;
		var t = a;
		t.style.opacity = n ? App.opacity : 1;
		t.style.filter = 'alpha(opacity=' + ((n ? App.opacity : 1) * 100) + ')';					
	},

	dragBlockEnd: function(a){
		App.setDragging(0);
		a.style.opacity = 1;
		a.style.filter = 'alpha(opacity=100)';					
	},
	
	dragBlock: function(elem){
		dragSort.init(elem.firstChild.firstChild.firstChild, elem,1, App.saveBlockDesign, App.blockToTab, Calendar.hide , App.dragBlockEnd,1);
	},

	dragBlocks: function(){
		if(!_gel("page_"+App.activeTab)){return;}
		var cols = _gel("page_"+App.activeTab).childNodes;
		for(var i=0;i<cols.length;i++){
			for(var j=0;j<cols[i].childNodes.length;j++){
				App.dragBlock(cols[i].childNodes[j]);
			}
		}
	},

	setTheme: function(theme, url, a){
		if(url == undefined){
			var v = _gel("main_css").href.match(/\?v=[\d\.]*$/);
			_gel("main_css").href = "http://static.superstart.se/themes/"+theme+".css"+(v ? v[0] : "");
			call2("/user.php?action=theme&theme="+theme, false, function(){
				if(document.all && in_array(theme,["xms","spr","ert"])){
					location.reload();
				}
			});
		}else{
			url = encodeURIComponent(url);
			if(!a){_gel("main_css").href = "google.parser.php?url="+url;}
			call2("/user.php?action=theme&theme=xxx&url="+url, false, function(){
				if(a){location.href = "./";}
			});
		}
		App.onResize();
	},

	updater: function(upd){
		if(upd){
			var updates = ["tv","bors","gmail","mail","finance", "weather", "datum", "datums"];
			News.updateAll();
			for(var x=0;x<updates.length;x++){
				var blks = _getn(updates[x]);
				for(var y=0;y<blks.length;y++){
					switch(updates[x]){
						case 'tv': selectTV(0, blks[y].className); break;
						case 'gmail': updateGmail(blks[y].className); break;
						case 'mail': updateMail(blks[y].className); break;
						case 'finance': Finance.loadStocks(blks[y].className); break;
						case 'datums': App.expandBlock(blks[y].className, 0); break;
						default: App.expandBlock(blks[y].className, 1);
					}
				}
			}
		}
		setTimeout("App.updater(1)", 300000);
	},

	addResizeEvent: function(func, scrl){
		if(scrl != undefined){
			App.addScrollEvent(func);
		}
		for(var x=0;x<App.resizes.length;x++){
			if(func == App.resizes[x]){
				return;
			}
		} 
		App.resizes[App.resizes.length] = func;
	},

	execOnResize: function(){
		for(var x=0;x<App.resizes.length;x++){
			App.resizes[x]();
		} 
	},

	onResize: function(){
		if(App.resizeTimer){
			clearTimeout(App.resizeTimer);
			App.resizeTimer = null;
		}
		App.resizeTimer = setTimeout("App.execOnResize();",200);
	},

	addScrollEvent: function(func){
		for(var x=0;x<App.scrolls.length;x++){
			if(func == App.scrolls[x]){
				return;
			}
		} 
		App.scrolls[App.scrolls.length] = func;
	},

	execOnScroll: function(){
		for(var x=0;x<App.scrolls.length;x++){
			App.scrolls[x]();
		} 
	},

	onScroll: function(){
		if(App.scrollTimer){
			clearTimeout(App.scrollTimer);
			App.scrollTimer = null;
		}
		App.scrollTimer = setTimeout("App.execOnScroll();",200);
	},

	showBigAjax: function(url){
		App.showBig("<div id='bigAjax'><i>Laddar...</i></div>");
		call2(url, "bigAjax");
	},

	fade: function(a,b,c,d){
		d = d == undefined ? 0 : d + 1;
		if(a !== false){
			var fadeBuff = a;
		}else{
			a = fadeBuff;
		}
		var e = b + (c - b) * (d/7);
		a.style.filter = "alpha(opacity="+(e*100)+")";
		a.style.opacity = e;
		if(d < 7){
			setTimeout("App.fade(false,"+b+","+c+","+d+")", 0);
		}
	},

	showBigVideo: function(url, a){
		App.addResizeEvent(App.videoResizer);
		var dims = App.BigVideoCoords();
		var vH = dims[3];
		var vW = dims[4];
		switch(a){
			case 'flash':App.showBig("<embed src='"+url+"' width="+vW+" height="+vH+" id='bigVideoEmbed' type=application/x-shockwave-flash wmode='transparent' allowfullscreen='true'></embed>");break;
			case 'qt':App.showBig("<embed src='"+url+"' width="+vW+" height="+vH+" id='bigVideoEmbed' type='video/quicktime' pluginspage='http://www.apple.com/quicktime/download/' controller='true' autoplay='true' scale='aspect'></embed>");break;
			case 'wm':App.showBig("<embed src='"+url+"' width="+vW+" height="+vH+" id='bigVideoEmbed' type='application/x-mplayer2' pluginspage='http://www.microsoft.com/windows/windowsmedia/download/' controller='true' autoplay='true' scale='aspect'></embed>");break;
		}
	},
	
	BigVideoCoords: function(){
		var y = document.body.scrollTop < document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
		var h = document.body.clientHeight;
		var w = document.body.clientWidth;
		var maxW = w - 40;
		var maxH = h - 40;
		if(maxW * .8 > maxH){
			var vH = maxH;
			var vW = Math.round(maxH / .8);
		}else{
			var vW = maxW;
			var vH = Math.round(maxW * .8);
		}
		return [y,h,w,vH,vW];
	},
	
	videoResizer: function(){
		if(App.bigDiv && _gel("bigVideoEmbed")){
			var dims = App.BigVideoCoords();
			var vH = dims[3];
			var vW = dims[4];
			var div = _gel("bigVideoEmbed");
			div.style.width = vW+"px";
			div.style.height = vH+"px";
		}
	},

	showBig: function(html, confirmClose){
		if(App.bigDiv){App.closeBig();}
		App.bigSizes[2] = confirmClose == undefined ? 0 : confirmClose;
		App.bigDiv = true;
		var div1 = _ce("DIV");
		div1.className = "bigWinBg";
		div1.style.filter = "alpha(opacity="+(App.opacity*100)+")";
		div1.style.opacity = App.opacity;
		div1.title = "Klicka i den tonade bakgrunden för att stänga detta fönster";
		div1.innerHTML = "<button onclick='App.closeBig(1)' class='closeBtn'><b>X</b> &nbsp;Stäng detta fönster</button>";
		div1.id = "bigDivBG";
		div1.onclick = function(){App.closeBig();};
		var div2 = _ce("DIV");
		div2.className = "bigWinContent";
		div2.innerHTML = html;
		div2.id = "bigDiv";
		div2.onclick = function(e){if(e){if(e.target == div2){App.closeBig();}}else{if(event.srcElement == div2){App.closeBig();}}};
		_getn("BODY")[0].appendChild(div1);
		_getn("BODY")[0].appendChild(div2);
		App.sizeBigDiv();
		App.addResizeEvent(App.sizeBigDiv, 1);
	},

	closeBig: function(a){
		if(!App.bigDiv){return;}
		
		if(App.bigSizes[2] && a == undefined){
			if(!confirm("Vill du stänga rutan och återgå till Superstart?")){return;}
		}
		
		App.bigDiv = false;
		var d = _gel("bigDiv");
		while(d.firstChild){
			d.removeChild(d.firstChild);
		}
		d.parentNode.removeChild(_gel("bigDiv"));
		_gel("bigDivBG").parentNode.removeChild(_gel("bigDivBG"));
		var arr = ["SELECT", "IFRAME", "EMBED", "OBJECT"];
		for(var x=0;x<arr.length;x++){
			App.hideElems(arr[x], false);
		}
		App.bigDivFrame = false;
	},

	sizeBigDiv: function(x){
		if(!App.bigDiv){
			return;
		}
		var y = document.body.scrollTop < document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
		var h = document.body.clientHeight;
		var w = _gel("content").offsetWidth;
		var bg = _gel("bigDivBG");
		bg.style.width = w+"px";
		bg.style.height = h+"px";
		bg.style.top = y+"px";
		var div = _gel("bigDiv");
		div.style.top = (y+30)+"px";
		div.style.width = (w-40)+"px";
		if(App.bigDivFrame){
			var a = App.bigSizes;
			App.bigDivFrame.style.width = (a[0] ? a[0] : (w-40))+"px";
			App.bigDivFrame.height = (a[1] ? a[1] : (h-60))+"px";
		}
		if(!x){
			App.sizeBigDiv(1);
			return;
		}
		setTimeout("App.clearBigDiv()",100);
	},

	clearBigDiv: function(){
		var bg = _gel("bigDivBG");
		var w = bg.offsetWidth;
		var h = bg.offsetHeight;
		var x = bg.offsetLeft;
		var y = bg.offsetTop;
		var arr = ["SELECT", "IFRAME", "EMBED", "OBJECT"];
		for(var j=0;j<arr.length;j++){
			var objs = _gel("content").getElementsByTagName(arr[j]);
			for (var i = 0; i < objs.length; ++i){
				var obj = objs[i];
				var o = FindXYWH(obj);
				obj.style.visibility = (o.x > (x + w) || (o.x + o.w) < x) || (o.y > (y + h) || (o.y + o.h) < y) ? "visible" : "hidden";
			}
		}
	},
	
	bigSizes:[0,0,0],
	showBigFrame: function(url,w,h, noScrl, confirmClose){
		var a =[w != undefined ? w : 0,h != undefined ? h : 0];
		w = a[0] ? w : _gel("content").offsetWidth - 40;
		h = a[1] ? h : document.body.clientHeight - 60;
		App.bigSizes = a;
		App.showBig("<div style='margin:0 auto;text-align:center;' id='big_div_frame' onclick='App.closeBig();'></div>", confirmClose);
		var f = _ce("IFRAME");
		f.width = w;
		f.height = h;
		if(noScrl){
			f.scrolling = "no";
		}
		f.name = "bigDivFrame";
		f.frameBorder = 0;
		f.allowTransparency = true;
		_gel("big_div_frame").appendChild(f);
		f.src = url;
		App.bigDivFrame = f;
	},

	hideElems: function(elem, y){
		var elems = _getn(elem);
		for(var x=0;x<elems.length;x++){
			elems[x].style.visibility = y ? "hidden" : "visible";
		}
	},

	colScalers: function(){
		_gel("colsizer").innerHTML = "";
		var p = _gel("page_"+App.activeTab);
		var i = p.childNodes.length - 1;
		var wBuff = 0;
		for(var x=0;x<i;x++){
			var a = _ce("DIV");
			a.i = x;
			var perc = parseFloat(p.childNodes[x].style.width);
			var scalerW = 0;
			wBuff += perc;
			a.className = "scaler";
			a.style.left = wBuff+"%";
			var err = 0;
			var calcErr = function(){
				var c = p.childNodes;
				var y = 0;
				for(var x=0;x<c.length;x++){
					y += parseFloat(c[x].style.width);
				}
				return y;
			};
			Drag.init(a, a, null,null,0,0);
			a.ondblclick = function(){
				App.setCols(_gel("page_"+App.activeTab).childNodes.length);
			};
			a.onDragStart = function(x,y){
				App.colScalerW = 2 - (document.all ? 1 : 0);
				var x2 = FindXY(this.parentNode).x - FindXY(this.parentNode.parentNode).x;
				scalerW = _gel("content").offsetWidth - x2 * 2;
				this.style.left = ( this.offsetLeft + App.colScalerW)+"px";
				err = calcErr();
			};
			a.onDragEnd = function(){
				var nc = p.childNodes[this.i+1];
				nc.style.width = (parseFloat(nc.style.width) + (err - calcErr()))+"%";
				this.style.left = (100 * (this.offsetLeft + App.colScalerW) / scalerW)+"%";
				var c = p.childNodes;
				var cw = [];
				for(var x=0;x<c.length;x++){
					cw[cw.length] = parseFloat(c[x].style.width);
				}
				App.onResize();
				if(App.saveScaler > 1){
					App.saveScaler = 0;
					call2("/tab.php?action=setColWidth&tab="+App.activeTab+"&w="+cw.join(","));
				}
			};
			a.onDrag = function(x,y){
				App.saveScaler++;
				var pc = this.previousSibling;
				var nc = this.nextSibling;
				if(pc && x < pc.offsetLeft + 30){
					this.style.left = (pc.offsetLeft+30)+"px"; return;
				}else if(nc && x > nc.offsetLeft - 30){
					this.style.left = (nc.offsetLeft-30)+"px"; return;
				}else if(x < 30){
					this.style.left = "30px"; return;
				}else if(x > scalerW - 30){
					this.style.left = (scalerW - 30)+"px"; return;
				}
				var c1 = p.childNodes[this.i];
				var c2 = c1.nextSibling;
				var ofs = 0;
				var ofsE = c1;
				while(1){
					if(ofsE.previousSibling){
						ofsE = ofsE.previousSibling;
						ofs += parseFloat(ofsE.style.width);
					}else{
						break;
					}
				}
				var l1a = parseFloat(c1.style.width);
				var l1b = (100 * x/scalerW) - ofs;
				var l2a = parseFloat(c2.style.width);
				var l2b = (l1a - l1b) + l2a;
				c1.style.width = l1b+"%";
				c2.style.width = l2b+"%";
			};
			_gel("colsizer").appendChild(a);
		}	
	},

	setBlockColor: function(blk, x){
		this.blockColor = x ? x : false;
		_gel("blk"+blk).firstChild.className = "round_b"+(x ? " "+App.blockColors[x] : "");
		call2("/block.php?action=setColor&blk="+blk+"&x="+x);
	},

	playMp3: function(url){
		_gel("mp3").innerHTML = "<embed src='flash/mp3player.swf' width='180' height='20' allowfullscreen='true' flashvars='&file="+encodeURIComponent(url)+"&height=20&width=180&autostart=true&frontcolor=0xE5EFF3&backcolor=0x90A3C0&lightcolor=0xE5EFF3' /><img src='flash/mp3close.gif' title='Stäng' style='cursor:pointer;' onclick='_gel(\"mp3\").innerHTML = \"\";'>";
	},

	guide: function(){
		App.showBigFrame("guide.old.php");
		return;
		var div = _gel("colsizer");
		if(div.previousSibling.className == "guide"){
			div.parentNode.removeChild(div.previousSibling);
			return;
		}
		var d = _ce("DIV");
		d.className = "guide";
		d.id = "guideDiv";
		d.innerHTML = "<i>Laddar...</i>";
		div.parentNode.insertBefore(d, div);
		call2("guide.php", "guideDiv");
	}
};

addEvent(window, "onresize", App.onResize);
addEvent(window, "onscroll", App.onScroll);
