var errorOccurred = false;

function displayErrorMessage(errortext) {
	errorOccurred = true;
	var error = Builder.node('div', { id: 'errorbox' }, [ errortext ]);
	$('errorframe').insert(error);
}

function removeErrorMessage() {
	if (errorOccurred) {
		errorOccurred = false;
		$('errorbox').parentNode.removeChild($('errorbox'));
	}
}

function initArchive(div_set, cla_set) {
	buildSelect(div_set, cla_set);
}

var working = false;

function buildSelect(div_set, cla_set) {
	
	displayLoader($('loadingframe'));
	removeErrorMessage();	

	if (!working) {
		working = true;
		clearContent($('limit_class'));
		
		if (!(div_id = div_set))
			div_id = $('div_sel').value;
		
		if (!div_id) {
			clearContent($('loadingframe'));
			working = false;
			return;
		}			
			
		new Ajax.Request('archive.htm', {
			method: 'post',
			parameters: {div_id: div_id,
			 			 build: 'true'},
			onSuccess: function(transport) {
	
				if ( transport.responseText != 'error' ) {
					
					var json = transport.responseText.evalJSON();	
						
					var label =  Builder.node('label', { 'for': 'cla_sel'}, [json.description]);
					$('limit_class').insert({ bottom: label });
					var br =  Builder.node('br');
					$('limit_class').insert({ bottom: br });
					var select =  	Builder.node('select', { 'id': 'cla_sel', 'style': 'width: 300px;' }, [
										Builder.node('option', { 'value': '0' }, '[ alle ]')
									]);
					$('limit_class').insert({ bottom: select });
					
					for (count = 0; count < json.options.length; count++) {
						if (cla_set == json.options[count].id)
							var option =  Builder.node('option', { 'value': json.options[count].id, 'selected': 'selected' }, [json.options[count].name]);
						else
							var option =  Builder.node('option', { 'value': json.options[count].id }, [json.options[count].name]);
						$('cla_sel').insert({ bottom: option });
					}
				}
				else
					displayErrorMessage(transport.responseText);
			}
		});
		working = false;
	}	
	clearContent($('loadingframe'));
}

var changeReportPage = function(page, container, para) {
	displayLoader($('reports_results'));
	removeErrorMessage();
	para = para.evalJSON();
	
	if (!working) {
		working = true;
		new Ajax.Request('archive.htm', {
			method: 'post',
			parameters: {typ_id: para.typ_id,
			 			 div_id: para.div_id,
						 cla_id: para.cla_id,
						 tex_search: para.tex_search,
						 rep_page: page,
			 			 search: 'true'},
			onSuccess: function(transport) {
				
				clearContent($('reports_results'));
				if ( transport.responseText != 'error' ) {
								
					var json = transport.responseText.evalJSON();
						
					if ( json.reports.length > 0 ) {
						pasteReportResults(json);
					}		
				}
				else
					displayErrorMessage(transport.responseText);
			}
		});
		working = false;
	}			
}

var changeDatePage = function(page, container, para) {
	displayLoader($('dates_results'));
	removeErrorMessage();
	para = para.evalJSON();
	
	if (!working) {
		working = true;
		new Ajax.Request('archive.htm', {
			method: 'post',
			parameters: {typ_id: para.typ_id,
			 			 div_id: para.div_id,
						 cla_id: para.cla_id,
						 tex_search: para.tex_search,
						 dat_page: page,
			 			 search: 'true'},
			onSuccess: function(transport) {
				
				clearContent($('dates_results'));
				if ( transport.responseText != 'error' ) {
								
					var json = transport.responseText.evalJSON();
						
					if ( json.dates.length > 0 ) {
						pasteDateResults(json);
					}		
				}
				else
					displayErrorMessage(transport.responseText);
			}
		});
		working = false;
	}			
}

var changePersonPage = function(page, container, para) {
	displayLoader($('persons_results'));
	removeErrorMessage();
	para = para.evalJSON();
	
	if (!working) {
		working = true;
		new Ajax.Request('archive.htm', {
			method: 'post',
			parameters: {typ_id: para.typ_id,
			 			 div_id: para.div_id,
						 cla_id: para.cla_id,
						 tex_search: para.tex_search,
						 per_page: page,
			 			 search: 'true'},
			onSuccess: function(transport) {
				
				clearContent($('persons_results'));
				if ( transport.responseText != 'error' ) {
								
					var json = transport.responseText.evalJSON();
						
					if ( json.persons.length > 0 ) {
						pastePersonResults(json);
					}		
				}
				else
					displayErrorMessage(transport.responseText);
			}
		});
		working = false;
	}			
}

