//functie om alle checkboxen binnen een bepaald element aan te vinken
function selectAllCheckboxes(listDiv) {
	var listDiv2 = document.getElementById(listDiv);
	var allBoxes = listDiv2.getElementsByTagName('input');
	
	for(var i = 0; i < allBoxes.length; i++) {
		if(allBoxes[i].type == 'checkbox') {
			allBoxes[i].checked = true;
		}
	}
	
	var selecter1 = document.getElementById(listDiv+'Selecter1');
	selecter1.onclick = function(){unselectAllCheckboxes(listDiv)};
	var selecter2 = document.getElementById(listDiv+'Selecter2');
	selecter2.onclick = function(){unselectAllCheckboxes(listDiv)};
	
}

//functie om alle checkboxen binnen een bepaald element uit te vinken
function unselectAllCheckboxes(listDiv) {
	var listDiv2 = document.getElementById(listDiv);
	var allBoxes = listDiv2.getElementsByTagName('input');
	
	for(var i = 0; i < allBoxes.length; i++) {
		if(allBoxes[i].type == 'checkbox') {
			allBoxes[i].checked = false;
		}
	}
	
	var selecter1 = document.getElementById(listDiv+'Selecter1');
	selecter1.onclick = function(){selectAllCheckboxes(listDiv)};
	var selecter2 = document.getElementById(listDiv+'Selecter2');
	selecter2.onclick = function(){selectAllCheckboxes(listDiv)};
	
}

//functie om een div te tonen/verbergen
function toggleVisibility(divToToggle, setCookie) {
	if(setCookie != "false") setCookie = "true";	
	
	var thisDiv = document.getElementById(divToToggle);
	var thisImage = document.getElementById(divToToggle+'Toggler');
	
	var thisDivStyle = (document.layers)?thisDiv:thisDiv.style;
	
	var divStatus = "hidden";
	
	if (thisDivStyle.display == 'none') {
		thisDivStyle.display = '';
		thisImage.src = wwwroot + '/images/icons/hide_grey_icon.gif';
		divStatus = "shown";
	}
	else {
		thisDivStyle.display = 'none';
		thisImage.src = wwwroot + '/images/icons/show_grey_icon.gif';
	}
	
	if(setCookie == "true") {
		//cookie wordt geplaatst om de status van deze div te onthouden
		document.cookie = divToToggle + "=" + divStatus + ";" + "path=" + wwwroot + "/;";
	}
}

//functie
function toggleConditionally(divToToggle, defaultClosed) {
	if(defaultClosed != "true") defaultClosed = "false";	
	
	var thisDiv = document.getElementById(divToToggle);
	var thisDivStyle = (document.layers)?thisDiv:thisDiv.style;
	var currentlyHidden = thisDivStyle == 'none';
	
	//cookie ophalen
	var cookie = getCookie(divToToggle);

	//als cookie er is doen wat cookie zegt
	if(cookie) { 
		if((cookie == "shown" && currentlyHidden) || (cookie == "hidden" && !currentlyHidden)) toggleVisibility(divToToggle, "false");
	}
	//als cookie er niet is checken wat de huidige status is
	//als huidige status afwijkt van defaultValue dan togglen
	else {
		if((defaultClosed == "true" && !currentlyHidden) || (!defaultClosed == "false" && currentlyHidden)) toggleVisibility(divToToggle, "false");
	}	
}

function getCookie(cookieName) {
   var start = document.cookie.indexOf(cookieName + "=");
   var len = start + cookieName.length + 1;
   if((!start) && (cookieName != document.cookie.substring(0, cookieName.length))) return null;
   if (start == -1) return null;
   var end = document.cookie.indexOf(';', len);
	if(end == -1) end = document.cookie.length;
	return unescape(document.cookie.substring(len, end));
}

function preloadImage(image) {
  preload_image = new Image(25,25); 
  preload_image.src = wwwroot + "/uploaded_images/" + image;
}

