advanced.XML.html

<HTML>

<HEAD>

<script>var dFrameFilePath = '../../../'</script>

<script language="Javascript" src="../../../lib/dFrameAPI.js"></script>

 

<script language="Javascript">

     //Global

     var baseAll, dFrameDetail, dFrameList

     var dbDomTree

     var gCurrentContactOrdinal = 0;

     var gCurrentContact

    

     //additional library

     DynAPI.setLibraryPath('../../../dynapi/src/lib/');       

     DynAPI.include("dynapi.gui.list.js")                       

    

     //Style

     if (window.parent && window.parent != self && window.parent.getDFrameValues) {

          //Setup mainPage

          window.parent.getDFrameValues()

          dFrameStyle = mainPage.dFrameStyle

     } else DFrameAPI.include('styles/blue/styleBlue.js')

    

     //XML for <SCRIPT>

     DFrameAPI.include('ext/xml_for_script-2.0/jsXMLParser/xmldom.js')

 

     DFrameAPI.onLoad = function(){               

          baseAll = new DFrame([3, 3, 97, 97], 'advanced.XML.html', dFrameStyle);

          baseAll.setTitleBar(false)

          //Create at one the DFrame that will receive the list

          //and insert a "blank" document in it to create a IFrame

          dFrameList = new DFrame(['10', '10', '350', 97], 'Contacts list',dFrameStyle, baseAll)

          dFrameList.setTitleBar(false)

          dFrameList.setURL('./advanced.XML/blank.html')

          DFrameAPI.getContent('./advanced.XML/contacts_XML.html', 'load1')

     }

    

         

     DFrameAPI.onContentLoad = function(contentValue, key) {             

          if (key == 'load1') {

              XMLString = contentValue.slice(1)                           

              dbDom = new XMLDoc(XMLString, xmlError);

              dbDomTree = dbDom.docNode;

              displayContactsAsAList()                           

          }

     }   

    

     function displayContactsAsAList() {

          contactList = new List()

          contactList.moveTo(10,10)

          contactList.setWidth(dFrameList.getWidth()-40)            

          contactList.setBgColor('#000000')

          contactList.boldOnSelect(true)

          var l = new EventListener(contactList);

          l.onmousedown = function(e) {

              var o = e.getTarget();

              var i = o.getSelectedIndex()                         

              showContactDetail(i)

          }        

          contactList.addEventListener(l)

          objUser = navigateUserList("first");                               

          while(objUser != null) {             

              firstName = trim(objUser.getElements(cTCC("FIRSTNAME"))[0].getText(),true, true);

              lastName = trim(objUser.getElements(cTCC("LASTNAME"))[0].getText(), true, true);

              contactList.add(lastName + ' ' + firstName,1)                                                

              objUser = navigateUserList("next");  

          }

 

          DynDoc = dFrameList.createDynAPIDocument()                       

          DynDoc.addChild(contactList)

     }

    

     function displayContacts(direction) {

          objUser = navigateUserList(direction);                           

          if (objUser!= null) {

              displayUserData(objUser);  

              contactList.select(contactList.items[gCurrentContactOrdinal])

          }

     }

    

     function showContactDetail(i) {      

          objUser = getContactByOrdinalValue(i)                         

          if (objUser!= null) {

              displayUserData(objUser);  

              gCurrentContact = objUser

          }

     }

    

     function displayUserData(objUser) {

          var txt = formatXML(objUser)

 

          if (!dFrameDetail) {

              var position = [0, '10', 97, 97]

              position[0] = [dFrameList, 'Right', 10]

              dFrameDetail = new DFrame(position, 'Contact detail',dFrameStyle, baseAll)

              dFrameDetail.setTitleBar(false)                                

              dFrameDetail.addButton('First', 'displayContacts("first")')

              dFrameDetail.addButton('Previous', 'displayContacts("previous")')

              dFrameDetail.addButton('Next', 'displayContacts("next")')

              dFrameDetail.addButton('Last', 'displayContacts("last")')

              if (baseAll.getParentDFrame() != null && baseAll.getParentDFrame().addSelectButton) {                      

                   dFrameDetail.addBar().addButton('Select', 'selectContact()')

              }

              dFrameDetail.setDragEnabled(true)

          }

          //dFrameDetail.alert('<form><textarea>' + txt + '</textarea></form>')

          dFrameDetail.alert(txt)

          dFrameDetail.show(true)

     }

     function formatXML(objUser) {

          firstName = trim(objUser.getElements(cTCC("FIRSTNAME"))[0].getText(),true, true);

          lastName = trim(objUser.getElements(cTCC("LASTNAME"))[0].getText(), true, true);

          address = trim(objUser.getElements(cTCC("ADDRLOC"))[0].getText(), true, true);

          city = trim(objUser.getElements(cTCC("CITY"))[0].getText(), true, true);

          state = trim(objUser.getElements(cTCC("STATE"))[0].getText(), true, true);

          zip = trim(objUser.getElements(cTCC("ZIPCODE"))[0].getText(), true, true);

          var br = '<br>'

          var txt = '<b>' + firstName + ' ' + lastName + '</b>'+br + address + br + city + ' ' + state + ' ' + zip

          return txt

     }        

    

    

     function selectContact() {

          baseAll.getParentDFrame().receiveData(gCurrentContact)

     }

    

     function cTCC(string) {

          //cTCC: convertToCorrectCase = lowerCase for NS6

          if (is.ns6) return string.toLowerCase()

          else return string

     }

    

/************************************************************************

     From formFunction.js of XML for <SCRIPT>

************************************************************************/           

     function xmlError(e) {

         alert("There has been an error accessing the XML Database. The error is:\n" + e)

     }

    

     function navigateUserList(direction) {

         var objUser;

         switch (direction) {

             case "next":

                 objUser = getContactByOrdinalValue(gCurrentContactOrdinal + 1);

                 break;

    

             case "previous":

                 objUser = getContactByOrdinalValue(gCurrentContactOrdinal - 1);

                 break;

    

             case "first":

                 objUser = getContactByOrdinalValue(0);

                 break;

    

             case "last":

                 objUser = getContactByOrdinalValue(dbDomTree.getElements(cTCC("CONTACT")).length -1);

                 break;

    

             case "current":

                 objUser = getContactByOrdinalValue(gCurrentContactOrdinal);

                 break;

    

         } // end switch

    

         //set the global currently displayed user

         gCurrentContact = objUser;

 

         return (objUser)

     }

 

     function getContactByOrdinalValue(value){

         var tmpNode = dbDomTree.getElements(cTCC("CONTACT"))[value];   

         gCurrentContactOrdinal = value;

         return tmpNode;

     }

 

</script>

</HEAD>

</HTML>