// Hilfsarrays
dsReviewSteps = new Array();
dsReviewSteps[1] = 'Reviewtyp auswählen';
dsReviewSteps[2] = 'Künstler & Medium auswählen';
dsReviewSteps[1] = 'Reviewtyp auswählen';
dsReviewSteps[1] = 'Reviewtyp auswählen';
dsReviewSteps[1] = 'Reviewtyp auswählen';
dsReviewSteps[1] = 'Reviewtyp auswählen';
dsReviewSteps[1] = 'Reviewtyp auswählen';

// AJAX-Funktionen
function AJAXGetData(table)
{
  var param = document.getElementById('dsChoose').value;
  if(param == '') {
    clearSelect();
  } else {
    loadXMLDoc('xml/data.php?t=' + table + '&p=' + param);
  }
}

function loadXMLDoc(url) 
{
  // branch for native XMLHttpRequest object
  if(window.XMLHttpRequest) {
    req = new XMLHttpRequest();
    req.onreadystatechange = processReqChange;
    req.open("GET", url, true);
    req.send(null);
  // branch for IE/Windows ActiveX version
  } else if(window.ActiveXObject) {
    req = new ActiveXObject("Microsoft.XMLHTTP");
    if(req) {
      req.onreadystatechange = processReqChange;
      req.open("GET", url, true);
      req.send();
    }
  }
}

function processReqChange() 
{
  // only if req shows "complete"
  if(req.readyState == 4) {
    // only if "OK"
    if(req.status == 200) {
      xml = req.responseXML;
      fillSelect(xml);
    } else {
     alert("Fehler beim Abrufen der XML-Daten:\n" + req.status);
    }
  }
}

function fillSelect(xml)
{
  var select = document.getElementById('dsList');
  var items  = xml.getElementsByTagName('item');
  
  // wenn schon Einträge vorhanden -> löschen
  clearSelect('dsList');
  
  // mit Einträgen befüllen
  var i = 0;
  while(i < items.length) {
    OPTION          = document.createElement('option');
    VALUE           = document.createAttribute('value');
    VALUE.nodeValue = items[i].getAttribute('id');
    OPTION.setAttributeNode(VALUE);
    TEXT            = document.createTextNode(items[i].getAttribute('text'));
    OPTION.appendChild(TEXT);
    
    select.appendChild(OPTION);
    
    i++;
  }
}

function AJAXInsertData(table, id)
{
  var selected = document.getElementById(id).selectedIndex;
  param = document.getElementById(id).childNodes[selected].getAttribute('value');
  loadXMLDoc2('xml/data.php?t=' + table + '&p=' + param);
}

function loadXMLDoc2(url) 
{
  // branch for native XMLHttpRequest object
  if(window.XMLHttpRequest) {
    req = new XMLHttpRequest();
    req.onreadystatechange = processReqChange2;
    req.open("GET", url, true);
    req.send(null);
  // branch for IE/Windows ActiveX version
  } else if(window.ActiveXObject) {
    req = new ActiveXObject("Microsoft.XMLHTTP");
    if(req) {
      req.onreadystatechange = processReqChange2;
      req.open("GET", url, true);
      req.send();
    }
  }
}

function processReqChange2() 
{
  // only if req shows "complete"
  if(req.readyState == 4) {
    // only if "OK"
    if(req.status == 200) {
      xml = req.responseXML;
      fillSelect2(xml);
    } else {
     alert("Fehler beim Abrufen der XML-Daten:\n" + req.status);
    }
  }
}

function fillSelect2(xml)
{
  var select = document.getElementById('xmedium');
  var items  = xml.getElementsByTagName('item');
  
  // wenn schon Einträge vorhanden -> löschen
  clearSelect('xmedium');
  
  // mit Einträgen befüllen
  var i = 0;
  while(i < items.length) {
    OPTION          = document.createElement('option');
    VALUE           = document.createAttribute('value');
    VALUE.nodeValue = items[i].getAttribute('id');
    OPTION.setAttributeNode(VALUE);
    TEXT            = document.createTextNode(items[i].getAttribute('text'));
    OPTION.appendChild(TEXT);
    
    select.appendChild(OPTION);
    
    i++;
  }
}

