/***

    Form Builder 2.4.1
    A web-based Web Form Builder. 

    Build $Thu, 19 Apr 2007 14:56:11 UTC$

    Copyright (c) 2007 Veer West LLC <cedric@veerwest.com>.
    All Rights Reserved - do not reuse without permission.
    For licensing information visit: http://www.formassembly.com/about-form-builder.php 

***/
var Builder={};
Builder.NAME="Form Builder";
Builder.VERSION="2.4.1";
Builder.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
Builder.toString=function(){
return this.__repr__();
};
if(typeof BuilderConfig=="undefined"){
alert("Configuration file not loaded.\nPlease make sure to include config/form-builder-config.js in your page.");
}
var preferences={alwaysUpdatePreview:false,startTab:"tabHelp"};
Builder.isSaved=true;
var formId=null;
Freja.AssetManager.HTTP_METHOD_TUNNEL=null;
Freja.AssetManager.XSLT_SERVICE_URL=BuilderConfig.XSLT_SERVICE_URL;
var view_form_properties=getView("xsl/form_properties.xsl");
var view_field_properties=getView("xsl/field_properties.xsl");
var view_field_adv_properties=getView("xsl/field_adv_properties.xsl");
var view_fieldset_properties=getView("xsl/fieldset_properties.xsl");
var view_fieldset_adv_properties=getView("xsl/fieldset_adv_properties.xsl");
var view_form_preview=getView("xsl/preview.xsl");
var field_template=getModel("xml/tmpl_field.xml");
var fieldset_template=getModel("xml/tmpl_fieldset.xml");
var fieldchoices_template=getModel("xml/tmpl_listchoices.xml");
var form=getModel(getFormURL());
var ids=new Array();
var formOutline=null;
helpers=wFORMS.helpers;
wFORMS.helpers.removeEvent(window,"load",wFORMS.onLoadHandler);
wFORMS.onLoadHandler=null;
wFORMS.functionName_formValidation="postBack";
wFORMS.preserveRadioName=false;
wFORMS.runValidationOnPageNext=false;
wFORMS.debugLevel=0;
function init(){
enableTabs();
enableToolbar();
showPreviewUpdatedNotice();
if(formOutline&&!formOutline.element){
var p=document.getElementById("placeholder_summary");
if(p){
p.innerHTML="";
formOutline.render("placeholder_summary");
}
}
window.onbeforeunload=confirmExit;
}
function initForm(){
ids=getIds(form.document);
formOutline=hXUL.AssetManager.createTreeView("formOutline",[],form);
formOutline.onselect=editFormElement;
formOutline.onreorder=reorderForm;
formOutline.onexpand=expandSection;
formOutline.oncollapse=collapseSection;
var p=document.getElementById("placeholder_summary");
if(p){
p.innerHTML="";
formOutline.render("placeholder_summary");
}
}
window.onload=init;
Freja._aux.connect(form,"onload",initForm);
function getFormURL(){
var _3=window.location.search;
if(_3.indexOf(BuilderConfig.POST_FIELDNAME_ID+"=")!=-1){
formId=_3.split(BuilderConfig.POST_FIELDNAME_ID+"=")[1].split("&")[0];
var _4=BuilderConfig.DATABASE_SERVICE_URL+"?"+BuilderConfig.POST_FIELDNAME_ID+"="+formId;
if(_3.indexOf("template=")!=-1){
_4+="&template="+_3.split("template=")[1].split("&")[0];
}else{
_4+="&template=1";
}
}else{
if(_3.indexOf("demo=")!=-1){
var _5=_3.split("demo=")[1].split("&")[0];
var _4="xml/tmpl_form_demo"+_5+".xml";
}else{
var _4="xml/tmpl_form.xml";
}
}
return _4;
}
function enableToolbar(){
document.getElementById("addField").onclick=addField;
document.getElementById("addFieldset").onclick=addFieldset;
document.getElementById("addPredefined").onclick=addPredefined;
document.getElementById("form:css").onchange=changeStylesheet;
document.getElementById("topToolBarForm").onsubmit=postBack;
}
function enableTabs(){
document.getElementById("tabPreview").onclick=switchTab;
document.getElementById("tabProperties").onclick=switchTab;
document.getElementById("tabAdvProperties").onclick=switchTab;
document.getElementById("tabHelp").onclick=switchTab;
switchTab(preferences.startTab);
}
function switchTab(e){
resetTabs();
if(typeof e=="string"){
tab=document.getElementById(e);
}else{
tab=helpers.getSourceElement(e);
}
if(tab.tagName=="IMG"){
tab=tab.parentNode;
}
if(!helpers.hasClass(tab,"selected")){
tab.className=tab.className+" selected";
}
switch(tab.id){
case "tabPreview":
document.getElementById("previewPanel").style.display="block";
break;
case "tabProperties":
document.getElementById("placeholder_properties").style.display="block";
break;
case "tabAdvProperties":
document.getElementById("placeholder_advproperties").style.display="block";
break;
case "tabHelp":
document.getElementById("placeholder_help").style.display="block";
break;
}
return helpers.preventEvent(e);
}
function resetTabs(){
document.getElementById("previewPanel").style.display="none";
document.getElementById("placeholder_properties").style.display="none";
document.getElementById("placeholder_advproperties").style.display="none";
document.getElementById("placeholder_help").style.display="none";
document.getElementById("tabPreview").className=document.getElementById("tabPreview").className.replace("selected","");
document.getElementById("tabProperties").className=document.getElementById("tabProperties").className.replace("selected","");
document.getElementById("tabAdvProperties").className=document.getElementById("tabAdvProperties").className.replace("selected","");
document.getElementById("tabHelp").className=document.getElementById("tabHelp").className.replace("selected","");
}
function enableTab(id){
document.getElementById(id).style.display="inline";
}
function disableTab(id){
document.getElementById(id).style.display="none";
}
function addFormPropertiesBehaviors(){
wFORMS.addBehaviors(document.getElementById("placeholder_properties"));
}
Freja._aux.connect(view_form_properties,"onrendercomplete",addFormPropertiesBehaviors);
function addFieldPropertiesBehaviors(){
wFORMS.addBehaviors("placeholder_properties");
helpers.addEvent(document.getElementById("field:type"),"change",addListChoices);
helpers.addEvent(document.getElementById("cancelAction"),"click",cancelEdit);
}
Freja._aux.connect(view_field_properties,"onrendercomplete",addFieldPropertiesBehaviors);
function addFieldsetPropertiesBehaviors(){
wFORMS.addBehaviors("placeholder_properties");
helpers.addEvent(document.getElementById("cancelAction"),"click",cancelEdit);
}
Freja._aux.connect(view_fieldset_properties,"onrendercomplete",addFieldsetPropertiesBehaviors);
function addAdvancedPropertiesBehaviors(){
wFORMS.addBehaviors("placeholder_advproperties");
}
Freja._aux.connect(view_fieldset_adv_properties,"onrendercomplete",addAdvancedPropertiesBehaviors);
Freja._aux.connect(view_field_adv_properties,"onrendercomplete",addAdvancedPropertiesBehaviors);
function editFormElement(_9){
if(extractId(_9.id)=="form"){
var _a="FORM";
}else{
if(_9.id=="trash"){
var _a="";
}else{
var _b=form.getElementById(extractId(_9.id));
var _a=_b.tagName.toUpperCase();
}
}
switch(_a){
case "FORM":
editForm();
break;
case "FIELD":
editField(_b.getAttribute("id"));
break;
case "FIELDSET":
editFieldset(_b.getAttribute("id"));
break;
case "HTMLSECTION":
editHTMLSection(_b.getAttribute("id"));
break;
}
}
function reorderForm(_c,_d,_e,_f){
var s=form.getElementById(extractId(_c.id));
if(s&&_d.id=="trash"){
if(window.confirm("Are you sure you want to delete this selection?")){
deleteFormElement(s);
Builder.isSaved=false;
}else{
formOutline.refresh(form);
}
return;
}
if(s&&_d.id=="copier"){
if(window.confirm("Do you want to duplicate your selection?")){
duplicateFormElement(s);
Builder.isSaved=false;
}else{
formOutline.refresh(form);
}
return;
}
if(s&&_d.id=="form"){
var d=form.document.documentElement;
}else{
var d=form.getElementById(extractId(_d.id));
}
if(d){
switch(_e){
case "insertBefore":
d.parentNode.insertBefore(s,d);
break;
case "insertAfter":
d.parentNode.insertBefore(s,d.nextSibling);
break;
case "insertInside":
d.appendChild(s);
break;
}
Builder.isSaved=false;
}else{
formOutline.refresh(form);
}
updatePreview();
}
function expandSection(_12){
if(_12.id!="form"){
var _13=form.getElementById(extractId(_12.id));
_13.setAttribute("treeview","");
}
}
function collapseSection(_14){
if(_14.id!="form"){
var _15=form.getElementById(extractId(_14.id));
_15.setAttribute("treeview","collapse");
}
}
function changeStylesheet(e){
var css=this.options[this.selectedIndex].value;
var _18=document.getElementById("form_preview");
if(_18){
_18.className=css;
}
form.document.documentElement.setAttribute("css",css);
Builder.isSaved=false;
}
function showPreviewUpdatedNotice(){
var _19="";
_19+="<p style='text-align:center'><input type='button' id='updatePreviewButton' value='Update Preview' />";
_19+="<br/><br/>";
_19+="<input type='checkbox' value='1' id='alwaysUpdatePreviewCbx' "+(preferences.alwaysUpdatePreview?"checked='checked":"")+" style='vertical-align:bottom' />";
_19+="<label for='alwaysUpdatePreviewCbx'>always update the preview</label>";
document.getElementById("placeholder_preview").innerHTML=_19;
document.getElementById("updatePreviewButton").onclick=function(){
updatePreview(true);
};
document.getElementById("alwaysUpdatePreviewCbx").onclick=function(){
preferences.alwaysUpdatePreview=document.getElementById("alwaysUpdatePreviewCbx").checked;
};
}
function updatePreview(_1a){
switchTab("tabPreview");
if(preferences.alwaysUpdatePreview||_1a==true){
view_form_preview.render(form,"placeholder_preview");
}else{
showPreviewUpdatedNotice();
}
}
function addFormPreviewBehaviors(){
wFORMS.addBehaviors(document.getElementById("placeholder_preview"));
if(!form.document.documentElement.getAttribute("css")){
form.document.documentElement.setAttribute("css","antique");
var _1b=document.getElementById("form_preview");
if(_1b){
_1b.className="antique";
}
}
}
Freja._aux.connect(view_form_preview,"onrendercomplete",addFormPreviewBehaviors);
function editForm(){
switchTab("tabProperties");
disableTab("tabAdvProperties");
view_form_properties.render(form,"placeholder_properties");
}
function addField(e,_1d){
if(!_1d){
_1d=field_template;
}
var p=getInsertPoint();
if(p.insertType=="inside"){
_1d=p.insertPoint.appendChild(importModel(form,_1d));
}else{
_1d=p.insertPoint.parentNode.insertBefore(importModel(form,_1d),p.insertPoint.nextSibling);
}
var id=helpers.randomId();
_1d.setAttribute("id",id);
formOutline.refresh(form);
formOutline.select(id,true);
editField(id);
return id;
}
function editField(id){
view_field_properties.render(form,"placeholder_properties",{fieldId:id});
view_field_adv_properties.render(form,"placeholder_advproperties",{fieldId:id});
switchTab("tabProperties");
enableTab("tabAdvProperties");
}
function addFieldset(e,_22){
if(!_22){
_22=fieldset_template;
}
var p=getInsertPoint();
if(p.insertType=="inside"){
_22=p.insertPoint.appendChild(importModel(form,_22));
}else{
_22=p.insertPoint.parentNode.insertBefore(importModel(form,_22),p.insertPoint.nextSibling);
}
var id=helpers.randomId();
_22.setAttribute("id",id);
var cn=_22.getElementsByTagName("*");
for(var i=0;i<cn.length;i++){
if(cn[i].tagName.toUpperCase()=="FIELD"||cn[i].tagName.toUpperCase()=="FIELDSET"){
var _27=cn[i].getAttribute("id");
if(isTempId(_27)){
cn[i].setAttribute("id",idify(helpers.randomId()));
}
}
}
formOutline.refresh(form);
formOutline.select(id,true);
editFieldset(id);
return id;
}
function editFieldset(id){
switchTab("tabProperties");
enableTab("tabAdvProperties");
view_fieldset_properties.render(form,"placeholder_properties",{fieldId:id});
view_fieldset_adv_properties.render(form,"placeholder_advproperties",{fieldId:id});
}
function addListChoices(e){
var _2a=helpers.getSourceElement(e);
var _2b=_2a.options[_2a.selectedIndex].value;
var _2c=_2a.form;
if(_2b=="radio"||_2b=="checkbox"||_2b=="select1"||_2b=="select"){
form.updateFrom(view_field_properties);
var _2d=document.getElementById("nodeId").value;
var n=form.getElementById(_2d);
var cn=n.getElementsByTagName("choices")[0];
if(!cn){
if(typeof form.document.importNode!="undefined"){
n.appendChild(form.document.importNode(fieldchoices_template.document.documentElement,true));
}else{
n.appendChild((fieldchoices_template.document.documentElement).cloneNode(true));
}
}
view_field_properties.render(form,"placeholder_properties",{fieldId:_2d});
}
}
function addPredefined(e){
var ps=document.getElementById("predefinedSelect");
var url=ps.options[ps.selectedIndex].value;
if(url!=""){
var _33=null;
for(var i=0;i<Freja.AssetManager.models.length;i++){
if(Freja.AssetManager.models[i].url=="xml/predefined/"+url){
_33=Freja.AssetManager.models[i];
break;
}
}
if(!_33){
_33=getModel("xml/predefined/"+url);
Freja._aux.connect(_33,"onload",function(e){
if(_33.document.documentElement.tagName.toUpperCase()=="FIELDSET"){
addFieldset(null,_33);
}else{
addField(null,_33);
}
});
}else{
if(_33.document.documentElement.tagName.toUpperCase()=="FIELDSET"){
addFieldset(null,_33);
}else{
addField(null,_33);
}
}
}
}
function duplicateFormElement(_36){
var id=_36.getAttribute("id");
var _38=_36.cloneNode(true);
id=idify(id.replace("wf_",""));
_38.setAttribute("id",id);
var _39=_38.getElementsByTagName("*");
for(var i=0;i<_39.length;i++){
var cid=_39[i].getAttribute("id");
if(cid){
_39[i].setAttribute("id",idify(cid.replace("wf_","")));
}
}
var _3c=_36.parentNode;
_3c.insertBefore(_38,_36.nextSibling);
formOutline.refresh(form);
updatePreview();
return id;
}
function deleteFormElement(_3d){
if(typeof _3d=="string"){
var n=form.getElementById(_3d);
}else{
n=_3d;
}
if(n){
n.parentNode.removeChild(n);
formOutline.refresh(form);
updatePreview();
}
}
function cancelEdit(){
document.getElementById("placeholder_properties").innerHTML="";
document.getElementById("placeholder_advproperties").innerHTML="";
switchTab("tabPreview");
}
function getInsertPoint(){
var _3f=formOutline.getSelected();
if(_3f){
var _40=form.getElementById(extractId(_3f.id));
if(_40){
if(_40.tagName=="fieldset"){
return {insertPoint:_40,insertType:"inside"};
}else{
return {insertPoint:_40,insertType:"after"};
}
}
}
var _40=form.document.documentElement.lastChild;
while(_40&&_40.nodeType==3){
_40=_40.previousSibling;
}
return {insertPoint:_40,insertType:"after"};
}
function postBack(e){
if(wf.formValidation(e)){
var _42=helpers.getSourceElement(e);
switch(_42.id){
case "edit_properties_form":
form.updateFrom(view_form_properties);
var _43=form.document.documentElement.getElementsByTagName("action")[1];
if(document.getElementById("includeCancelYes").checked){
if(_43){
_43.setAttribute("label",document.getElementById("formSecondaryAction").value);
}else{
var _43=form.document.createElement("action");
_43=form.document.documentElement.appendChild(_43);
_43.setAttribute("level","secondary");
_43.setAttribute("type","cancel");
_43.setAttribute("label",document.getElementById("formSecondaryAction").value);
}
}else{
if(_43){
_43.parentNode.removeChild(_43);
}
}
Builder.isSaved=false;
break;
case "edit_properties_field":
form.updateFrom(view_field_properties);
updateListOfChoices();
var _44=document.getElementById("nodeId").value;
if(isTempId(_44)){
var _45=form.get("//field[@id='"+_44+"']/label");
form.set("//field[@id='"+_44+"']/@id",idify(_45));
}
Builder.isSaved=false;
break;
case "edit_adv_properties_field":
form.updateFrom(view_field_adv_properties);
Builder.isSaved=false;
break;
case "edit_properties_fieldset":
form.updateFrom(view_fieldset_properties);
var _46=document.getElementById("nodeId").value;
if((_46)){
var _47=form.get("//fieldset[@id='"+_46+"']/@name");
form.set("//fieldset[@id='"+_46+"']/@id",idify(_47));
}
Builder.isSaved=false;
break;
case "edit_adv_properties_fieldset":
form.updateFrom(view_fieldset_adv_properties);
Builder.isSaved=false;
break;
case "topToolBarForm":
saveForm();
return helpers.preventEvent(e);
break;
case BuilderConfig.REGISTER_FORM_ID:
ajaxRegistration(e,_42);
return helpers.preventEvent(e);
break;
case BuilderConfig.LOGIN_FORM_ID:
ajaxLogin(e,_42);
return helpers.preventEvent(e);
break;
}
formOutline.refresh(form);
updatePreview();
}
return helpers.preventEvent(e);
}
function updateListOfChoices(){
var _48=document.getElementById("nodeId").value;
var _49=form.getElementById(_48);
var _4a=_49.getAttribute("type");
if(_4a=="radio"||_4a=="checkbox"||_4a=="select1"||_4a=="select"){
_49.setAttribute("validation","");
var ctr=document.getElementById("choiceRepeat-RC");
if(ctr){
var _4c=_49.getElementsByTagName("choices")[0];
if(!_4c){
var _4c=form.document.createElement("choices");
_4c=_49.appendChild(_4c);
}
var _4d=_4c.getElementsByTagName("choice");
var _4e=new Array();
var cnt=parseInt(ctr.value);
for(var i=1;i<=cnt;i++){
if(i==1){
var _51="";
}else{
var _51="-"+i;
}
var _52=document.getElementById("listItemLabel"+_51);
if(_52){
if(_4d.length>=i){
var _53=_4d[i-1];
}else{
var _53=form.document.createElement("choice");
var _53=_4c.appendChild(_53);
}
if(isTempId(_53.getAttribute("id"))){
var cId=idify(_52.value);
_53.setAttribute("id",cId);
}
if(_49.getAttribute("type")=="checkbox"){
var _55="yes";
}else{
var _55=_53.getAttribute("id");
}
setElementValue(_53,"value",_55);
setElementValue(_53,"label",_52.value);
if(document.getElementById("listItemSelected"+_51).checked){
_53.setAttribute("default","Y");
}else{
_53.setAttribute("default","");
}
_53.setAttribute("switch",document.getElementById("optionSwitchId"+_51).options[document.getElementById("optionSwitchId"+_51).selectedIndex].value);
}else{
if(_4d.length>=i){
_4e.push(_4d[i-1]);
}
}
}
for(var i=0;i<_4e.length;i++){
_4e[i].parentNode.removeChild(_4e[i]);
}
}
}
}
function saveForm(){
var req=Freja.AssetManager.openXMLHttpRequest("POST",BuilderConfig.DATABASE_SERVICE_URL);
var _57=BuilderConfig.POST_FIELDNAME_XML+"="+encodeURIComponent(Freja._aux.serializeXML(form.document))+"&";
_57+=BuilderConfig.POST_FIELDNAME_HTML+"=na";
if(formId){
_57+="&"+BuilderConfig.POST_FIELDNAME_ID+"="+encodeURIComponent(formId);
}
try{
var _58=Freja._aux.sendXMLHttpRequest(req,_57);
_58.addCallbacks(redirectAfterSave,notifySaveError);
}
catch(ex){
d.errback(ex);
}
}
function redirectAfterSave(obj){
Builder.isSaved=true;
var d=confirmBox("Your form has been saved. Do you want to leave the Form Builder now?","Yes, I'm done.","No, stay in the Form Builder");
d.addCallbacks(function(b){
if(b=="Yes, I'm done."){
document.location.href=BuilderConfig.REDIRECT_ON_SAVE_URL+"?"+BuilderConfig.POST_FIELDNAME_ID+"="+obj.responseText;
}else{
document.getElementById("placeholder_properties").innerHTML="Form Saved.";
formId=parseInt(obj.responseText);
form.document.documentElement.setAttribute("dbFormId",formId);
switchTab("tabProperties");
}
});
}
function notifySaveError(obj){
switch(obj.req.status){
case 401:
case 403:
loadHTML(BuilderConfig.AUTHENTICATION_FORM_URL,function(_5d){
document.getElementById("placeholder_properties").innerHTML="<p>Please login first</p>"+_5d;
switchTab("tabProperties");
wFORMS.addBehaviors("placeholder_properties");
});
break;
default:
alert("The following error occured while saving the form:\nError "+obj.req.status+":  "+obj.req.responseText);
}
}
function confirmExit(){
if(!Builder.isSaved){
return "Any change made since the last save will be LOST.";
}
}
function ajaxRegistration(e,_5f){
var _60=_5f[BuilderConfig.REGISTER_FIELDNAME_USERNAME].value;
var _61=_5f[BuilderConfig.REGISTER_FIELDNAME_PASSWORD].value;
var _62=_5f[BuilderConfig.REGISTER_FIELDNAME_CONFIRM].value;
if(_61!=""&&_61!=_62){
wFORMS.behaviors["validation"].showError(_5f[BuilderConfig.REGISTER_FIELDNAME_CONFIRM],"The passwords don't match");
return wFORMS.helpers.preventEvent(e);
}
var b=document.getElementById(BuilderConfig.REGISTER_BUTTON_ID);
if(b.value!=" Wait..."){
b.value=" Wait...";
}else{
return wFORMS.helpers.preventEvent(e);
}
var _64=document.getElementById(BuilderConfig.REGISTER_ERROR_DIV_ID);
_64.innerHTML="";
var req=Freja.AssetManager.openXMLHttpRequest("POST",BuilderConfig.REGISTRAR_SERVICE_URL);
var _66=BuilderConfig.REGISTER_FIELDNAME_USERNAME+"="+encodeURIComponent(_60)+"&";
_66+=BuilderConfig.REGISTER_FIELDNAME_PASSWORD+"="+encodeURIComponent(_61)+"&";
_66+=BuilderConfig.REGISTER_FIELDNAME_CONFIRM+"="+encodeURIComponent(_62)+"&";
_66+="msgformat=html";
var _67=Freja._aux.sendXMLHttpRequest(req,_66);
_67.addCallbacks(function(obj){
document.getElementById("placeholder_properties").innerHTML="Thank you! You can now save your form.";
},function(obj){
b.value="Sign Up";
_5f[BuilderConfig.REGISTER_FIELDNAME_USERNAME].focus();
_64.innerHTML="<p class='errMsg'>"+obj.req.responseText+"</p>";
});
}
function ajaxLogin(e,_6b){
var b=document.getElementById(BuilderConfig.LOGIN_BUTTON_ID);
if(b.value!=" Wait..."){
b.value=" Wait...";
}else{
return wFORMS.helpers.preventEvent(e);
}
var _6d=document.getElementById(BuilderConfig.LOGIN_ERROR_DIV_ID);
_6d.innerHTML="";
var _6e=BuilderConfig.LOGIN_FIELDNAME_USERNAME+"="+encodeURIComponent(_6b[BuilderConfig.LOGIN_FIELDNAME_USERNAME].value)+"&";
_6e+=BuilderConfig.LOGIN_FIELDNAME_PASSWORD+"="+encodeURIComponent(_6b[BuilderConfig.LOGIN_FIELDNAME_PASSWORD].value)+"&";
_6e+="msgformat=html";
var req=Freja.AssetManager.openXMLHttpRequest("POST",BuilderConfig.REGISTRAR_SERVICE_URL);
var _70=Freja._aux.sendXMLHttpRequest(req,_6e);
_70.addCallbacks(function(obj){
document.getElementById("placeholder_properties").innerHTML="Thank you! You can now save your form.";
},function(obj){
b.value=" Login";
_6d.innerHTML="<p class='errMsg'>"+obj.req.responseText+"</p>";
});
}
function extractId(obj){
if(!obj){
obj=window.event;
}
switch(typeof obj){
case "string":
id=obj;
break;
case "object":
if(!obj.id){
obj=helpers.getSourceElement(obj);
}
id=obj.id;
break;
case "undefined":
return null;
break;
default:
throw new Error("extractId, unhandled object type: "+typeof obj);
return null;
break;
}
id=id.substr(id.lastIndexOf("@")+1);
return id;
}
function idify(n){
if(n){
var reg=new RegExp("[^a-zA-Z0-9]","gi");
var s=n.replace(reg,"");
}else{
s=helpers.randomId();
}
s="wf_"+s;
if(s.length>20){
s=s.substring(0,20);
}
var id=s;
for(var i=0;i<ids.length&&ids[i].toLowerCase()!=id.toLowerCase();i++){
}
j=1;
while(i!=ids.length){
id=s+j.toString();
for(var i=0;i<ids.length&&ids[i].toLowerCase()!=id.toLowerCase();i++){
}
j++;
}
ids[ids.length]=id;
return id;
}
function isTempId(id){
if(id&&id.length>3&&id.substring(0,3)=="wf_"){
return false;
}
return true;
}
function getIds(_7a){
var _7b=new Array();
var _7c=_7a.getElementsByTagName("*");
for(var i=0;i<_7c.length;i++){
if(_7c[i].getAttribute("id")){
var id=_7c[i].getAttribute("id");
wFORMS.debug("adding id:"+id);
while(isInArray(_7b,id)){
id=id+"00"+helpers.randomId();
_7c[i].setAttribute("id",id);
wFORMS.debug("fixed duplicate id:"+id+" on "+_7c[i].nodeName);
}
_7b[_7b.length]=id;
}
}
return _7b;
}
function isInArray(_7f,id){
for(var i=0;i<_7f.length;i++){
if(_7f[i]==id){
return true;
}
}
return false;
}
function setElementValue(_82,_83,_84){
if(!_82){
return;
}
var n=_82.getElementsByTagName(_83)[0];
if(!n){
var nn=form.document.createElement(_83);
n=_82.appendChild(nn);
}
while(n.firstChild&&(n.firstChild.nodeType==3||n.firstChild.nodeType==4)){
n.removeChild(n.firstChild);
}
var _87=form.document.createCDATASection(_84);
n.appendChild(_87);
}
function loadHTML(url,_89){
var req=Freja.AssetManager.openXMLHttpRequest("GET",url);
var _8b=Freja._aux.sendXMLHttpRequest(req);
_8b.addCallbacks(function(xhr){
_89(xhr.responseText,xhr.status,url);
},function(xhr){
alert("Error "+xhr.status+": "+url+"\n\n"+xhr.responseText);
});
return false;
}
function importModel(_8e,_8f){
if(typeof _8e.document.importNode!="undefined"){
return _8e.document.importNode(_8f.document.documentElement,true);
}else{
return (_8f.document.documentElement).cloneNode(true);
}
}
function errorHandler(_90,_91,_92,chr){
alert("Sorry, a JavaScript error occurred! \n"+"\nError description: \t"+_90+"\nPage address:      \t"+_91+"\nLine number:       \t"+_92);
return true;
}

