/*
ns dc				http://purl.org/dc/elements/1.1/
dc:date				2006-03-09
dc:creator			benjamin nowack
dc:rights			2006, appmosphere.com, germany, all rights reserved
*/

onload = function(){
	loaded = true;
	/* adjust email links */
	adjust_email_links();
	/* add "edit" link */
	add_edit_link();
	/* init */
	//window.app = getCurApp();
	/* set headNav */
	//updateEl("headNavArea", getHeadNavCode());
	/* preload images */
	preloadImages([]);
	/* load app */
	//loadApp();
}

adjust_email_links = function(){
	var els, a_els, a_el, spans, account, server;
	if(els=$$("span", $("content"))){
		for(var i=0; i < els.length; i++){
			if(els[i]["className"] && (els[i].className=="email") && (a_els=$$("a", els[i]))){
				a_el=a_els[0];
				if(spans=$$("span", els[i])){
					account=spans[0].innerHTML;
					server=spans[1].innerHTML;
					a_el.href="mailto:"+account+"@"+server;
				}
			}
		}
	}
}

add_edit_link = function(){
	var els;
	if(els=$$("h1")){
		addEventHandler(els[0], "dblclick", function(){location.href=$a("editToggle", "href")});
	}
}

/* app */

loadApp = function(){
	var app, libs;
	if(app = window.app){
		/* msg */
		showLoadingInfo('Loading "'+main.apps[app].label+'"...', "content");
		/* topNav */
		updateEl("topNavArea", getTopNavCode(window.app));
		/* load */
		if(libs = main.apps[app].libs){
			for(var i = 0; i < libs.length; i++) {
				addHeadScript(libs[i], "app"+i);
			}
		}
	}
}

loadView = function(view_name){
	var app, libs;
	if(app = window.app){
		var view_name = (view_name && main.apps[app].views[view_name]) ? view_name : getDefaultView();
		var view = main.apps[app].views[view_name];
		/* msg */
		showLoadingInfo('Loading "'+view.label+'"...', "content");
		/* topNav */
		selectTopNavLink(view_name);
		/* load */
		if(libs = view.libs){
			for(var i = 0; i < libs.length; i++) {
				addHeadScript(libs[i], "view"+i);
			}
		}
		
	}
}

loadViewCss = function(css){
	var links = $$("link");
	for(var i = 0; i < links.length ; i++){
		if(links[i].id == "view-css"){
			links[i].href="css/"+css;
		}
	}
}

/* basics */

getCurApp = function(){
	var app;
	return ((app=$GET("app")) && (typeof main.apps[app] != "undefined")) ? app : getDefaultApp();
}

getDefaultApp = function(){
	for(i in main.apps){
		return i;
	}
	return false;
}

getCurView = function(){
	var app = getCurApp(), view;
	return ((view=$GET("view")) && (typeof main.apps[app].views[view] != "undefined")) ? view : getDefaultView(app);
}

getDefaultView = function(){
	var app = getCurApp();
	for(i in main.apps[app].views){
		return i;
	}
	return false;
}

getApiUrl = function(app){
	try {
		return main.base+main.apps[app].api;
	} catch (e){
		return false;
	}
}

showLoadingInfo = function(msg, el){
	var r=''+
		'<div class="loadingInfo">'+
			'<img src="gui/pa_loading.gif" style="margin-bottom:10px;" /><br />'+
			msg+
		'</div>'+
	'';
	updateEl(el, r);
}


/* head Nav */

getHeadNavCode = function(){
	var r = "", css = "", app = getCurApp();
	r+='<ul>';
	for(i in main.apps){
		css = (app == i) ? ' class="selected"' : '';
		r += '<li><a href="?app='+i+'"'+css+'>'+main.apps[i].label.toUpperCase()+'</a></li>';
	}
	r+='</ul>';
	return r;
}

/* topNav */

getTopNavCode = function(app, view){
	var r = "", css = "", view = view ? view : getCurView(), views = main.apps[app].views;
	var style = (typeof window["ActiveXObject"]!="undefined") ? ' style="margin-top:0px;"' : '';
	r+='<ul'+style+'>';
	for(i in views){
		css = (view == i) ? ' class="selected"' : '';
		r += '<li><a href="?app='+app+'&view='+i+'"'+css+' class="topNavLink">'+views[i].label+'</a></li>';
	}
	r+='</ul>';
	return r;
}

adjustTopNavLinks = function(){
	var topNavLinks=$$("a", $("topNavArea"));
	for(var i=0; i < topNavLinks.length; i++){
		topNavLinks[i].onclick=function(){
			loadView($GET("view", this.href));
			return false;
		};
	}
}

selectTopNavLink = function(view){
	var topNavLinks=$$("a", $("topNavArea"));
	for(var i=0; i < topNavLinks.length; i++){
		if($GET("view", topNavLinks[i].href) == view){
			topNavLinks[i].className="selected";
			topNavLinks[i].blur();
		}
		else{
			topNavLinks[i].className="";
		}
	}
}

/* transitions */




/* remote scripting */

function call_remote_method(cls, mthd, form_id, qs, target){
	var uri=window.base_uri+"call?fnc=call_remote_method";
	uri+="&cls="+cls;
	uri+="&mthd="+mthd;
	uri+="&"+qs;
	uri+="&format=html";
	hideInfoDiv();
	if(my_form=get_el(form_id)){
		my_form.action=uri;
		if(target){
			my_form.target=target;
		}
		my_form.submit();
	}
	return true;
}