function AJAXGetSingleData(table, param)
{
  loadXMLDoc3('xml/data.php?t=' + table + '&p=' + param);
}

function loadXMLDoc3(url) 
{
  // branch for native XMLHttpRequest object
  if(window.XMLHttpRequest) {
    req = new XMLHttpRequest();
    req.onreadystatechange = processReqChange3;
    req.open("GET", url, true);
    req.send(null);
  // branch for IE/Windows ActiveX version
  } else if(window.ActiveXObject) {
    req = new ActiveXObject("Microsoft.XMLHTTP");
    if(req) {
      req.onreadystatechange = processReqChange3;
      req.open("GET", url, true);
      req.send();
    }
  }
}

function processReqChange3() 
{
  // only if req shows "complete"
  if(req.readyState == 4) {
    // only if "OK"
    if(req.status == 200) {
      xml = req.responseXML;
      fillSelect3(xml);
    } else {
     alert("Fehler beim Abrufen der XML-Daten:\n" + req.status);
    }
  }
}

function fillSelect3(xml)
{
  var select = document.getElementById('eveid');
  var items  = xml.getElementsByTagName('item');
  
  // wenn schon Einträge vorhanden -> löschen
  clearSelect('eveid');
  
  // mit Einträgen befüllen
  var i = 0;
  while(i < items.length) {
    OPTION          = document.createElement('option');
    VALUE           = document.createAttribute('value');
    VALUE.nodeValue = items[i].getAttribute('id');
    OPTION.setAttributeNode(VALUE);
    TEXT            = document.createTextNode(items[i].getAttribute('text'));
    OPTION.appendChild(TEXT);
    
    select.appendChild(OPTION);
    
    i++;
  }
}

function AJAXGetImages(module)
{
  loadXMLDoc4('xml/data.php?t=images&p=' + module);
}

function loadXMLDoc4(url) 
{
  // branch for native XMLHttpRequest object
  if(window.XMLHttpRequest) {
    req = new XMLHttpRequest();
    req.onreadystatechange = processReqChange4;
    req.open("GET", url, true);
    req.send(null);
  // branch for IE/Windows ActiveX version
  } else if(window.ActiveXObject) {
    req = new ActiveXObject("Microsoft.XMLHTTP");
    if(req) {
      req.onreadystatechange = processReqChange4;
      req.open("GET", url, true);
      req.send();
    }
  }
}

function processReqChange4() 
{
  // only if req shows "complete"
  if(req.readyState == 4) {
    // only if "OK"
    if(req.status == 200) {
      xml = req.responseXML;
      fillSelect4(xml);
    } else {
     alert("Fehler beim Abrufen der XML-Daten:\n" + req.status);
    }
  }
}

function fillSelect4(xml)
{
  var select = document.getElementById('bilder');
  var items  = xml.getElementsByTagName('item');
  
  // wenn schon Einträge vorhanden -> löschen
  clearSelect('bilder');
  
  // mit Einträgen befüllen
  bilder = new Array();
  
  var i = 0;
  while(i < items.length) {
    OPTION          = document.createElement('option');
    VALUE           = document.createAttribute('value');
    VALUE.nodeValue = items[i].getAttribute('id');
    OPTION.setAttributeNode(VALUE);
    TEXT            = document.createTextNode(items[i].getAttribute('text'));
    OPTION.appendChild(TEXT);
    
    select.appendChild(OPTION);
    
    
    bilder[i]     = new Image();
    bilder[i].src = 'images/upload/' + items[i].getAttribute('text');
    
    i++;
  }
}

function AJAXDeleteImage(file)
{
  loadXMLDoc5('xml/data.php?t=image&p=' + file);
}