function getSearchResults(report_quantity, date_quantity, person_quantity) {
	
	displayLoader($('results'));
	removeErrorMessage();	

	if (!working) {
		working = true;

		tex_search = $('searchtext').value;
		
		typ_id = $('typ_sel').value;
		div_id = $('div_sel').value;
		if (div_id > 0) 
			cla_id = $('cla_sel').value;
		else
			cla_id = 0;	
		
		new Ajax.Request('archive.htm', {	
			method: 'post',
			parameters: {typ_id: typ_id,
			 			 div_id: div_id,
						 cla_id: cla_id,
						 tex_search: tex_search,
			 			 search: 'true'},
			onSuccess: function(transport) {
				
				clearContent($('results'));
				if ( transport.responseText != 'error' ) {	
								
					var json = transport.responseText.evalJSON();

// display report results
						
					if ( json.reports.length > 0 ) {
						var reports = Builder.node('div',{ 'class': 'bluebox-title', 'style': 'padding: 5px;' },[ 'Artikel die ihren Suchkriterien entsprechen (', json.report_count , '):' ]);
						$('results').insert({ bottom: reports });
						var reports = Builder.node('div',{ 'id': 'reports_results' },[]);
						$('results').insert({ bottom: reports });
					
						pasteReportResults(json);
						
						var reports = Builder.node('div',{ 'id': 'reports_selector', 'class': 'bluebox-link', 'style': 'word-spacing: 6px; padding-bottom: 6px;' },[]);
						$('results').insert({ bottom: reports });		
						if ( report_quantity < json.report_count ) {
							var temp = {report_quantity: report_quantity, typ_id: typ_id, div_id: div_id, cla_id: cla_id, tex_search: tex_search};
							buildPageSelector('reports_selector', report_quantity, json.report_count, 1, changeReportPage, 'reports_results', Object.toJSON(temp));
						}
					}			

// display date results
					
					if ( json.dates.length > 0 ) {	
						var dates = Builder.node('div',{ 'class': 'bluebox-title', 'style': 'padding: 5px;' },[ 'Termine die ihren Suchkriterien entsprechen (', [json.date_count], '):' ]);
						$('results').insert({ bottom: dates });
						var reports = Builder.node('div',{ 'id': 'dates_results' },[]);
						$('results').insert({ bottom: reports });
						
						pasteDateResults(json);
						
						var dates = Builder.node('div',{ 'id': 'dates_selector', 'class': 'bluebox-link', 'style': 'word-spacing: 6px; padding-bottom: 6px;' },[]);
						$('results').insert({ bottom: dates });		
							
						if ( date_quantity < json.date_count ) {
							var temp = {date_quantity: date_quantity, typ_id: typ_id, div_id: div_id, cla_id: cla_id, tex_search: tex_search};
							buildPageSelector('dates_selector', date_quantity, json.date_count, 1, changeDatePage, 'dates_results', Object.toJSON(temp));
						}
					}
					
// display person results
						
					if ( json.persons.length > 0 ) {
						var reports = Builder.node('div',{ 'class': 'bluebox-title', 'style': 'padding: 5px;' },[ 'Personen die den Suchbegriffen entsprechen (keine Spartensuche) (', json.person_count , '):' ]);
						$('results').insert({ bottom: reports });
						var reports = Builder.node('div',{ 'id': 'persons_results' },[]);
						$('results').insert({ bottom: reports });
					
						pastePersonResults(json);
						
						var persons = Builder.node('div',{ 'id': 'persons_selector', 'class': 'bluebox-link', 'style': 'word-spacing: 6px; padding-bottom: 6px;' },[]);
						$('results').insert({ bottom: persons });		
							
						if ( person_quantity < json.person_count ) {
							var temp = {person_quantity: person_quantity, typ_id: typ_id, div_id: div_id, cla_id: cla_id, tex_search: tex_search};
							buildPageSelector('persons_selector', person_quantity, json.person_count, 1, changePersonPage, 'persons_results', Object.toJSON(temp));
						}
					}							
				}
				else
					displayErrorMessage(transport.responseText);
			}
		});
		working = false;
	}		
}

function pasteReportResults(json) {
	var reports = Builder.node('div',{},[
						Builder.node('div',{ 'class': 'bluebox-content', 'style': 'margin: 5px 0 5px 0;' },[
							Builder.node('table',{},[
							  Builder.node('tbody',{ 'id': 'reports_table' },[
						      ])
							])
						])
					]);
	$('reports_results').insert({ bottom: reports });
	for (count = 0; count < json.reports.length; count++) {
		var reports =	  Builder.node('tr',{},[
							Builder.node('td',{ 'class': 't80' },[ json.reports[count].date ]),
							Builder.node('td',{ 'class': 't300' },[ 
								Builder.node('a',{ 'href': 'report-'+json.reports[count].id+'.htm' },[
									json.reports[count].title
								])
							]),
							Builder.node('td',{ 'class': 't140' },[ json.reports[count].division ]),
							Builder.node('td',{ 'class': 't100' },[ json.reports[count].team ])
						]);
		$('reports_table').insert({ bottom: reports });
	}
}

function pasteDateResults(json) {

	var dates = Builder.node('div',{},[
						Builder.node('div',{ 'class': 'bluebox-content', 'style': 'margin: 5px 0 5px 0;' },[
							Builder.node('table',{},[
						    	Builder.node('tbody',{ 'id': 'dates_table' },[])
						    ])
						])
					]);
	$('dates_results').insert({ bottom: dates });
	for (count = 0; count < json.dates.length; count++) {
		var dates =	Builder.node('tr',{},[
							Builder.node('td',{ 'class': 't80' },[ json.dates[count].date ]),
							Builder.node('td',{ 'class': 't300' },[ json.dates[count].content ]),
							Builder.node('td',{ 'class': 't140' },[ json.dates[count].division ]),
							Builder.node('td',{ 'class': 't100' },[ json.dates[count].team ])
						]);
		$('dates_table').insert({ bottom: dates });
	}
}

function pastePersonResults(json) {
	for (count = 0; count < json.persons.length; count++) {
		var persons = Builder.node('div',{},[
						Builder.node('div',{ 'class': 'bluebox-content', 'style': 'margin: 5px 0 5px 0;' },[
							Builder.node('a', { 'href': 'person-'+json.persons[count].id+'.htm' }, [
								json.persons[count].name,
								' ',
								json.persons[count].surname
							])
						])
					]);
		$('persons_results').insert({ bottom: persons });
	}
}