
aObj = new JSONscriptRequest();
var mainInputfield = null;
var actItem = -1;

// Farben für das ervorheben der einzelnen Ergebniskategorien
var clrName = "#3B92E7";
var clrIMO = "#EE5AF9";
var clrMMSI = "#E3B404";
var clrCLSGN = "#59A50F";

// Pfad für die kleinen Flaggen
var urlFlag = 'http://www.fleetmon.com/images/countries/flags/';
// Pfad für die Icons der Schiffstypen
var urlType = '/fileadmin/media/types/';

// Variablen für die einzelnen Elemente eines Listenelements in der Suchliste 
var rowFlag, rowTypeIco, rowTextName, rowTextImo, rowTextMmsi, liveSrchTb;



//var itemOver = function func_itemOver(){
//	clearHover(); setAct(count); setHover(this);
//};

//function func_itemOver2(count, obj){
//	clearHover(); setAct(count); setHover(obj);
//};


var globalListID = "shiplist";

function dorequest(inputfield, key, listID) {
	
	listID = typeof(listID) != 'undefined' ? listID : "shiplist";
	globalListID = listID;

	liveSrchTb = document.getElementById(listID);
	liveSrchTb.style.zIndex='100';
	switch (key) {
		case 40: //Downarrow
			goDown(listID);
		break;

		case 38: //Uparrow
			goUp(listID);
		break;

		case 13: //Enter
			if (actItem >= 1) {
				gotoPage(listID);
			}
		break;
		case 27: //ESC
			searchRestBtn(listID);
			//liveSrchTb.style.display = 'none';
			unhideFlash('innerfleetmonDemo','fleetmonDemo');

		break;
		
		default:
			mainInputfield = inputfield;
			if (inputfield.value.length >= 1) {
				startLoader();
				request = 'http://www.fleetmon.com/get.vessels.json.php?highlight=1&mode=html&s='+inputfield.value;
			  aObj.fullUrl = request;
			  aObj.buildScriptTag();
			  aObj.addScriptTag();
			} else {
				container.style.display = 'none';
			}
		break;
	}
}


function getShipList(jsonData, listID) {

	listID = typeof(listID) != 'undefined' ? listID : globalListID;
	
	var ergebnise = jsonData.Result.length;
    var result    = jsonData.Result
    var container = document.getElementById(listID);
      
	  clearContainer(listID);
      if (ergebnise > 0) {

    	// Tabellenkopf für die Darstellen der suchergebnisse aufbauen
		var trTb = document.createElement('tr');
		var thTb = document.createElement('th');
		thTb.appendChild(document.createTextNode('flag'));
		trTb.appendChild(thTb);
		var thTb = document.createElement('th');
		thTb.style.width = '154px';
		thTb.appendChild(document.createTextNode('name'));
		trTb.appendChild(thTb);
		var thTb = document.createElement('th');
		thTb.appendChild(document.createTextNode('imo'));
		trTb.appendChild(thTb);
		var thTb = document.createElement('th');
		thTb.appendChild(document.createTextNode('mmsi'));
		trTb.appendChild(thTb);
		var thTb = document.createElement('th');
		thTb.appendChild(document.createTextNode('type'));
		trTb.appendChild(thTb);
		liveSrchTb.appendChild(trTb);
		
		// Verstecke Flashelemente, die die Darstellung behindern
		hideFlash('innerfleetmonDemo','background-color:#ccc;width:100%;height:100%;');
		//background-image:url(/fileadmin/images/fleetmon_disable.png);
		
		// stellt den resetbutton wieder her
		showSearchRestBtn(listID);
    	  
		for (i=0; i < ergebnise; i++) {
  			rowFlag = document.createElement('img');
  			rowTypeIco = document.createElement('img');
  			rowTextName = document.createElement('span');
  			rowTextImo = document.createElement('span');
  			rowTextMmsi = document.createElement('span');
  			
  			addRow(result[i], i+1, listID)
      	}
		container = liveSrchTb;
      	container.style.display = "";
      } else {
      	container.style.display = 'none';
      }
      stopLoader();
      aObj.removeScriptTag();
}