function loadXMLDoc5(url) 
{
  // branch for native XMLHttpRequest object
  if(window.XMLHttpRequest) {
    req = new XMLHttpRequest();
    req.onreadystatechange = processReqChange5;
    req.open("GET", url, true);
    req.send(null);
  // branch for IE/Windows ActiveX version
  } else if(window.ActiveXObject) {
    req = new ActiveXObject("Microsoft.XMLHTTP");
    if(req) {
      req.onreadystatechange = processReqChange5;
      req.open("GET", url, true);
      req.send();
    }
  }
}

function processReqChange5() 
{
  // only if req shows "complete"
  if(req.readyState == 4) {
    // only if "OK"
    if(req.status == 200) {
      xml = req.responseXML;
      fillSelect5(xml);
    } else {
     alert("Fehler beim Abrufen der XML-Daten:\n" + req.status);
    }
  }
}

function fillSelect5(xml)
{
  var status  = xml.getElementsByTagName('item')[0].getAttribute('text');
  
  if(status == 'notexist') {
    alert('Zu löschendes Bild existiert nicht mehr...');
  } else if(status == 'success') {
    alert('Bild erfolgreich gelöscht...'); 
  } else {
    alert('Bild konnte nicht gelöscht werden...')
  }
}

function clearSelect(select)
{
  var select = document.getElementById(select);
  var c = select.childNodes.length;
  while(c > 0) {
    select.removeChild(select.childNodes[c-1]);
    c--;  
  } 
}

function shift(id)
{
  var selectLeft  = document.getElementById(id);
  var selectRight = document.getElementById('dsList');
  var selected = selectRight.selectedIndex;
  
  if(selected != -1) {
    // Überprüfen, ob Eintrag bereits zugeordnet
    var selectedId = selectRight.childNodes[selected].getAttribute('value');
    var o           = 0;
    var inSelection = false;
    while(o < selectLeft.childNodes.length) {
      if(selectLeft.childNodes[o].getAttribute('value') == selectedId) {
        inSelection = true;
      }
      o++;
    }
    if(inSelection == true) {
      alert('Eintrag ist bereits zugeordnet...');
    } else {
      var option = selectRight.childNodes[selected].cloneNode(true);
      selectLeft.appendChild(option);
      if(document.getElementById('text')) {
        markBands(option.firstChild.nodeValue);
      }
    }
  } else {
    alert('Keinen Eintrag für Zuordnung ausgewählt...');
  }
}

function markBands(name)
{
  // Land in Klammern entfernen - wenn vorhanden
  var bracket = name.indexOf('(');
  if(bracket != -1) {
    name = name.substring(0, bracket - 1);
  }
  
  var text    = document.getElementById('text').value;
  if(text != '') {
    var suchtext = new RegExp(name, 'g');
    var newtext = text.replace(suchtext, '#' + name + '#'); 
    document.getElementById('text').value = newtext;
  }
}

function unmarkBands(name)
{
  
}

function unshift(id)
{
  var select   = document.getElementById(id);
  var selected = select.selectedIndex;
  
  if(selected != -1) {
    select.removeChild(select.childNodes[selected]);
  } else {
    alert('Keinen Eintrag zum Entfernen ausgewählt...');
  }
}

function up(id)
{
  var select   = document.getElementById(id);
  var selected = select.selectedIndex;
  
  if(selected != -1) {
    if(selected != 0) {
      var orig = select.childNodes[selected].cloneNode(true);
      select.insertBefore(orig, select.childNodes[selected - 1])
      select.removeChild(select.childNodes[selected + 1]);
      
      var aorig = bilder[selected];
      bilder[selected] = bilder[selected - 1];
      bilder[selected - 1] = aorig;
    } else {
      alert('Der erste Eintrag kann nicht hochgeschoben werden...');
    }    
  } else {
    alert('Keinen Eintrag zum Hochschieben ausgewählt...');
  }
}