//functie om te checken of alle verplichte velden zijn ingevuld in een formulier
function checkRequired(frm, fields, i0) {
  // This function is given a list of fieldnames or fieldname specifications
  // For all fieldnames specified, it checks whether the named form field
  // has nonempty contents. It returns a list of titles (or names if no
  // title is available) of all empty fields, for reporting to the user.
  // Notes:
  // - Groups of fields with the same name are treated as one, and count as
  //   nonempty if any one of them is nonempty.
  // - In a fieldname specification, the strings '[any]' and '[all]' stand
  //   for arbitrary bracket-enclosed hash indexes. In the first case,
  //   only a single field matching the fieldname specification is required
  //   to be nonempty, in the latter case all such fields are.
  var i, j, k, inputName, el;
  var missing = new Array();
  // Group all form fields by name
  var elementsByName = new Object;
  for (k=0; k<frm.elements.length; k++) {
    el = frm.elements[k];
    if (!elementsByName[el.name]) {
      elementsByName[el.name] = new Array;
    }
    elementsByName[el.name][elementsByName[el.name].length] = el;
  }
  for(i=i0; i<fields.length; i++) {
    var inputName0 = fields[i];
    // Collect all fieldnames matching inputName0
    var inputNames = new Array();
    var checkAll = false;
    if (elementsByName[inputName0]) {
      inputNames[0] = inputName0;
    } else if (inputName0.match(/\[(all|any)\]/)) {
      // The field does not exist as such, but the inputName0 specified
      // is a pattern rather than a literal name
      checkAll = inputName0.match(/\[all\]/);
      var inputNamePattern = new RegExp('^'
          +inputName0.replace(/([\\^$*+?.{}()|\[\]])/g, '\\$1')
          .replace(/\\\[(all|any)\\\]/gi, '\\[[^\\[\\]]*\\]')+'$');
      var useDefaultChecked = false;
      var inputNameDefault;
      for (inputName in elementsByName) {
        if (inputName.match(inputNamePattern)) {
          if (inputName.match(/\[default\]/)) {
            // This is a default input field, only relevant if some
            // other input field has its useDefault checkbox checked
            inputNameDefault = inputName;
            continue;
          }
          if (inputName.match(/\[variantContents\]/)) {
            useDefaultCheckbox = frm[
                inputName.replace(/\[variantContents\]/, '[useDefault]')];
            if (useDefaultCheckbox) {
              if (useDefaultCheckbox.checked) {
                // This input field has its useDefault checkbox checked
                useDefaultChecked = true;
                continue;
              }
            }
          }
          inputNames[inputNames.length] = inputName;
        }
      }
      if (useDefaultChecked && inputNameDefault) {
        // Add the default input field because some other
        // input field has its useDefault checkbox checked
        inputNames[inputNames.length] = inputNameDefault;
      }
    }

    if (inputNames.length==0) {
      window.alert("Checking for nonexisting field '" + inputName0  + "'\n"
          + "(programming error?)");
    } else {
      // Check any/all form fields for nonempty contents
      for(j=0; j<inputNames.length; j++) {
        inputName = inputNames[j];
        var els = elementsByName[inputName];
        for(k=0; k<els.length; k++) {
          if (!isEmpty(els[k])) {
            break;
          }
        }
        if (k<els.length) {
          // At least one input field with this name is nonempty
          if (checkAll) {
            continue; // check others matching this inputName0
          } else {
            break; // we are done with this inputName0
          }
        }
        if (checkAll || j==inputNames.length-1) {
          el = els[0];
          var inputLongName;
          // Report a nonempty form field
          if (typeof(el.title)!='undefined' && el.title.match(/\S/)) {
            inputLongName = el.title;
          } else if (el.length && el[0] && typeof(el[0].title)!='undefined'
              && el[0].title.match(/\S/)) {
            inputLongName = el[0].title;
          } else if (checkAll) {
            inputLongName = inputName
                .replace(/\[variantContents\].*/, '')
                .replace(/\[\]/, '');
          } else {
            inputLongName = inputName
                .replace(/Variants\[.*\]\[variantContents\].*/, '')
                .replace(/\[\]/, '');
          }
          // push() doesn't work in Mac/IE
          missing[missing.length]=inputLongName;
        }
      }
    }
  }
  return missing;
}

function checkForm() {
  // This routine performs all actions necessary before submitting a form,
  // including tranferring all contentEditable DIV's to HIDDEN form inputs
  // and checking for required fields.
  // Syntax: checkForm(formvar, 'requiredField1', 'requiredField2', ...)
  // The form parameter usually gets value 'this', and can be omitted if
  // the form in question is named 'editform'.

  var frm;
  var i0=0;
  if (typeof(arguments[0]) != "object") {
    frm = document.forms["edit"];
  } else {
    frm = arguments[0];
    i0 = 1;
  }
  var missing = checkRequired(frm, arguments, i0);
  if (missing.length>0) {
    if (missing.length>1) {
      if (typeof(langNoValuesEnteredWarning)  == 'undefined') {
        langNoValuesEnteredWarning =
            'You didn\'t enter any values for the following fields';
      }
      window.alert(langNoValuesEnteredWarning + ': ' + missing.join(", "));
    } else {
      if (typeof(langNoValueEnteredWarning)  == 'undefined') {
        langNoValueEnteredWarning = 
            'You didn\'t enter a value for the field';
      }
      window.alert(langNoValueEnteredWarning + ': ' + missing[0]);
    }
    return false;
  }
  return true;
}


//////////////////////////////////add_record//////////////////////////////
function add_record() {
  nr_cds = document.getElementById("recordCds");

  if (document.edit.recordType[0].checked) {
  	nr_cds.disabled = true;
  }
  else {
  	nr_cds.disabled = false;
  }

}

//////////////////////////////////new_label//////////////////////////////
function new_label() {
	newLabel = document.getElementById("newLabel");
	recordLabel = document.getElementById("recordLabel");
	recordLabelNew = document.getElementById("recordLabelNew");
  if (newLabel.checked) {
  	recordLabel.disabled = true;
  	recordLabelNew.disabled = false;
  }
  else {
  	recordLabel.disabled = false;
  	recordLabelNew.disabled = true;
  }
}

//////////////////////////////////new_writer//////////////////////////////
function new_writer() {
	newWriter = document.getElementById("newWriter");
	songWriter = document.getElementById("songWriter");
	songWriterNew = document.getElementById("songWriterNew");
  if (newWriter.checked) {
  	songWriter.disabled = true;
  	songWriterNew.disabled = false;
  }
  else {
  	songWriter.disabled = false;
  	songWriterNew.disabled = true;
  }
}

//////////////////////////////////new_artist//////////////////////////////
function new_artist() {
	newArtist = document.getElementById("newArtist");
	recordArtist = document.getElementById("recordArtist");
	recordArtistNew = document.getElementById("recordArtistNew");
  if (newArtist.checked) {
  	recordArtist.disabled = true;
  	recordArtistNew.disabled = false;
  }
  else {
  	recordArtist.disabled = false;
  	recordArtistNew.disabled = true;
  }
}
