// Licensed Materials - Property of IBM // // IBM Cognos Products: cpscrn // // (C) Copyright IBM Corp. 2005, 2011 // // US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. // // // Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved. // Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated). function processItem(cForm,lang,itemsArray,action,thefrag,pForm) { // Loop itemArray to create new hidden input items for (i=0; i < itemsArray.length; i++) { var item = itemsArray[i]+'-'+lang; switch(action) { case "create": { setHiddenItemValue(cForm,item,''); clearLangRemove(cForm, "removeLang", lang); setHiddenItemValue(cForm,cForm.name+'_changed','true'); break; } case "remove": { setHiddenItemValue(cForm,item,''); setLangRemove(cForm, "removeLang", lang); setHiddenItemValue(cForm,cForm.name+'_changed','true'); break; } } } } function setItemValue(cForm,item,sVal) { cForm.elements[item].value = sVal; } function getLanguageSelected(thefrag,sel) { var selector = $(thefrag + sel); return selector.options[selector.selectedIndex].value; } function setDisplayItem(cForm,thefrag,lang,itemsArray) { // Loop itemArray to set the display fields to the appropriate values for (i=0; i < itemsArray.length; i++) { displayItem = thefrag + itemsArray[i]; if(lang != '') { var item = itemsArray[i]+'-'+lang; var fItem = cForm.elements[item]; if(fItem) { setItemValue(cForm,displayItem,fItem.value); } document.getElementById(displayItem).disabled = false; } else { setItemValue(cForm,displayItem,lang); document.getElementById(displayItem).disabled = true; } } } function adjustSelection(thefrag,pForm,sel,itemsArray,action) { // Based on the create action, hidden fields will be created and display fields will be initialized to "" or if they already exist // the display fields will be populated with those values. The drop-down list is adjusted accordingly. // Based on the remove action, hidden fields are removed and the display fields and drop-down list adjusted accordingly. var cForm = _F_Form.find(thefrag + pForm); var selector = $(thefrag + sel); var curOption = selector.options[selector.selectedIndex]; var selectedLang = curOption.value; switch(action) { case "remove": { if (selectedLang != "-") { var sep = null; for (i=0; i <= selector.options.length;i++) { if ( i != selector.options.length ) { if (sep != null) { if (selector.options[i].text > curOption.text) { var insertPoint = selector.options[i]; selector.removeChild(curOption); selector.insertBefore(curOption,insertPoint); break; } } else if (selector.options[i].value == "-") { sep = selector.options[i]; } } else { selector.removeChild(curOption); selector.appendChild(curOption); break; } } processItem(cForm,selectedLang,itemsArray,action,thefrag,pForm); selector.options[0].selected=true; if (selector.options[0].value=="-") { setDisplayItem(cForm,thefrag,"",itemsArray); } else setDisplayItem(cForm,thefrag,selector.options[selector.selectedIndex].value,itemsArray); } break; } case "create": { var sep,i,j; var match=false; if(selectedLang == "-") { selector.options[0].selected=true; curOption = selector.options[0]; selectedLang = curOption.value; } for (i=0; i i) { processItem(cForm,selectedLang,itemsArray,action,thefrag,pForm); selector.removeChild(curOption); for (j=0; j curOption.text) { selector.insertBefore(curOption, selector.options[j]); selector.options[j].selected=true; match=true; break; } } if(!match) { selector.insertBefore(curOption, sep); selector.options[i].selected=true; } } if (selector.options[0].value!="-") { setDisplayItem(cForm,thefrag,selectedLang,itemsArray); } else { setDisplayItem(cForm,thefrag,"",itemsArray); } break; } default: { break; } } } function savelangitem(thefrag,pForm,sel,item) { // Populate the hidden fields will the values entered in those fields. var selectedLang = getLanguageSelected(thefrag,sel); var hItem = item.id.substr(thefrag.length) +'-'+ selectedLang; var cForm = _F_Form.find(thefrag + pForm); setHiddenItemValue(cForm,hItem,item.value); } function setLangRemove(cForm,itemId,lang) { var delimitedLang = lang + ";"; rElement = cForm.elements["removeLang"]; if(typeof rElement == 'undefined' || rElement == null) { rElement = setHiddenItemValue(cForm,"removeLang",''); } if( rElement.value.indexOf(delimitedLang) == -1 ) { rElement.value += delimitedLang; } } function clearLangRemove(cForm,itemId,lang) { var delimitedLang = lang + ";"; rElement = cForm.elements[itemId]; if(typeof rElement == 'undefined' || rElement == null) { rElement = setHiddenItemValue(cForm,itemId,''); } else { var sval = rElement.value; var sidx = sval.indexOf(delimitedLang); if( sidx > -1 ) { var zval = sval.substr(sidx + delimitedLang.length); if( sidx == 0 ) rElement.value = zval; else { var aval = sval.substring(0,sidx); rElement.value = aval + zval; } } } } function validateMultiLingualProperty(selectorName, propertyName, formName, theFrag, fragInst, itemList) { var cForm = _F_Form.find(theFrag + formName); var selector = $(theFrag + selectorName); var returnCode = 0; for (var index=0;index < selector.options.length;index++) { var currentOption = selector.options[index]; if (currentOption.value == '-') break; var languageSpecificPropertyName = propertyName + "-" + currentOption.value; var currentLanguageItem = cForm.elements[languageSpecificPropertyName]; //in the case there is no currentLanguage item this means that the drop down has //defaulted and no value has been typed in so no need to validate if (currentLanguageItem == null) return CValidator.RES_VALID var res = fragInst.validate(languageSpecificPropertyName, currentLanguageItem.value); returnCode = res; if (res != CValidator.RES_VALID) { currentOption.selected=true; adjustSelection(theFrag,formName,selectorName,itemList,"create"); return res; } } return returnCode; }