/****************************************************************/

/* SDFB Swiss Design Institute for Finance and Banking          */
/* Patrick A. Vuarnoz, Lukas Schwitter                          */
/* 2008                                                         */
/* http://www.sdfb.ch                                           */

/****************************************************************/


// emails -------------------------------------------------------
function mailto(inEmail) {
  location.href="mailto:" + reverse(inEmail);
}

function reverse(inText) {
  var outText = "";
  for (var i=inText.length-1; i>=0; i--) {
    outText+= inText.substr(i,1);;
  }
  return outText;
}


// form checking ------------------------------------------------
function formCheck(inFormId) {

  // Get form
  var formObj = document.getElementById(inFormId);
  
  // Init state
  var allowSubmit   = true;
  var radioCheckbox = [];
  
  // Loop over all fields
  for (var i=0; i<formObj.elements.length; i++) {
  
    // Check if that field is required
    if (formObj.elements[i].getAttribute("required") == 1) {
    
      // Switch by tag type
      switch (formObj.elements[i].tagName) {
      
        case "select": // Multiple select is not implemented
        case "SELECT":
          var selectedIndex = formObj.elements[i].options.selectedIndex;
          var selectedValue = formObj.elements[i].options[selectedIndex].value;
          allowSubmit &= (selectedValue.length > 0);
          break;
          
        case "input":
        case "INPUT":
          switch (formObj.elements[i].type) {
              
            case "checkbox":
            case "radio":
              // Create entry for radio / checkbox
              radioCheckbox[formObj.elements[i].name] = (radioCheckbox[formObj.elements[i].name])?(radioCheckbox[formObj.elements[i].name]):(false);
              
              // If checked, override value with true
              if (formObj.elements[i].checked) {
                radioCheckbox[formObj.elements[i].name] |= true;
              }
              break;
              
            case "file":
              break;
              
            case "text":
            case "hidden":
            case "submit":
            default:
              allowSubmit &= (formObj.elements[i].value.length > 0);
              break;
          }
          break;
          
        case "textarea":
        case "TEXTAREA":
        default:
          allowSubmit &= (formObj.elements[i].value.length > 0);
          break;
      }
    }
  }
  
  // Post-process radio / checkbox
  for (fieldName in radioCheckbox) {
    allowSubmit &= radioCheckbox[fieldName];
  }
  
  // Return result anyway
  return allowSubmit;
}


function formAutoCheck(inFormId, inObjectToEnable) {
  
  // Check if form still exists
  if (document.getElementById(inFormId) && document.getElementById(inObjectToEnable)) {
  
    // Check lock state
    var locked = document.getElementById(inFormId).getAttribute("locked");
    
    if (!locked) {
    
      // Enable / disable object
      document.getElementById(inObjectToEnable).disabled = !formCheck(inFormId);
    
      // Re-call self
      setTimeout("formAutoCheck('" + inFormId + "', '" + inObjectToEnable + "');", 50);
    }
  }
}


// picture change -----------------------------------------------
function pictureChange(inPicture, inFile, inAlt) {
	document.getElementById(inPicture).src = inFile;
	if (inAlt) {
		document.getElementById(inPicture).alt = inAlt;
	}
}

function nextPicture(inPicture, inPictureList) {

  // Find current picture
  var next = 0;
  for (var i=0; i<inPictureList.length; i++) {
    if (document.getElementById(inPicture).src.indexOf(inPictureList[i]["filename"])!=-1) {
      next = i+1;
    }  
  }
  
  // Adjust next
  next = (next >= inPictureList.length)?(0):(next);
  
  // Change picture
  pictureChange(inPicture, inPictureList[next]["filename"], inPictureList[next]["title"]);
  
  return next;
}

function hilightActivePictureLink(inPrefix, inCurrent, inNext) {
  document.getElementById(inPrefix + inCurrent).style.color = "";
  document.getElementById(inPrefix + inNext).style.color    = "#000000";
  
  return inNext;
}

function backgroundChange(inObj, inFile) {
  inObj.style.backgroundImage = "url(" + inFile + ")";
}

function filterChange(inObj, inFilter) {
  document.getElementById(inObj).style.filter = inFilter;
}

// change display -----------------------------------------------

function changeElementDisplay(inArrObjIds) {
   	for (var i = 0; i < inArrObjIds.length; i++) {
   		var obj = document.getElementById(inArrObjIds[i]);
   		if (obj.style.display == "block") {
			obj.style.display = "none";
		} else {
			obj.style.display = "block";
   		}
   	}   	
}

function hideElement(inArrObjIds) {
	for (var i = 0; i < inArrObjIds.length; i++) {
   		var obj = document.getElementById(inArrObjIds[i]);
		  if (obj) obj.style.display = "none";
   	}
}