var Flow = new Object(); Flow = { init: function(){ //nop }, hasTriedToSubmit: false, getCode: function(){ //TODO }, selectPerso: function(el,fld){ var items = el.parentNode.getElementsByTagName("a"); for(var i = 0; i < items.length; i++){ items[i].className = "disabled"; } el.className = "selected"; //TODO: set value in a hidden input $(fld).value = el.id; fc.check(fld); }, /** * Add or change error message on object */ addError: function(element, options, crossArg){ if(Flow.hasTriedToSubmit){ Flow.setGlobalErrorStatus(false); } var element = $(element); element.addClass("error"); if(element.error == null){ //inititializing cross //if cross exists, just add 1 to the error count if(crossArg != null && crossArg.reference != null){ if(!crossArg.reference.isCrossed){ with(crossArg){ reference = $(reference); reference.isCrossed = 1; reference.cross = crossArg; //set the cross position if(alignment != 'left' && alignment != 'right') alignment = 'left'; var left = reference.getLeft(); if(alignment == 'right') left += reference.getSize().size.x + 20 else left -= 60 //init cross picture crossArg.pic = new Element('img',{ 'styles':{ 'position': 'absolute', 'top': reference.getTop() + 'px', 'left': left + 'px' }, 'src':'/templates/default/html/pictures/flow/flow_1_wrong.gif', 'title': 'error' }); } $(document.body).adopt(crossArg.pic); } else{ crossArg.reference.isCrossed++; } } //Add error class on title if(options.title != null) $(options.title).addClass("error"); //Add error message if(options.message != null){ var errorMsgEl = new Element('span',{'class': 'error'}); errorMsgEl.setText(' (' + options.message + ')'); element.adopt(errorMsgEl); } //add error class on input if(options.input != null) $(options.input).addClass("error"); element.error = { 'title': $(options.title), 'input': $(options.input), 'errorMsgCont': $(errorMsgEl), 'crossRefEl':$(crossArg.reference) }; } else{ //change the current error message if($defined(element.error.errorMsgCont)) element.error.errorMsgCont.setText(' (' + options.message + ')'); } return; }, /** * Remove error notification on an element */ removeError: function(element){ if(Flow.hasTriedToSubmit){ var count = 0; for(e in fc.errs) count++; if(count == 0) Flow.setGlobalErrorStatus(true); } element = $(element); if(element == null || element.error == null) return; if(element.error.crossRefEl){ element.error.crossRefEl.isCrossed--; if(element.error.crossRefEl.isCrossed < 1){ element.error.crossRefEl.cross.pic.setAttribute('src','/templates/default/html/pictures/flow/flow_1_right.gif'); if(element.error.title != null) element.error.title.removeClass("error"); } } if(element.error.input != null) element.error.input.removeClass('error'); if(element != null) element.removeClass('error'); if(element.error.errorMsgCont != null) element.error.errorMsgCont.remove(); try{ delete element.error; } catch(e){ element.error = null; } }, /** * Checks */ checkForm: function() { Flow.hasTriedToSubmit = true; var test = false; if(test = fc.checkAll()){ $('accountForm').submit(); } Flow.setGlobalErrorStatus(test); }, checkPerso: function(el){ var id = el.id; return ($(id).value.trim().length > 0); }, dispStatusPerso: function(el, status, msg, alignment, title, ref) { var label = $(el.id + '-label'); if(!status) { $(el).error = Flow.addError(label,{ 'title': title, 'input': $(el), 'message': msg }, { 'reference': (ref!=null)?$(ref):$(el), 'alignment': alignment } ) } else { Flow.removeError(label); } }, dispStatus: function(el, status, msg, alignment, title, ref){ if(!status) { $(el).error = Flow.addError($(el).getParent().getFirst(),{ 'title': title, 'input': $(el), 'message': msg }, { 'reference': (ref!=null)?$(ref):$(el), 'alignment': alignment } ) } else { Flow.removeError($(el).getParent().getFirst()); } }, checkAccountName: function(el, empty) { if(empty && el.value == "") return true; var pars = 'mode=ajax&name='+ el.value; var u = new Ajax("/skaaz/check_account.jsp", {data: pars, async: false}).request(); return (u.transport.responseText != 0); }, checkEmail: function(el, empty) { if(empty && el.value == "") return true; var pars = 'mode=ajax&name='+ el.value; var u = new Ajax("/skaaz/check_email.jsp", {data: pars, async: false}).request(); return (u.transport.responseText != 0); }, setGlobalErrorStatus: function(status){ if(status){ if($('submit-container').hasClass('errors')) $('submit-container').removeClass('errors'); if(!$('submit-container').hasClass('noerrors')) $('submit-container').addClass('noerrors'); } else{ if(!$('submit-container').hasClass('errors')) $('submit-container').addClass('errors'); if($('submit-container').hasClass('noerrors')) $('submit-container').removeClass('noerrors'); } }, changeLanguage: function(choice, languageID) { var items = choice.parentNode.getElementsByTagName("a"); for(i = 0; i < items.length; i++){ items[i].className = 'off'; } $('account.languageID').value = languageID; choice.className = 'on'; } }