/**
  * This methid is used to generate an infostructur array, which will be
  * renderd as a Form
  *
  * @param tx_languagevisibility_element $changeableElement
  * @param array $languageList
  * @param string $itemFormElName
  * @param boolean $isOverlay
  * @return unknown
  */
 function _getLanguageInfoStructurListForElementAndLanguageList($changeableElement, $languageList, $itemFormElName, $isOverlay)
 {
     $visibility = t3lib_div::makeInstance('tx_languagevisibility_visibilityService');
     $infosStruct = array();
     foreach ($languageList as $language) {
         $infoitem = array('visible' => $visibility->isVisible($language, $changeableElement), 'languageTitle' => $language->getTitle($this->pageId), 'languageFlag' => $language->getFlagImg($this->pageId), 'hasTranslation' => $changeableElement->hasTranslation($language->getUid()), 'isTranslation' => $isOverlay, 'isVisible' => $visibility->isVisible($language, $changeableElement), 'visibilityDescription' => $visibility->getVisibilityDescription($language, $changeableElement));
         //if there is no access to language - and localsettings exist, then do not show select box
         //this is to not be able as an translator to override languagesetting
         $currentSetting = $changeableElement->getLocalVisibilitySetting($language->getUid());
         $currentOptionsForUserAndLanguage = tx_languagevisibility_beservices::getAvailableOptionsForLanguage($language, $isOverlay, $changeableElement);
         if ($currentSetting == '' || isset($currentOptionsForUserAndLanguage[$currentSetting])) {
             if ($isOverlay) {
                 $defaultSelect = $changeableElement->getVisibilitySettingStoredInOverlayRecord($language->getUid());
                 $visibilityValue = $changeableElement->getVisibilitySettingStoredInDefaultRecord($language->getUid());
                 $visibilityString = $currentOptionsForUserAndLanguage[$visibilityValue];
             } else {
                 $defaultSelect = $changeableElement->getVisibilitySettingStoredInDefaultRecord($language->getUid());
                 $visibilityValue = $changeableElement->getVisibilitySettingStoredInOverlayRecord($language->getUid());
                 $visibilityString = $currentOptionsForUserAndLanguage[$visibilityValue];
             }
             if ($this->isNewElement && $defaultSelect == '') {
                 if ($this->modTSconfig['language.'][$language->getUid() . '.']['defaultVisibilityOnCreate'] != '') {
                     $defaultSelect = $this->modTSconfig['language.'][$language->getUid() . '.']['defaultVisibilityOnCreate'];
                 }
             }
             $selectBox = $this->_getSelectBox($language->getUid(), $currentOptionsForUserAndLanguage, $defaultSelect, $itemFormElName);
         } else {
             $selectBox = '<input type="hidden" name="' . $itemFormElName . '[' . $language->getUid() . ']" value="' . $currentSetting . '" ></input>(' . $currentSetting . ')';
         }
         if ($isOverlay) {
             $infoitem['overlayVisibility'] = $selectBox;
             $infoitem['originalVisibility'] = $visibilityString;
         } else {
             $infoitem['overlayVisibility'] = $visibilityString;
             $infoitem['originalVisibility'] = $selectBox;
         }
         $infosStruct[] = $infoitem;
     }
     return $infosStruct;
 }
 /**
  * This method is used to create an visibility array with the default settings
  * for all languages.
  *
  * @return array
  */
 public static function getDefaultVisibilityArray()
 {
     /* @var $languageRep tx_languagevisibility_languagerepository */
     $languageRep = t3lib_div::makeInstance('tx_languagevisibility_languagerepository');
     $languageList = $languageRep->getLanguages();
     $default = array();
     foreach ($languageList as $language) {
         $options = tx_languagevisibility_beservices::getAvailableOptionsForLanguage($language);
         $default[$language->getUid()] = array_shift(array_keys($options));
     }
     return $default;
 }