function down(id)
{
  var select   = document.getElementById(id);
  var selected = select.selectedIndex;
  
  if(selected != -1) {
    if(selected != (select.childNodes.length - 1)) {
      var orig = select.childNodes[selected + 1].cloneNode(true);
      select.insertBefore(orig, select.childNodes[selected])
      select.removeChild(select.childNodes[selected + 2]);
      
      var aorig = bilder[selected + 1];
      bilder[selected + 1] = bilder[selected];
      bilder[selected] = aorig;
    } else {
      alert('Der letzte Eintrag kann nicht runtergeschoben werden...');
    }    
  } else {
    alert('Keinen Eintrag zum Runterschieben ausgewählt...');
  }
}

function remove(id, module)
{
  var select   = document.getElementById(id);
  var selected = select.selectedIndex;
  
  if(selected != -1) {
    var file     = select.childNodes[selected].text;
    deleteImage(file, module);
  } else {
    alert('Keinen Eintrag zum Löschen ausgewählt...')
  }  
}

function stepBack()
{
  var step = document.getElementById('s');
  if(step.value > 1) {
    var newstep = parseInt(step.value) - 1;
    var span    = document.getElementById('dsStepCount');
    span.removeChild(span.childNodes[0]);
    
    showElement('dsStep' + step.value);
    
    TEXT        = document.createTextNode(newstep + ': ' + dsReviewSteps[newstep]); 
    span.appendChild(TEXT);
    step.value = newstep;    
    
    showElement('dsStep' + newstep);    
  }
}

function stepForward()
{
  var step = document.getElementById('s');
  var max  = document.getElementById('max');
  if(step.value < max.value) {
    var newstep = parseInt(step.value) + 1;
    var span    = document.getElementById('dsStepCount');
    span.removeChild(span.childNodes[0]);
    
    showElement('dsStep' + step.value);
    
    TEXT        = document.createTextNode(newstep + ': ' + dsReviewSteps[newstep]); 
    span.appendChild(TEXT);
    step.value = newstep;
    
    showElement('dsStep' + newstep);    
  }
}

function formSubmit(formid)
{
  var form    = document.getElementById(formid);
  if(formid != 'frmUpload') {
    var selects = document.getElementsByTagName('select');
    
    var s = 0;
    while(s < selects.length) {
      var selectId = selects[s].getAttribute('id');
      if(((selectId.substr(0, 1) == 'x') || (selectId == 'bilder') || (selectId == 'artid')) && (selectId != 'xmedium')) {
        var options = selects[s].childNodes;
        var o       = 0;
        var values  = new Array();
        
        while(o < options.length) {
          values[o] = options[o].getAttribute('value');
          o++;
        }
        
        HIDDEN = document.createElement('input');
        TYPE   = document.createAttribute('type');
        TYPE.nodeValue = 'hidden';
        HIDDEN.setAttributeNode(TYPE);
        NAME   = document.createAttribute('name');
        NAME.nodeValue = selectId;
        HIDDEN.setAttributeNode(NAME);
        VALUE  = document.createAttribute('value');
        VALUE.nodeValue = values.join(',');
        HIDDEN.setAttributeNode(VALUE);
      
        selects[s].parentNode.removeChild(selects[s]);
        form.appendChild(HIDDEN);
      }
      s++;
    }
  }
  
  form.submit();
}

function showElement(id)
{
  elem = document.getElementById(id);
  vis  = elem.style.visibility;

  if((vis == '') || (vis == 'hidden')) {
    elem.style.visibility = 'visible';
    elem.style.display    = 'block';
  } else {
    elem.style.visibility = 'hidden';
    elem.style.display    = 'none';
  }
}

function newwin(url)
{
  var newwin = window.open(url, 'new', 'width=600,height=475');
  return true;
}

function swapPoints(type)
{
  var temp = document.getElementById('dsReviewAdd').getElementsByTagName('tbody')[0];
  if(type == 0) { // Punkte ausblenden -> TR löschen
    if(document.getElementById('dsReviewAddPoints')) {
      if(temp.lastChild.nodeType == 1) {
        dsPunkte = temp.lastChild.cloneNode(true);
        temp.removeChild(temp.lastChild);      
      } else {
        temp.removeChild(temp.lastChild);
        dsPunkte = temp.lastChild.cloneNode(true);
        temp.removeChild(temp.lastChild); 
      }
    }
  } else { // Punkte wieder einblenden -> TR hinzufügen
    if(!document.getElementById('dsReviewAddPoints')) {
      temp.appendChild(dsPunkte);
    }
  }
}

