


var NDB_CSS = "/css/ndb.css";
var NDB_CONTAINER;

var NDB_CAT_ID = 'navigation5';
var NDB_RESULT_ID = 'ndb_result';
var NDB_CURRENT_CAT = -1;
var NDB_CURRENT_FILTER = -1;

var NDB_CURRENT_DATA = null;

var NDB_STRINGS = {de: {
                         man: 'Mann',
                         woman: 'Frau',
                         child: 'Kind',
                         foreign: 'Fremdsprache',
                         all: 'Alle',
                         AF: 'A-F',
                         GL: 'G-L',
                         MN: 'M-N',
                         OQ: 'O-Q',
                         RS: 'R-S',
                         TZ: 'T-Z'
                       },
                    
                   en: {
                         man: 'man',
                         woman: 'woman',
                         child: 'child',
                         foreign: 'foreign language',
                         all: 'all',
                         AF: 'A-F',
                         GL: 'G-L',
                         MN: 'M-N',
                         OQ: 'O-Q',
                         RS: 'R-S',
                         TZ: 'T-Z'
                       }
                   }      
var NDB_CATEGORIES = [
                      {
                        name: "man",
                        caption: "man",
                        query: "man",
                        filter: [
                                  { name: "AF",
                                    caption : "AF",
                                    query: "A-F"
                                  },
                                  { name: "GL",
                                    caption : "GL",
                                    query: "G-L"
                                  },
                                  { name: "MN",
                                    caption : "MN",
                                    query: "M-N"
                                  },
                                  { name: "OQ",
                                    caption : "OQ",
                                    query: "O-Q"
                                  },
                                  { name: "RS",
                                    caption : "RS",
                                    query: "R-S"
                                  },                                
                                  { name: "TZ",
                                    caption : "TZ",
                                    query: "T-Z"
                                  },       
                                  { name: "all",
                                    caption : "all",
                                    query: "all"
                                  }                                                              
                                ]
                      },
                      {
                        name: "woman",
                        caption: "woman",
                        query: "woman",
                        filter: [
                                   { name: "AF",
                                    caption : "AF",
                                    query: "A-F"
                                  },
                                  { name: "GL",
                                    caption : "GL",
                                    query: "G-L"
                                  },
                                  { name: "MN",
                                    caption : "MN",
                                    query: "M-N"
                                  },
                                  { name: "OQ",
                                    caption : "OQ",
                                    query: "O-Q"
                                  },
                                  { name: "RS",
                                    caption : "RS",
                                    query: "R-S"
                                  },                                
                                  { name: "TZ",
                                    caption : "TZ",
                                    query: "T-Z"
                                  },
                                  { name: "all",
                                    caption : "all",
                                    query: "all"
                                  }                                  
                                ]
                      },
                      {
                        name: "child",
                        caption: "child",
                        query: "child",                        
                        filter: [
                                  { name: "all",
                                    caption : "all",
                                    query: "all"
                                  }                                   
                                ]
                      },
                      {
                        name: "foreign",
                        caption: "foreign",
                        query: "foreign",
                        filter: [
                                  { name: "all",
                                    caption : "all",
                                    query: "all"
                                  }                                    
                                ]
                      }
                     ];

var NDB_CONFIG;
var NDB_PLAYING_ID = -1;

var NDB_PSTRINGS;

init( document.getElementById('ndb') );


var myListener = new Object();
                
myListener.onInit = function() {

};
myListener.onUpdate = function() {
  
  if( this.isPlaying != "true" ) {
    hide_playing_icon();
  }

}

function set_category( i ) {
  
  // aktuelle Category zurücksetzen
  
  if( NDB_CURRENT_CAT > -1 ) {
    var id = NDB_CONFIG[NDB_CURRENT_CAT].name;
    var el = document.getElementById( id ).parentNode;
    el.className = "";
  }
  
  id = NDB_CONFIG[ i ].name;
  var el = document.getElementById( id ).parentNode;
  el.className = "current";
  
  create_filter( i );
  
  NDB_CURRENT_CAT = i;
  set_filter( 0 );

}

function set_filter( i ) {
  
  player_stop();
  hide_playing_icon();
  
  // aktuellen Filter zurücksetzen
  
  if( NDB_CURRENT_FILTER > -1 ) {
    var id = NDB_CONFIG[NDB_CURRENT_CAT].filter[NDB_CURRENT_FILTER].name;
    var el = document.getElementById( id ).parentNode;
    el.className = "";
  }
  
  id = NDB_CONFIG[NDB_CURRENT_CAT].filter[ i ].name;
  var el = document.getElementById( id ).parentNode;
  el.className = "current";
  

  
  
  NDB_CURRENT_FILTER = i;
  
  query();

}

