function Application () {
this.directjump = false;
this.authRequired=false;
this.tvurl = 0;
this.wspath = "ws/pathox_api.cfc";
this.requestSearch = new YAHOO.util.CustomEvent("requestSearch",this);
this.requestResult = new YAHOO.util.CustomEvent("requestResult",this);
this.requestDetail = new YAHOO.util.CustomEvent("requestDetail",this);
this.startSearch = new YAHOO.util.CustomEvent("startSearch",this);

this.leaveApp = new YAHOO.util.CustomEvent("leaveApp",this);

this.searchFormReturn = new YAHOO.util.CustomEvent("searchFormReturn",this);
this.resultReturn = new YAHOO.util.CustomEvent("resultReturn",this);
this.detailReturn = new YAHOO.util.CustomEvent("detailReturn",this);

this.appReset = new YAHOO.util.CustomEvent("appReset",this);
this.appForceReset = new YAHOO.util.CustomEvent("appForceReset",this);
this.resetSearchForm = new YAHOO.util.CustomEvent("resetSearchForm",this);

this.displaySearchForm = new YAHOO.util.CustomEvent("displaySearchForm",this);
this.displayResultList = new YAHOO.util.CustomEvent("displaResultList",this);
this.displayDetail = new YAHOO.util.CustomEvent("displayDetail",this);
this.printDetail = new YAHOO.util.CustomEvent("printDetail",this);
}