function addRow(result, count, listID) {
	// nur weiter verarbeiten, wenn in Results auch sinnvoller Inhalt steckt
	if(result==null) return 0;


	listID = typeof(listID) != 'undefined' ? listID : globalListID;

	// neue Zeile für Schiffsinfos erstellen
	var trTb = document.createElement('tr');
	trTb.setAttribute("class","livesearch_item");
	trTb.setAttribute("id", result['ObjectId']);
	
	// Funktionen die eine HoverEffect zaubern!
	trTb.onmouseover = function func_itemOver(){
		clearHover(listID); setAct(count); setHover(this);
	};
	trTb.onclick = function func_itemClick(){
		gotoPage(listID);
	};
	trTb.onmouseout = function func_itemOut(){
		setNormal(this); resetAct();
	};

	/*
	Felder, die von der Datenbank in _genau der_ Reihenfolge abgefragt werden!
	
	0=objectQualityId, 1=mmsiNumber, imoNumber, countryCode, countryNamePrintable,
    callsign, name, typeOfShipVerbose, dimensionA, dimensionB, dimensionC,
    dimensionD, getImageCount(objectId) AS imageCount, staticReceived,
    objectId, typeOfShipIcon
	*/
	
	/*
	 * objectId LIKE "%1$s" OR imoNumber LIKE "%1$s" OR
               mmsiNumber LIKE "%1$s" OR callsign LIKE "%1$s" OR name LIKE "%1$s"
               OR nameAlternates LIKE "%1$s" 
	 */

	// in welchem Feld wurde ein Ergebnis gefunden
	var hitfieldtype = result['HITFIELD'].split(',');
	
	// DIE REIEHEN FOLGE DER ELEMENTE IST FÜR DIE DARSTELLUNG WICHTIG
	// Flagge des Schiffs hinzufügen
	rowFlag.setAttribute("src",urlFlag+result['COUNTRY_SHORT']+".png");
	rowFlag.setAttribute("class","livesearch_item_flag");
	var tdTb = document.createElement('td');
	tdTb.appendChild(rowFlag);
	trTb.appendChild(tdTb);

	// Schiffsnamen hinzufügen
	rowTextName.setAttribute('id','vesselname'+result['ObjectId'])
	
	// den Namen hervorheben
	for(var i=0;i<hitfieldtype.length;i++){
		if(hitfieldtype[i]=='6')	rowTextName.setAttribute('class','highlight_name');
	}
	
	rowTextName.appendChild(document.createTextNode(result['Shipname']));
	var tdTb = document.createElement('td');
	tdTb.appendChild(rowTextName);
	trTb.appendChild(tdTb);

	// Imo hinzufügen
	rowTextImo.appendChild(document.createTextNode(result['IMO']));

	// die IMO hervorheben
	for(var i=0;i<hitfieldtype.length;i++){
		if(hitfieldtype[i]=='2')	rowTextImo.setAttribute('class','highlight_imo');
	}

	var tdTb = document.createElement('td');
	tdTb.appendChild(rowTextImo);
	trTb.appendChild(tdTb);


	// mmsi hinzufügen
	rowTextMmsi.appendChild(document.createTextNode(result['MMSI']));

	// die Mmsi hervorheben
	for(var i=0;i<hitfieldtype.length;i++){
		if(hitfieldtype[i]=='1')	rowTextMmsi.setAttribute('class','highlight_mmsi');
	}

	var tdTb = document.createElement('td');
	tdTb.appendChild(rowTextMmsi);
	trTb.appendChild(tdTb);
	
	// Typensymbol des Schiffs hinzufügen
	rowTypeIco.setAttribute("src",urlType+"icon_"+result['TYPE_ICO']+".gif");
	rowTypeIco.setAttribute("class","livesearch_item_type");
	rowTypeIco.setAttribute("title",result['TYPE']);
	rowTypeIco.setAttribute("alt",result['TYPE']);
	var tdTb = document.createElement('td');
	tdTb.appendChild(rowTypeIco);
	trTb.appendChild(tdTb);


	liveSrchTb.appendChild(trTb);
	
}



function clearContainer(listID) {
	listID = typeof(listID) != 'undefined' ? listID : "shiplist";
	var container = document.getElementById(listID);
	var inhalt = container.childNodes.length;
	for (i=0; i<inhalt; i++) {
		container.removeChild(container.childNodes[0]);
	}
	
	actItem = -1;
}

function setHover(obj) {
		obj.style.color = "white";
		obj.style.background = "#A02031";
}

function setNormal(obj) {
		obj.style.color = "";
		obj.style.background = "";
}

function clearHover(listID) {
	listID = typeof(listID) != 'undefined' ? listID : "shiplist";
	var container = document.getElementById(listID);
	var inhalt = container.childNodes.length;
	for (i=0; i<inhalt; i++) {
		setNormal(container.childNodes[i]);
	}
}


