function formShowTab(key,hideKeys) { var tab = document.getElementById(key+'Tab'); var parent = tab.parentNode; var curItem = parent.firstChild; while(curItem != null) { curItem.className = ''; curItem = curItem.nextSibling; } tab.className = 'Active'; this.show(key,hideKeys); } function formShow(key,hideKeys) { if(hideKeys != undefined && hideKeys!='') { hideKeys = hideKeys.split(','); for(var i=0; i 1) return values.join(' AND '); else if(values.length == 1) return values[0]; else return false; } else if(type == 'radio') { var options = field.getElementsByTagName('input'); for(var i=0; i' + debugbar.innerHTML; } //alert(xmlhttp.responseText); eval(xmlhttp.responseText); } // process rest of queue url = FormObject.httpRequests.shift(); if(url != undefined) FormObject.httpExecRequest(url); else FormObject.httpRequestBusy = false; } } } } function formSetOptions(key,type,options,value,httpRequest,condition,params,settings,script) { var field = document.getElementById(key); if(field == undefined) alert('Failed to set options for '+key+'!'); field.innerHTML = ''; var style = ''; if(script == undefined) var script = ''; script = 'onclick="' + this.id + 'FormUpdate(\''+key+'\'); ' + script + '"'; var html = ''; var readOnly = ''; if(httpRequest==undefined) httpRequest=false; settings = this.getSettings(settings); if(settings['tabindex']) tabindex = 'tabindex="' + settings['tabindex'] + '"'; else tabindex = ''; if(!httpRequest) { for(var i=0; i' : '')+ ''+oLabel+ (settings['orientation'] == 'vertical' ? '' : ''); } else if(type == 'checkbox') { checked = ''; if(options.length>1) checked = (value.length && value.find(oValue)!=-1?'checked':''); else checked = (value==oValue?'checked':''); html += (settings['orientation'] == 'vertical' ? '
  • ' : '')+ ''+oLabel+ (settings['orientation'] == 'vertical' ? '
  • ' : ''); } } if(settings['orientation'] == 'vertical' && html != '') { html = '
      ' + html + '
    '; } if(html != '') { field.innerHTML = html; } } else { this.httpRequest(key,condition,params,'options') } } function formSetStyle(key,type,style) { var field = document.getElementById(key); styles = style.split(';'); for(i=0; i= 32 && code <=255) { return true; } else { return false; } } function formSetSearchResults(key,options,params,set) { this.debug('SetSearchResults('+key+','+options+','+params+','+set+');'); if(!set) { var condition = options; this.httpRequest(key,condition,params,'search'); } else { var table = ''; field = document.getElementById(key); dropdown = field.getElementsByTagName('div')[0]; if(options.length) { table = ''; dropdown.style.visibility = 'visible'; } else { dropdown.style.visibility = ''; } dropdown.innerHTML = table; } } function formSetHtmlField(key,settings) { settings = this.getSettings(settings); // init TinyMCE compressor /*tinyMCE_GZ.init({ plugins : 'table,save,advhr,advimage,advlink,iespell,insertdatetime,preview,zoom,searchreplace,print,paste,directionality,fullscreen,noneditable,contextmenu,layer,pagebreak,inlinepopups,spellchecker,template', themes : 'advanced', languages : 'en,nl', disk_cache : false, debug : false});*/ // init TinyMCE tinyMCE.init({ valid_elements : 'oa*[*],a[accesskey|charset|class|coords|dir', plugin_insertdate_dateFormat : '%d-%m-%Y', plugin_insertdate_timeFormat : '%H:%M:%S', spellchecker_languages : '+Nederlands=nl,Engels=en', template_external_list_url : this.httprequestUrl + 'method=templateList&reference='+settings['templatesRef'], file_browser_callback : this.object + '.htmlBrowse', width: '100%'}); this.debug(this.browserUrl); } function formHtmlBrowse(field_name, url, type, win) { this.debug("Field_Name: " + field_name + "\nURL: " + url + "\nType: " + type + "\nWin: " + win); if(type == 'image') typeParam = 'images'; else if(type =='file') typeParam = 'pages'; var cmsURL = this.browserUrl + '&method=html&type=' + typeParam + '&typeNames=' + typeParam; // script URL - use an absolute path! tinyMCE.activeEditor.windowManager.open({ file : cmsURL, title : 'Browse', width : 600, // Your dimensions may differ - toy around with them! height : 600, resizable : "yes", inline : "yes", // This parameter only has an effect if you use the inlinepopups plugin! close_previous : "no" }, { window : win, input : field_name }); return false; } function formSetBrowseField(key,type,value,previewValue) { if(key==undefined||key=='') return null; // get field var span = document.getElementById(key); var fields = span.getElementsByTagName('input'); var preview = span.getElementsByTagName('div')[0]; var field = fields[0]; var browse = fields[1]; var remove = fields[2]; // get value if(value==undefined) value = ''; if(value=='') remove.style.display = 'none'; // hide remove button else if(value!='') remove.style.display = ''; // display remove button // set field value field.value = value; this.debug('previewValue: ' + previewValue); // get browser type if(type==undefined) type = ''; preview.innerHTML = ''; // set preview if(value!='') { if(type == 'images') { var previewObj = document.createElement('img'); previewObj.src = this.imageUrl + value; preview.appendChild(previewObj); } else { if(previewValue==undefined) { this.httpRequest(key,'',key + '=' + value,'preview'); } else { preview.innerHTML = previewValue; } } } this.debug(key+'='+field.value); eval('browse.onclick = function(e) { window.open("' + this.browserUrl + '&method=' + this.object + '.setBrowseField(\'' + key + '\',\'' + type + '\',\'{PARAMS}\')&typeNames=' + type + '&type=' + type + '"); }'); eval('remove.onclick = function(e) { ' + this.object + '.setBrowseField("' + key + '","' + type + '",""); }'); eval(this.id + 'FormUpdate(\'' + key + '\')'); } function formSetDateField(key,settings) { settings = this.getSettings(settings); var field = document.getElementById(key); } function formFormat(key,format,reverse) { var field = document.getElementById(key); field.value = this.getFormattedValue(field.value,format,reverse); } function formGetFormattedValue(value,format,reverse) { if(reverse==undefined) reverse = false; // date format if(format == 'date') { // remove illegal characters value = value.replace(/[a-z]/gi,''); var d,m,y; // split day,month and year if(value.indexOf('-')!=-1) value = value.split('-'); else if(value.indexOf('/')!=-1) value = value.split('/'); else if(value.indexOf('.')!=-1) value = value.split('.'); if(!reverse) { if(value[0] > 31) { y = value[0]; m = value[1]; d = value[2]; } else { // get date format (dd-mm or mm-dd) if(value[0] <= 31 && value[1] <= 12) { d = value[0]; m = value[1]; } else { d = value[1]; m = value[0]; } // get date year if(value.length>2) { y = value[2]; if(y>50&&y<=99) y = parseInt(y) + 1900; else if(y<=50) y = parseInt(y) + 2000; } else { tmp = new Date(); y = tmp.getFullYear(); } } } else { d = value[0]; m = value[1]; y = value[2]; } //alert(d+'/'+m+'/'+y); // create new date object date = new Date(); date.setYear(y); date.setMonth((m - 1)); date.setDate(d); // check if date format is illegal after all if(!isNaN(date.getDate())) { // get day of week name //day = date.toLocaleString().slice(0,2); // set value if(reverse) return date.getFullYear()+'-'+(date.getMonth() + 1)+'-'+date.getDate(); else return date.getDate()+'-'+(date.getMonth() + 1)+'-'+date.getFullYear(); } else { return ''; } // integer } else if(format == 'integer') { // remove illegal characters value = value.toString(); value = parseInt(value.replace(/[^0-9]/gi,'')); if(!isNaN(value)) return value; else return ''; // float } else if(format.substring(0,5) == 'float') { var decimals = format.substring(5).replace(/[^0-9]/gi,''); if(decimals=='') decimals = 2; // remove illegal characters value = String(value); value = value.replace(/[^0-9\.,]/gi,''); // replace , with . value = value.replace(/\,/,'.'); // make float value = parseFloat(value); // round _decimals = (Math.pow(10,decimals)); value = Math.round(value*_decimals)/_decimals; if(reverse) { return value; } else { if(!isNaN(value)) { // replace .with , value = String(value); value = value.replace(/\./g,','); if(decimals > 0) { var i = value.indexOf(','); if(i==-1) { value += ','; n = decimals; } else { n = decimals - (value.length - i - 1); } //alert(decimals); for(i=0;i max) field.value = field.value.substring(0,max); } } } function formSetRequired(key,required) { var field = document.getElementById(key); if(required==undefined) required = true; //field.className = (required?'Form2Required':'Form2Text'); var label = this.getLabel(key); if (label) { label.className = (required?'Form2Required':''); var requiredText = this.rc['form.required']; var requiredSpanId = key + '__required'; if(required) { var requiredSpan = document.getElementById(requiredSpanId); if(requiredSpan == undefined) { requiredSpan = document.createElement('span'); requiredSpan.setAttribute('id',requiredSpanId); requiredSpan.innerHTML = requiredText; label.appendChild(requiredSpan); } } else { requiredSpan = document.getElementById(requiredSpanId); if(requiredSpan != undefined) label.removeChild(requiredSpan); } } } function formGetLabel(key) { with(this); labels = document.getElementsByTagName('label'); for(var i=0; i max) { this.setErrorMessage(key,type,this.rc['form.message.lengthmax'].replace('{max}',max)); return false; } } if(min != undefined) { min = parseInt(min); if(length < min) { this.setErrorMessage(key,type,this.rc['form.message.lengthmin'].replace('{min}',min)); return false; } } } this.setErrorMessage(key); return true; } // // helper functions // function formDebug(msg) { div = document.getElementById(this.object + 'formdebug'); if(div!=null) div.value = msg + '\n' + div.value; } Array.prototype.find = function (element) { for (var keys in this) { if (this[keys] == element) { return keys; break; } } return -1; }; /** * Converts 'param1: value1; param2: value2; etc..' to array('param1' => 'value1', 'param2' => 'value2', etc..) **/ function formGetSettings(settings) { var _settings = new Array(); if(settings != undefined) { settings = settings.split(';'); for(i=0; i1) { setting[0] = setting[0].replace(/^\s+|\s+$/g,""); // trim setting[1] = setting[1].replace(/^\s+|\s+$/g,""); _settings[setting[0]] = setting[1]; } } } return _settings; } function formRefresh() { // set refresh flag field = document.getElementById(this.id + 'refresh'); if(field != undefined) field.value = '1'; // submit form form = document.forms[this.name]; form.submit(); } /** * Form2 constructor * * @param string formName * @param string object * @param string httprequesthandler * @param string filehandler * @param string language ('nl','en') * @param string errorDisplay ('[field],[summary]') * @param bool debug **/ function Form2(id,name,object,httprequestUrl,uploadUrl,browserUrl,imageUrl,language,errorDisplay,debug) { // vars this.rc = new Array(); this.id = id; this.name = name; this.object = object; this.language = language; this.errorDisplay = errorDisplay; this.httprequestUrl = httprequestUrl; this.uploadUrl = uploadUrl; this.browserUrl = browserUrl; this.imageUrl = imageUrl; this.xmlhttp = null; this.httpRequests = []; this.httpRequestIndex = 0; this.httpRequestBusy = false; // methods this.showTab = formShowTab; this.show = formShow; this.hide = formHide; this.hideValueLabel = formHideValueLabel; this.showValueLabel = formShowValueLabel; this.getValue = formGetValue; this.setValue = formSetValue; this.httpRequest = formHttpRequest; this.httpSet = formHttpSet; this.httpQueueRequest = formHttpQueueRequest; this.httpExecRequest = formHttpExecRequest; this.setOptions = formSetOptions; this.setStyle = formSetStyle; this.setReadonly = formSetReadonly; this.setFileField = formSetFileField; this.setSearchField = formSetSearchField; this.setSearchResults = formSetSearchResults; this.setHtmlField = formSetHtmlField; this.htmlBrowse = formHtmlBrowse; this.setDateField = formSetDateField; this.setBrowseField = formSetBrowseField; this.format = formFormat; this.getFormattedValue = formGetFormattedValue; this.setLength = formSetLength; this.setRequired = formSetRequired; this.getLabel = formGetLabel; this.setErrorMessage = formSetErrorMessage; this.valRequired = formValRequired; this.valExpression = formValExpression; this.valRegex = formValRegex; this.valLength = formValLength; this.getSettings = formGetSettings; this.refresh = formRefresh; this.debug = formDebug; // init form error message container if(document.getElementById(this.name + 'Error') != undefined) { var formMsgContainer = document.getElementById(this.name + 'Error'); formMsgContainer.style.display = 'none'; } // create debug layer if(debug) document.write('
    Debug:
    '); }