function show_query_response( data ) {

  if( NDB_CURRENT_DATA != null ) {
    NDB_CONTAINER.removeChild(document.getElementById( NDB_RESULT_ID ));
    NDB_CURRENT_DATA = null;
  }
  
  var container = document.createElement("div");
  container.id = NDB_RESULT_ID;
  
  var table = document.createElement("table");
  container.appendChild( table );
  
  var tbody = document.createElement("tbody");
  table.appendChild( tbody );
  var i;
 
  for( i=0;i<data.length;i++ ) {
    
    var id        = data[i].getElementsByTagName('id')[0].firstChild.nodeValue; 
    var name      = data[i].getElementsByTagName('name')[0].firstChild.nodeValue;
    var firstname = data[i].getElementsByTagName('firstname')[0].firstChild.nodeValue;
    var filename  = data[i].getElementsByTagName('filename')[0].firstChild.nodeValue;
    var languages  = data[i].getElementsByTagName('languages')[0].firstChild.nodeValue;
    
    var tr = document.createElement("tr");

    // Spalte: Icon
    var td = document.createElement("td");
    td.className = 'icon';
    
    tr.appendChild( td );
    var icon = document.createElement("img");
    icon.src = "/images/sound.gif";
    icon.alt = "playing";
    icon.id  = "playing_icon_" + i;
    icon.className="hidden";
    
    td.appendChild( icon );
        
    // Spalte: Name
    var td = document.createElement("td");
    tr.appendChild( td );
    
    var text = document.createTextNode( firstname + ' ' + name );
    td.appendChild( text );
    
    
    
    

    // Spalte: Sprachen
    if( NDB_CONFIG[NDB_CURRENT_CAT].name == 'foreign' ) {
      var td = document.createElement("td");
      tr.appendChild( td );
    
      var text = document.createTextNode( languages );
      td.appendChild( text );
    }
    
    // Spalte: Control
    td = document.createElement("td");
    tr.appendChild( td );
    
    var btn_play = document.createElement("img");
    btn_play.src = "/images/control_play.gif";
    btn_play.className="control";
    btn_play.alt = "play";
    btn_play.index = i;
    btn_play.filename = filename;
    btn_play.onclick = function() {
      player_play( this.index, this.filename );
    }
    var btn_stop= document.createElement("img");
    btn_stop.className="control";
    btn_stop.src = "/images/control_stop.gif";
    btn_stop.alt = "stop";
    btn_stop.filename = filename;
    btn_stop.onclick = function() {
      player_stop();
    }
   
    td.appendChild( btn_play );
    td.appendChild( btn_stop );    
     
    
    tbody.appendChild(tr);
  }
  
  
   
  NDB_CONTAINER.insertBefore( container,document.getElementById( 'ndb_filter' ).nextSibling );
	
	

  NDB_CURRENT_DATA = data;
  
  
}

function show_playing_icon( i ) {
  
  hide_playing_icon();

  var img = document.getElementById( 'playing_icon_' + i );
  img.className= '';
  
  NDB_PLAYING_ID = i;
}

function hide_playing_icon() {
  if( NDB_PLAYING_ID != -1 ) {

    var img = document.getElementById( 'playing_icon_' + NDB_PLAYING_ID );
    img.className= 'hidden';
    
    NDB_PLAYING_ID = -1;

  }
  
}



function query() {
  
  var category = NDB_CONFIG[ NDB_CURRENT_CAT ].query;
  var filter   = NDB_CONFIG[ NDB_CURRENT_CAT ].filter[ NDB_CURRENT_FILTER ].query;
  
  var query_str = "category=" + category + "&filter=" + filter + "&cd=" + Math.random();
  
  ndb_ajax('/ndb_query?' +query_str);
		  
}

function ndb_ajax_response() {

		if (http_request.readyState == 4) {

    	if (http_request.status == 200) {

        // alert( http_request.responseText );
      	var xmldoc = http_request.responseXML;
				var root_node = xmldoc.getElementsByTagName('ndb_query').item(0);

				var event = root_node.getElementsByTagName("event")[0].firstChild.nodeValue;
				var status = root_node.getElementsByTagName("status")[0].firstChild.nodeValue;
								
				switch (event) {
					case "ndb_query": {
					  var data = root_node.getElementsByTagName("data");
					  
					  show_query_response( data );
					}
				}
												
			}
    	else {
          alert('Request-Error');
    	}
    }
}

