

function showTranslatorForm(originObj,dictid)
{
	var resultWindow = document.getElementById(dictid+"_result");
	
	var divs = resultWindow.getElementsByTagName('DIV');
	
	var searchResultWindow = null;
	
	for (var i = 0; i < divs.length; i++)
	{
		if (divs[i].hasAttribute && divs[i].getAttribute('name') == 'searchArticleResult')
		{
			var searchResultWindow = divs[i];
		}
	}
	if (resultWindow)
	{
		resultWindow.innerHTML = homonymForm();
		
	}	
}


function homonymForm(formValues, errors)
{
	
	if (!formValues)
		var formValues = {};
		
	var formFields = new Array();
	formFields[0] = {	'sourceWord':'Kildeord'
						,'sourceWordclass':'Ordklasse'
						,'sourceConjugation':'Bøjning'
						,'sourceGender':'Køn'	
					};
	
	
	formFields[1] = { 'translateWord' : 'Oversættelse'
						,'translateExplanation':'Forklaring'
						,'translateExample':'Eksempel'
					 	,'translateWordclass':'Ordklasse'
					 	,'translateGender':'Køn'
					 	,'translateConjugation':'Bøjning'
					  };
					  
	formFields[2] = { 'dict' : 'Ordbog'};
					
	var selectValues = {'sourceWordclass':sameKeyValue(new Array('ART','ADJ','ADV','INT','KON','NUM','PART','PRON','PROP','PRÆ','VB','SUB','Forkortelse','Anden'))
						,'translateGender':sameKeyValue(new Array('','MAS','FEM','NEU'))
						,'sourceGender':sameKeyValue(new Array('','MAS','FEM','NEU'))
						,'translateWordclass':sameKeyValue(new Array('ART','ADJ','ADV','INT','KON','NUM','PART','PRON','PROP','PRÆ','VB','SUB','Forkortelse','Anden'))
						,'dict': {'daen':'Dansk-Engelsk','enda':'Engelsk-Dansk'
									,'daty':'Dansk-Tysk','tyda':'Tysk-Dansk'
									,'dafr':'Dansk-Fransk','frda':'Fransk-Dansk'
									,'dasp':'Dansk-Spansk','spda':'Spansk-Dansk'
									,'dase':'Dansk-Svensk','seda':'Svensk-Dansk'}
						};
	
	return'<form action="/user/translator/addHomonym.php" method="post">'+
			createErrorListIfErrorsOccurred(errors)+
			createTableForm(formFields[2],selectValues,1,formValues)+
			createTableForm(formFields[0],selectValues,1,formValues)+
			'<br><hr>'+
			createTableForm(formFields[1],selectValues,5,formValues)+
			createSubmitButton('Tilføj')+
			'</form>';
}

function createErrorListIfErrorsOccurred(errors)
{
	if (!errors[0])
		return '';
		
	var htmlErrors = ''
	for (var key in errors)
	{
		htmlErrors += '<li>'+errors[key]+'</li>';
	}
	return '<div class="translatorUserError">Der opstod følgende fejl:<ul>'+htmlErrors+'</ul></div>';
}


function sameKeyValue(array)
{
	var fixedArray = new Array();
	for (var key in array)
	{
		value = array[key];
		fixedArray[value] = value;
	}
	return fixedArray;
}


function createSubmitButton(value)
{
	return '<input type="submit" value="'+value+'" class="translatorSubmit">';
}

function createTableForm(formFields,selectValues,entries,formValues)
{
	var tableContent = '';
	for (var i = 0; i < entries; i++)
	{
		tableContent += '<tr>'+createInputLine(formFields,selectValues,i,formValues)+'</tr>';
	}

	return  '<table class="translatorUserForm">'+
			'<tr>'+createTableHeader(formFields)+'</tr>'+
			tableContent+
			'</table>';
}

function createTableHeader(formFields)
{
	var tableHeader = '';
	
	for(var key in formFields)
	{
		var value = formFields[key];
		tableHeader += '<th>'+value+'</th>'; 
	}
	return tableHeader;
}

function createInputLine(formFields,selectValues,uniqID,formValues)
{
	var inputLine = '';
	
	for(var key in formFields)
	{
		var elementValue = "";
		if (formValues[key] && formValues[key][uniqID])
			elementValue = formValues[key][uniqID];
			
		inputLine += '<td>'+(selectValues[key] ? createSelectElement(key,selectValues[key],uniqID,elementValue) : createInputElement(key,uniqID,elementValue))+'</td>';
	}
	return inputLine;
}

function createInputElement(name,uniqID,value)
{
	return '<input autocomplete="off" type="text" name="'+name+'['+uniqID+']" value="'+value+'" onchange="createNewPreview()">';
}

function createSelectElement(name,selectValues,uniqID,setValue)
{
	var header = '<select name="'+name+'['+uniqID+']" onchange="createNewPreview()" autocomplete="off">';
	var options = '';

	for(var key in selectValues)
	{
		value = selectValues[key];
		options += '<option value="'+key+'"'+(setValue == key ? ' selected':'')+'>'+value+'</option>';
	}
	
	return header+options+'</select>';
}

function dump(arr,level) 
{
	var dumped_text = "";
	if(!level) level = 0;
	
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') 
	{
	 for(var item in arr) {
	  var value = arr[item];
	 
	  if(typeof(value) == 'object') 
	  {
	   dumped_text += level_padding + "'" + item + "' ...\n";
	   dumped_text += dump(value,level+1);
	  } 
	  else 
	  {
	  	dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
	  }
	 }
	} 
	else 
	{
	 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
} 

function createNewPreview()
{
	if (!document.getElementById('previewArea'))
		return '';
	
}