function confirmBox(html, ok, cancel) {
	var d = Freja._aux.createDeferred();
	var m = document.getElementById('modalDialogBox');		
	if(!m) {
		var o = document.createElement("div");
		var m = document.createElement("div");
		var i = m.appendChild(document.createElement("div"));
		var h = i.appendChild(document.createElement("div"));			
		var b = i.appendChild(document.createElement("div"));	
		try { // IE only
			var bOk = b.appendChild(document.createElement("<input type='button' />"));
			var bCancel = b.appendChild(document.createElement("<input type='button' />"));
		} catch(err){		
			var bOk = b.appendChild(document.createElement("input"));
			var bCancel = b.appendChild(document.createElement("input"));
			bOk.setAttribute('type', "button");	
			bCancel.setAttribute('type', "button");	
		}
		bOk.className = "dialogOk";
		bCancel.className = "dialogCancel";
		b.className = "dialogActions";
		m.className = "dialogBox";
		h.className = "dialogText";
		i.className = "dialogInnerBox";
		o.className = "overlay";
		m.id="modalDialogBox";	
		o.id="modalDialogOverlay";					
		m = document.body.appendChild(m);
		o = document.body.appendChild(o);
	} else {			
		var h = m.firstChild.firstChild;
		var b = m.firstChild.lastChild;
		var bOk = b.firstChild;
		var bCancel = b.lastChild;
		var o = document.getElementById('modalDialogOverlay');
	}
	bOk.value = ok?ok:"Ok";
	bCancel.value = cancel?cancel:"Cancel";
	h.innerHTML = html;
	bOk.onclick = function() {
		m.style.display = "none";
		o.style.display = "none";
		/*@cc_on
		  @if (@_jscript_version < 5.7) 
		    var bd = document.getElementsByTagName('body')[0];
			bd.style.height = "auto";
			bd.style.overflow = "auto";
	  
			var ht = document.getElementsByTagName('html')[0];
			ht.style.height = "auto";
			ht.style.overflow = "auto";
		
			var selects = document.getElementsByTagName('select');
			for(i = 0; i < selects.length; i++) {
				selects[i].style.visibility = "visible";
			}
		  @end
		@*/
		d.callback(this.value);
	}
	bCancel.onclick = function() {
		m.style.display = "none";
		o.style.display = "none";
		/*@cc_on
		  @if (@_jscript_version < 5.7) 
		    var bd = document.getElementsByTagName('body')[0];
			bd.style.height = "auto";
			bd.style.overflow = "auto";
	  
			var ht = document.getElementsByTagName('html')[0];
			ht.style.height = "auto";
			ht.style.overflow = "auto";
		
			var selects = document.getElementsByTagName('select');
			for(i = 0; i < selects.length; i++) {
				selects[i].style.visibility = "visible";
			}
		  @end
		@*/
		d.callback(this.value);
	}
	/*@cc_on
	  @if (@_jscript_version < 5.7) 
		var bd = document.getElementsByTagName('body')[0];
		bd.style.height = "100%";
		bd.style.overflow = "hidden";
  
		var ht = document.getElementsByTagName('html')[0];
		ht.style.height = "100%";
		ht.style.overflow = "hidden";
	
		var selects = document.getElementsByTagName('select');
		for(i = 0; i < selects.length; i++) {
			selects[i].style.visibility = "hidden";
		}
	  @end
	@*/
	
	m.style.display = "block";
	o.style.display = "block";
	return d;		
}		