function init( container,language ) {
  
  var fo = new FlashObject("/flash/player_mp3_js.swf", "myFlash", "1","1","9","#FFFFFF");
	fo.addVariable("listener", "myListener");
  fo.addVariable("interval", "500");

	fo.write("player");

	
  NDB_CONTAINER = container;
  NDB_CONFIG = eval( NDB_CATEGORIES );
  NDB_PSTRINGS = eval( NDB_STRINGS );
  
  load_css();
  
  NDB_CONTAINER.appendChild( create_categories() );
  
  set_category( 0 );

}

function create_categories() {

  var container = document.createElement("div");
  container.id = NDB_CAT_ID;
  
  var ul= document.createElement("ul");
  container.appendChild(ul);
  
  var i;
  for( i=0;i<NDB_CONFIG.length;i++ ) {
    var li = document.createElement("li");
    
    var a = document.createElement("a");
    a.style.cursor="pointer";
    a.id = NDB_CONFIG[i].name;
    a.cat_id = i;
    a.onclick = function() {
      set_category( this.cat_id );
    }
    
    li.appendChild( a );
    
    
    var caption = document.createTextNode( get_string(NDB_CONFIG[i].caption ) );
    a.appendChild( caption );
    
    ul.appendChild(li);
  }
  
  return container;
  
}

function create_filter( i ) {
  
  if( NDB_CURRENT_CAT > -1 ) {
    NDB_CONTAINER.removeChild(document.getElementById('ndb_filter'));
    NDB_CURRENT_FILTER = -1;
  };
  
  var filter = NDB_CONFIG[i].filter;

  var container = document.createElement("div");
  container.id = 'ndb_filter';
  
  var ul= document.createElement("ul");
  container.appendChild(ul);
  
  var i;
  for( i=0;i<filter.length;i++ ) {
    var li = document.createElement("li");
    
    var a = document.createElement("a");
    a.style.cursor="pointer";
    a.id = filter[i].name;
    a.filter_id = i;
    a.onclick = function() {
      set_filter( this.filter_id );
    }
    
    li.appendChild( a );
    
    
    var caption = document.createTextNode( get_string(filter[i].caption) );
    a.appendChild( caption );
    
    ul.appendChild(li);
  }
  
  
  NDB_CONTAINER.insertBefore( container,document.getElementById( NDB_CAT_ID ) . nextSibling);
  return container;
}



function load_css(){
  // for IEs: use createStyleSheet method
  
  if(document.createStyleSheet) {document.createStyleSheet(NDB_CSS); }

  
    // do it "manually" for all others
  else{
    var objStyle = document.createElement("style");
    var objText = document.createTextNode('@import url(' +NDB_CSS+ ') screen;');
    objStyle.appendChild(objText);
    document.getElementsByTagName("head")[0].appendChild(objStyle);
  }
}


function ndb_ajax(task) {
		var rval = null;
 		if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
                // zu dieser Zeile siehe weiter unten
            }
    } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
    }

		if (!http_request) {
    	alert('Could not create XMLHTTP-Object');
      return false;
    }
    
    rval = http_request;
    http_request.onreadystatechange = ndb_ajax_response;
    http_request.open('GET', task, true);
    http_request.send(null);	
    
    return rval;
}


function get_string( name  ) {

  return NDB_PSTRINGS[APP_LANGUAGE][name];
}
function getFlashObject()
{
  return document.getElementById("myFlash");
}

function player_play( i, filename )
{
  
  show_playing_icon( i );
  
  var url = "http://www.sunshinemastering.com/ndb_files/" + filename; 

  getFlashObject().SetVariable("method:setUrl", url);
  getFlashObject().SetVariable("method:setVolume", 100);
  getFlashObject().SetVariable("method:play", "");
  getFlashObject().SetVariable("enabled", "true");
}

function player_pause()
{
  getFlashObject().SetVariable("method:pause", "");
}

function player_stop()
{
  hide_playing_icon();
  getFlashObject().SetVariable("method:stop", "");
}
function player_setPosition( position)
{
  getFlashObject().SetVariable("method:setPosition", position);
}

function player_setVolume( volume )
{
  getFlashObject().SetVariable("method:setVolume", volume);
}