function checkSize(value)
{
  var SPAN = document.getElementById('dsMediumWidth');
  
  if(value == 7) { // DVD
    SPAN.firstChild.nodeValue = '94';
  } else if(value == 8) { // Video
    SPAN.firstChild.nodeValue = '78';
  } else {
    SPAN.firstChild.nodeValue = '125';
  }
}

function checkDate(field)
{
  if(typeof field == 'object') {
    date = field.value;
  } else {
    date = field;
  }
    
  if(date != "")
  {
    if(date.indexOf('.') != -1)
    {
      dates = date.split(".");
    }
    else
    {
      dates = date.split("/");
    }
    
    if((dates.length < 2) || (dates.length > 3))
    {
      alert("Ungültige Datumsangabe - zu wenig oder zu viele Bestandteile!\n\nAls Trennzeichen können Sie den Punkt (.) oder den Schrägstrich (/) verwenden.");
      //field.focus();
      return false;
    }
    
    datum = new Date();
    
    if(dates.length == 2)
    {
      dates[2] = String(datum.getFullYear());
    }
    
    if((dates[0] < 0) || (dates[0] > 31))
    {
      alert("Ungültige Datumsangabe - Tag nicht zwischen 0 und 31.");
      //field.focus();
      return false;
    }
    
    if((dates[1] < 0) || (dates[1] > 12))
    {
      alert("Ungültige Datumsangabe - Monat nicht zwischen 0 und 12.");
      //field.focus();
      return false;
    }
    
    if((dates[2].length != 2) && (dates[2].length != 4))
    {
      alert("Ungültige Datumsangabe - Jahr nicht zwei- oder vierstellig.");
      //field.focus();
      return false;
    }
    
    if(dates[0].length == 1)
    {
      dates[0] = "0" + dates[0]
    }
    
    if(dates[1].length == 1)
    {
      dates[1] = "0" + dates[1]
    }
    
    if(dates[2].length == 2)
    {
      if(("20" + dates[2]) <= datum.getFullYear())
      {
        dates[2] = "20" + dates[2];
      }
      else
      {
        dates[2] = "19" + dates[2];
      }
    }
    
    if(typeof field == 'object') {
      field.value = dates.join(".");
    } else {
      return dates.join(".");
    }
  }
}

function popUp(file, folder)
{
  window.open('popup.php?file=' + file + '&folder=' + folder, 'dsPopUp', 'width=800,height=700');
}

function getEvents(date)
{
  var validDate = /^\d{2}\.\d{2}\.\d{4}$/;
  
  if(validDate.test(date)) {
    AJAXGetSingleData('konzert', date);
  } else {
    return false;
  }
}

function uploadImage(module)
{
  document.getElementById('frmUpload').target = 'upload_target';
  formSubmit('frmUpload');
  document.getElementById('image').value = "";
  window.setTimeout('getImages("' + module + '")', 2000);
}

function deleteImage(file, module)
{
  AJAXDeleteImage(file);
  window.setTimeout('getImages("' + module + '")', 2000);
}

function getImages(module)
{
  AJAXGetImages(module);
}

function showImage()
{
  var select   = document.getElementById('bilder');
  var selected = select.selectedIndex;
  
  document.getElementById('dsDummyImage').src = bilder[selected].src;
  if (bilder[selected].width == bilder[selected].height) {
    document.getElementById('dsDummyImage').style.width  = '210px';
    document.getElementById('dsDummyImage').style.height = '210px';
  } else if (bilder[selected].width > bilder[selected].height) {
    document.getElementById('dsDummyImage').style.width  = '210px';
    document.getElementById('dsDummyImage').style.height = '140px';
  } else {    
    document.getElementById('dsDummyImage').style.width  = '140px';
    document.getElementById('dsDummyImage').style.height = '210px';
  }
}