function goDown(listID) {
	listID = typeof(listID) != 'undefined' ? listID : "shiplist";
	var container = document.getElementById(listID);
	var count = container.childNodes.length-1;
	if (actItem < count) {
		actItem++;
		clearHover(listID);
		setHover(container.childNodes[actItem]);
	}
}


function goUp(listID) {
	listID = typeof(listID) != 'undefined' ? listID : "shiplist";
	var container = document.getElementById(listID);
	var count = container.childNodes.length;
	if (actItem > 1) {
		actItem--;
		clearHover(listID);
		setHover(container.childNodes[actItem]);
	}
}


function resetAct() {
	actItem = 1;
}

function setAct(val) {
	actItem = val;
}


function checkSubmit(form, listID) {
	if (actItem == 1) {
		return true;
	} else {
		gotoPage(listID);
		return false;
	}

}

function gotoPage(listID) {
	listID = typeof(listID) != 'undefined' ? listID : "shiplist";
	var container = document.getElementById(listID);
	var schiff = container.childNodes[actItem];
	var uniqueId = schiff['id'];
	var shipname = document.getElementById('vesselname'+uniqueId).firstChild.data;
	var dsURL = 'http://www.digital-seas.com/vessel_search/vessel_details/on/'+shipname.toLowerCase()+"_q"+uniqueId+'.html';
	window.location.href = dsURL;
}

function startLoader() {
	mainInputfield.style.background = "#D5EDFA url(/fileadmin/scripts/input_loader.gif) no-repeat right";
}

function stopLoader() {
	mainInputfield.style.background = "#D5EDFA";
}


//*****************************************************************************
//Aufrufen, um ein Flash für die Zeit des Aufrufs eines HTML-Overlays auszublenden
//und durch einen Platzhalter zu ersetzen
//*****************************************************************************

function hideFlash( flashIdToHide, styleThatShowsDisableStatusImage){
	// Element mit der Id suchen, die für die Anzeig des Flashes zuständig ist
	var flashArea = document.getElementById(flashIdToHide);
	
	if(flashArea==null) return 0;
	
	// wenn das Flash bereits nicht mehr sichtbar ist, nichts mehr machen!
	if(flashArea.childNodes[0].style.visibility=='hidden') return 1;
	
	// den mit der Id getaggten Bereich ausblenden
	flashArea.childNodes[0].style.visibility='hidden';

	return 1;
	
}

//*****************************************************************************
//Aufrufen, um ein verstecktes Flash, das mit hideFlash() versteckt wurde,
//wieder anzuzeigen
//*****************************************************************************
function unhideFlash( flashIdToUnhide, idStatusimagearea ){
	// suche den Bereich mit dem Statusbild
	var statusArea = document.getElementById(idStatusimagearea);
	console.log(statusArea);
	if(statusArea==null) return 0;

	// suche den Bereich, der das Flash enthält und versteckt ist
	var flashArea = document.getElementById(flashIdToUnhide);
	console.log(flashArea);
	if(flashArea==null) return 0;

	// wenn das Flash bereits wieder sichtbar ist, nichts mehr machen!
	if(	flashArea.childNodes[0].style.visibility=='') return 1;
	
	// entferne den Verstecktstatus
	flashArea.childNodes[0].style.visibility='';
	
	return 1;	
}


//*****************************************************************************
// setzt die Suchliste zurück und lässt den Button verschwinden
//*****************************************************************************
function searchRestBtn(restAreaId,inputId,inputText){
	// versteck den Rest-Button
	if(document.getElementById('esc_btn_area_'+restAreaId)!=null)
	document.getElementById('esc_btn_area_'+restAreaId).style.display='none';

	// greif dir die Ergebnissetabelle und verstecke
	if(document.getElementById(restAreaId)!=null)
	document.getElementById(restAreaId).style.display = 'none';
	
	// greif dir das Inputfeld und setze den Inhalt auf den Defaultwert
	if(document.getElementById(inputId)!=null){
		if(inputText!=null){
			document.getElementById(inputId).value=inputText;
		}else{
			document.getElementById(inputId).value='';
		}
	}
	unhideFlash('innerfleetmonDemo','fleetmonDemo');
	
	
	return 1;
}


//*****************************************************************************
//lässt den Restbutton wieder erscheinen
//*****************************************************************************
function showSearchRestBtn(areaId){
	// greif dir die Ergebnissetabelle und verstecke
	document.getElementById('esc_btn_area_'+areaId).style.display = '';
	return 1;
}












