102 lines
2.8 KiB
JavaScript
102 lines
2.8 KiB
JavaScript
if (typeof WebGUI == "undefined" || !WebGUI) {
|
|
var WebGUI = {};
|
|
}
|
|
|
|
WebGUI.FieldCheck = function (fieldId,fieldType,required) {
|
|
this.fieldId=fieldId;
|
|
this.fieldType=fieldType;
|
|
this.required=required;
|
|
var obj = this;
|
|
|
|
this.i18nObj = new WebGUI.i18n( {
|
|
namespaces : {
|
|
'Form' : ['field required']
|
|
},
|
|
onpreload : {
|
|
fn : this.initialize,
|
|
obj : this,
|
|
override : true
|
|
}
|
|
} );
|
|
this.i18n = function (key) {
|
|
return this.i18nObj.get('Form',key)
|
|
};
|
|
|
|
return this;
|
|
}
|
|
|
|
WebGUI.FieldCheck.prototype.initialize = function() {
|
|
var fieldId=this.fieldId;
|
|
var fieldType=this.fieldType;
|
|
var required=this.required;
|
|
var field=document.getElementById(fieldId);
|
|
var input=field.value;
|
|
|
|
var myAjaxEvent = new WebGUI.FieldCheck.AjaxEvent();
|
|
myAjaxEvent.startThrobber(fieldId);
|
|
|
|
if (required && !input) {
|
|
var imgEltId=fieldId+"_Img";
|
|
var imgElt=document.getElementById(imgEltId);
|
|
var extras = getWebguiProperty("extrasURL");
|
|
imgElt.setAttribute('src',extras+'/form/cross.png');
|
|
alert(this.i18n('field required'));
|
|
return false;
|
|
}
|
|
|
|
myAjaxEvent.connect(fieldId,'/?op=formHelper;sub=check;class='+fieldType+';input='+input);
|
|
}
|
|
|
|
WebGUI.FieldCheck.AjaxEvent = function() {
|
|
return this;
|
|
}
|
|
|
|
WebGUI.FieldCheck.AjaxEvent.prototype = {
|
|
extras: getWebguiProperty("extrasURL"),
|
|
startThrobber: function(fieldId) {
|
|
this.field = document.getElementById(fieldId);
|
|
var imgEltId=fieldId+"_Img";
|
|
var imgElt;
|
|
if(document.getElementById(imgEltId)==undefined){
|
|
var formElt=this.field.parentNode;
|
|
var imgElt=document.createElement('img');
|
|
imgElt.setAttribute('id',imgEltId);
|
|
WebGUI.FieldCheck.insertAfter(imgElt,this.field);
|
|
}else{
|
|
var imgElt=document.getElementById(imgEltId);
|
|
}
|
|
imgElt.setAttribute('src',this.extras+'/form/throbber.gif');
|
|
},
|
|
connect: function(fieldId,sUri) {
|
|
if (!sUri && !this.sUri) {
|
|
return false;
|
|
} else {
|
|
this.sUri = (!sUri) ? this.sUri : sUri;
|
|
var url = encodeURI(this.sUri);
|
|
YAHOO.util.Connect.asyncRequest('GET', url, {
|
|
success: function (o) {
|
|
var oJSON = eval("(" + o.responseText + ")");
|
|
var imgEltId=fieldId+"_Img";
|
|
var imgElt=document.getElementById(imgEltId);
|
|
document.getElementById(imgEltId);
|
|
if(oJSON.error == ""){
|
|
imgElt.setAttribute('src',this.extras+'/form/tick.png');
|
|
}else{
|
|
imgElt.setAttribute('src',this.extras+'/form/cross.png');
|
|
alert(oJSON.error);
|
|
}
|
|
},
|
|
scope: this
|
|
});
|
|
}
|
|
}
|
|
};
|
|
|
|
WebGUI.FieldCheck.insertAfter = function(newElement,targetElement) {
|
|
var parent = targetElement.parentNode;
|
|
if(parent.lastchild == targetElement) {
|
|
parent.appendChild(newElement);
|
|
}else{
|
|
parent.insertBefore(newElement, targetElement.nextSibling);
|
|
}
|
|
};
|