Application.prototype.onAppReset = function (fct,result,me) {
	var actiontaken = false;
	var sendquery = false;
	var qry=new Array();
	var obj = new Object();
	var params= new Array("sldType","Topo", "TopoG", "Coloring","Origin","Sex","IH","Autor","Editor","DiaG","freeText");
	var qs=document.URL.split("?");
	var tmpvslideID = 0;
	me.directjump=false;
	
//	window.alert(typeof(result));
//	if (typeof(result) == 'object') {
	
	if (qs.length > 1) {
		//document.URL = qs[0];
		var qs2=qs[1].split("&");
		var qs3=new Array();


		for (i = 0; i <qs2.length; i++) {
			qs3[i]=qs2[i].split("=");
		}
		for (i = 0; i < qs3.length; i++) {
			if (qs3[i][0]=="tv") {
				this.tvurl = qs3[i][1];
			}

			if (qs3[i][0]=="id" || qs3[i][0]=="vSlideID" ) {
				qs3[i][1]= qs3[i][1].replace(/#/,"");
				if (!isNaN(qs3[i][1]) && parseInt(qs3[i][1]) > 0) {
					me.directjump=true;
					tmpvslideID=qs3[i][1];
					//break;
				}
			}
			
			
			//window.alert(params.join().search(qs3[i][0]));
			
			if(params.join().search(qs3[i][0]) >= 0) {
				sendquery=true;
				obj = new Object();
				obj.id=qs3[i][0];
				obj.value=parseInt(qs3[i][1]);
				qry.push(obj);
				//window.alert(qs3[i][1]);
			}
		}
		if (tmpvslideID != 0) {
			me.requestDetail.fire(tmpvslideID,me);
			actiontaken = true;			
		} else {
		if (sendquery) {
			me.startSearch.fire(qry,me);
			actiontaken = true;
		}
		}
	}
	//} 
	if (!actiontaken) {
		loadSearchFormData(me);
	}
};

Application.prototype.onSearchFormReturn = function (type, searchFormData,me) {
	fillSearchFormData(searchFormData,me);
};

Application.prototype.onStartSearch = function (evt,params,me) {
	if (trim($('vSlideID').value) !='') {
		if (!isNaN($('vSlideID').value) && parseInt($('vSlideID').value) > 0)  {
			getDetailData($('vSlideID').value,me);
			me.directjump=true;
		} else {
			window.alert('invalid vSlide ID!');
		}
	} else {
			me.directjump=false;
//		if(typeof(params) == "object" && params.toString() !="") {
//			sendQueryToDB(params);		
//		} else {
		
//			window.alert(typeof(params) + " elements");
			sendQueryToDB($('search').elements,me);
//		}
	}
};

Application.prototype.onResetSearchForm = function (fct,result,me) {
$("search").reset();
/*var ndes = window.document.getElementsByTagName("select");
for (var nde in ndes) {
	ndes[nde].elements[0].selected = true;
	for (var nd in ndes) {
		//window.alert(typeof(ndes[nde][nd]));
	//ndes[nde][0].selected = true;
	}
}
$("freeText").value="";
$("vSlideID").value="";
*/
};

Application.prototype.onResultReturn = function (type, data,me) {
	fillResultTable(data,me);
	Behaviour.apply();
};

Application.prototype.onRequestDetail = function (type,el,me) {
	getDetailData(el,me);
};

Application.prototype.onDetailReturn = function (type,data,me) {
	fillDetailData(data,me);
	//Behaviour.apply();
};

Application.prototype.onPrintDetail = function (type,data,me) {
	//window.print();
	var slideid=$('sld_id').value;
	window.open('index2.cfm?mode=print&id='+slideid,'vSlides_print','height=500,width=400,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,status=yes');
}

Application.prototype.onAppForceReset = function (type, data, me) {
	var qs=document.URL.split("?");
	if (qs.length > 1) {
		var qs2 =qs[0]
		window.open(qs2,"_self");
		location.href=qs2;
	} else {
		me.appReset.fire(data,me);
	}
}

function Viewer () {
	
}

Viewer.prototype.onAppReset = function (fct,result,me) {
$('sandglass').className="visible";	
};

Viewer.prototype.onStartSearch = function (fct,result,me) {
	$('sandglass').className="visible";	
//	var b = new Effect.Fade('searchform',{duration: 1.0});
	//var b = new Effect.Fade('resultlist',{duration: 0});
};

Viewer.prototype.onRequestDetail = function (type, el,me) {
	$('sandglass').className="visible";	
	if (typeof($('row_' + el[0])) != 'undefined') {
	if ($('row_' + el[0]).className=="odd") {
		$('row_' + el[0]).lastChild.className="visited_odd";
		//$('row2_' + el).className="visited_odd";
	} else {
		if ($('row_' + el[0]).className=="even") {
			$('row_' + el[0]).lastChild.className="visited_even";	
			//$('row2_' + el).lastchild.className="visited_even";	
		}
	}}
	
};

Viewer.prototype.onSearchFormReturn = function (fct,result,me) {
		me.displaySearchForm.fire(me);
		$('sandglass').className="hidden";		
};

Viewer.prototype.onResultReturn = function (fct,result,me) {
		$('sandglass').className="hidden";
		me.displayResultList.fire(me);	
};

Viewer.prototype.onDetailReturn = function (type, data,me) {
		me.displayDetail.fire(data,me);
		$('sandglass').className="hidden";
};

Viewer.prototype.onDisplayDetail = function (type,data,me) {
	$('resultlist').className="hidden";
	$('searchform').className="hidden";
		if(me.directjump==false) {
			$('p_list').className="visible button";	
		} else {
			$('p_list').className="hidden button";	
		}
			$('p_search').className="visible button";
			$('p_print').className="visible button";
			$('p_reload').className="visible button";			
			//$('l_detail').className="l_detail_active";
			//$('l_detail').className = $('l_detail').className + " active";
			//$('l_search').className = $('l_search').className.replace(/ active/,"");
			//$('l_list').className = $('l_list').className.replace(/ active/,"");
			//$('p_detail').className="visible";
		
			//window.alert(data[0][0]);
			if (data[0][0] == "false") {
				$('detail').className="hidden";
				$('nodetail').className="visible";
				//window.alert(data[0][0]);		
			} else {
				$('detail').className="visible";			
				$('nodetail').className="hidden";
				//window.alert(data[0][0]);	
			}
			Behaviour.apply();
};

Viewer.prototype.onDisplayResultList = function (fct,result,me) {
//var b = new Effect.Appear('resultlist',{duration: 1.0});
	$('resultlist').className="visible";
	$('detail').className="hidden";
	$('nodetail').className="hidden";	
	//$('content2').className="hidden";
	$('searchform').className="hidden";
			//$('l_list').className="l_list_active";
			//$('l_list').className = $('l_list').className + " active";
			//$('l_search').className = $('l_search').className.replace(/ active/,"");
			//$('l_detail').className = $('l_detail').className.replace(/ active/,"");
		//$('p_detail').className="hidden";
		$('p_list').className="hidden button";
		$('p_search').className="visible button";
		$('p_print').className="hidden button";
		$('p_reload').className="hidden button";		
			//sortables_init();
		Behaviour.apply();
};

Viewer.prototype.onDisplaySearchForm = function (fct,result,me) {

	$('resultlist').className="hidden";
	$('detail').className="hidden";
	$('nodetail').className="hidden";
	//$('content2').className="hidden";
	$('searchform').className="visible";
			//$('l_search').className="l_search_active";
			//$('l_search').className = $('l_search').className + " active";
			//$('l_list').className = $('l_list').className.replace(/ active/,"");
			//$('l_detail').className = $('l_detail').className.replace(/ active/,"");
//$('p_detail').className="hidden";
$('p_list').className="hidden button";
$('p_search').className="hidden button";
$('p_print').className="hidden button";
$('p_reload').className="hidden button";
Behaviour.apply();
};


Appl = new Application();

Appl.appReset.subscribe(Appl.onAppReset,Appl);
Appl.startSearch.subscribe(Appl.onStartSearch,Appl);
Appl.requestDetail.subscribe(Appl.onRequestDetail,Appl);
Appl.searchFormReturn.subscribe(Appl.onSearchFormReturn,Appl);
Appl.resultReturn.subscribe(Appl.onResultReturn,Appl);
Appl.detailReturn.subscribe(Appl.onDetailReturn,Appl);
Appl.resetSearchForm.subscribe(Appl.onResetSearchForm,Appl);
Appl.printDetail.subscribe(Appl.onPrintDetail,Appl);
Appl.appForceReset.subscribe(Appl.onAppForceReset,Appl);

v = new Viewer();
Appl.appReset.subscribe(v.onAppReset,Appl);
Appl.startSearch.subscribe(v.onStartSearch,Appl);
Appl.requestDetail.subscribe(v.onRequestDetail,Appl);
Appl.searchFormReturn.subscribe(v.onSearchFormReturn,Appl);
Appl.resultReturn.subscribe(v.onResultReturn,Appl);
Appl.detailReturn.subscribe(v.onDetailReturn,Appl);
Appl.displaySearchForm.subscribe(v.onDisplaySearchForm,Appl);
Appl.displayResultList.subscribe(v.onDisplayResultList,Appl);
Appl.displayDetail.subscribe(v.onDisplayDetail,Appl);

//app.appReset.fire();

  String.prototype.removeWhiteSpaces = function () {
    return (this.replace(/\s+/g,""));
  };
