<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                xmlns:s="library://ns.adobe.com/flex/spark"
                width="1368" height="710" creationComplete="init()" layout="absolute"
                viewSourceURL="srcview/index.html">
    <mx:Style source="main.css"/>
    
    
 
    <mx:Script>
    <![CDATA[
        import components.BindableDictionary;
        import components.Company;
        import components.Connector;
        import components.Organisation;
        import components.Person;
        import components.Sup;
        
        import flash.trace.Trace;
        
        import mx.accessibility.AlertAccImpl;
        import mx.binding.utils.BindingUtils;
        import mx.collections.ArrayCollection;
        import mx.collections.ArrayList;
        import mx.controls.Alert;
        import mx.controls.Button;
        import mx.controls.Image;
        import mx.controls.Label;
        import mx.controls.List;
        import mx.core.DragSource;
        import mx.core.FlexGlobals;
        import mx.core.mx_internal;
        import mx.events.DragEvent;
        import mx.events.Request;
        import mx.managers.DragManager;
        import mx.resources.ResourceBundle;
        import mx.rpc.events.ResultEvent;
        import mx.utils.ObjectUtil;
        import mx.utils.OrderedObject;
        import mx.utils.object_proxy;
        
 
        
        [Bindable]public var bd:BindableDictionary = new BindableDictionary();
        [Bindable]
Bindable]public var propdic:BindableDictionary = new BindableDictionary();
        public var imgcol:ArrayCollection=new ArrayCollection();
        private var flag:Boolean=true;
        [Bindable]var Request:String;
        
    [Embed("assets/organizationlog.png")]
    public var organizationlog:Class;
        [Bindable]    Embed("assets/person.png")]
    private var personlog:Class;
        [Bindable]    Embed("assets/company.png")]
    private var companylog:Class;
        
        
    
    
        [Bindable]var count:int=0;
        [Bindable]var ans:String;
        
        [Bindable]public var connect:Connector;
        
        [Bindable]public var com:String=new String();
        [Bindable]public var autho:String=new String();
        [Bindable]public var compo:String=new String();
        [Bindable]public var unamo:String=new String();
        [Bindable]public var transformer:Boolean=false;
        [Bindable]public var go:String=new String();
        [Bindable]public var gp:String=new String();
        [Bindable]var onames:ArrayCollection;
        [Bindable]var ocodes:ArrayCollection;
        [Bindable]var ansp:String;
        [Bindable]var pnames:ArrayCollection;
        [Bindable]var pcodes:ArrayCollection;
        [Bindable]var ncounter:int;
        [Bindable]var ccounter:int;
        [Bindable]var anss:String;
        [Bindable]var snames:ArrayCollection;
        [Bindable]var scodes:ArrayCollection;
        [Bindable]var anspt:String;
        [Bindable]var ptnames:ArrayCollection;
        [Bindable]var ptcodes:ArrayCollection;
        [Bindable]var incrementor:int;
        [Bindable]public var transfer:String="line";
        
        var par:mx.controls.Button;
        var chi:mx.controls.Button;
        var l:List=new List();
        
        

         private function init():void
         {
             
          // var requesttype:String="<CosmoContainer xmlns='http://cos.ndorange.com/definitions' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance '><CosmoRequest service='com.ndorange.therasystem.services.AdvanceSearchService' action='query' companyId='"+compo+"' xsi:type='ser:SearchRequest' xmlns:ser='http://cos.ndorange.com/xml/services '><ExecutionContext authenticationToken='"+autho+"' companyId='"+compo+"' userId='"+unamo+"'/><search templateName='code_values' criteria='codeTypeName IN ('Organization unit type')' offset='0' xmlns=''/></CosmoRequest></CosmoContainer>";
            
            //sender();
             parseString();
             //ans="<CosmoContainer xmlns='http://cos.ndorange.com/definitions' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><CosmoRequest service='com.ndorange.therasystem.services.AdvanceSearchService' action='query' companyId='"+compo+"' xsi:type='ser:SearchRequest' xmlns:ser='http://cos.ndorange.com/xml/services'><ExecutionContext authenticationToken='"+autho+"' companyId='"+compo+"' userId='"+unamo+"'/><search templateName='code_values' criteria='codeTypeName IN ('Organization unit type')' queryId='0' resultSelect='' resultOrderBy='' limit='50' offset='0' xmlns=''/></CosmoRequest></CosmoContainer> ";
             //getCodes.send();
             //Request="<CosmoContainer xmlns=\"http://cos.ndorange.com/definitions\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><CosmoRequest service=\"com.ndorange.therasystem.services.AdvanceSearchService\" action=\"query\" companyId=\"10419\" xsi:type=\"ser:SearchRequest\" xmlns:ser=\"http://cos.ndorange.com/xml/services\"><ExecutionContext authenticationToken=\""+autho+"\" companyId=\""+compo+"\" userId=\""+unamo+"\"/><search templateName=\"org_company\" criteria=\"{OrganizationType_name} IS NOT NULL\" queryId=\"0\" resultSelect=\"{CompanyType_name}, {ORGANIZATIONTYPE_COMPANYID},{OrganizationType_name},{ORGANIZATIONTYPE_PARTYID},{OrganizationType_PARENTID},{OrganizationType_FULLYQUALIFIEDPATH},{OrganizationType_organizationtype}\" resultOrderBy=\"{OrganizationType_name} DESC\" limit=\"10\" offset=\"0\" xmlns=\"\"/></CosmoRequest></CosmoContainer>";
               
             ans="<CosmoContainer xmlns='http://cos.ndorange.com/definitions' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><CosmoRequest service='com.ndorange.therasystem.services.AdvanceSearchService' action='query' companyId='"+compo+"' xsi:type='ser:SearchRequest' xmlns:ser='http://cos.ndorange.com/xml/services'><ExecutionContext authenticationToken='"+autho+"' companyId='"+compo+"' userId='"+unamo+"'/><search templateName='code_values' criteria='codeTypeName IN ('Organization unit type')' queryId='0' resultSelect='' resultOrderBy='' limit='50' offset='0' xmlns=''/></CosmoRequest></CosmoContainer> ";
             getCodes.send();
             ansp="<CosmoContainer xmlns='http://cos.ndorange.com/definitions' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><CosmoRequest service='com.ndorange.therasystem.services.AdvanceSearchService' action='query' companyId='"+compo+"' xsi:type='ser:SearchRequest' xmlns:ser='http://cos.ndorange.com/xml/services'><ExecutionContext authenticationToken='"+autho+"' companyId='"+compo+"' userId='"+unamo+"'/><search templateName='code_values' criteria='codeTypeName IN ('Provider Type')' queryId='0' resultSelect='' resultOrderBy='' limit='50' offset='0' xmlns=''/></CosmoRequest></CosmoContainer> ";
             getpCodes.send();
             anss="<CosmoContainer xmlns='http://cos.ndorange.com/definitions' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><CosmoRequest service='com.ndorange.therasystem.services.AdvanceSearchService' action='query' companyId='"+compo+"' xsi:type='ser:SearchRequest' xmlns:ser='http://cos.ndorange.com/xml/services'><ExecutionContext authenticationToken='"+autho+"' companyId='"+compo+"' userId='"+unamo+"'/><search templateName='code_values' criteria='codeTypeName IN ('Specialty')' queryId='0' resultSelect='' resultOrderBy='' limit='50' offset='0' xmlns=''/></CosmoRequest></CosmoContainer> ";
             getsCodes.send();
             anspt="<CosmoContainer xmlns='http://cos.ndorange.com/definitions' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><CosmoRequest service='com.ndorange.therasystem.services.AdvanceSearchService' action='query' companyId='"+compo+"' xsi:type='ser:SearchRequest' xmlns:ser='http://cos.ndorange.com/xml/services'><ExecutionContext authenticationToken='"+autho+"' companyId='"+compo+"' userId='"+unamo+"'/><search templateName='code_values' criteria='codeTypeName IN ('Party Type')' queryId='0' resultSelect='' resultOrderBy='' limit='50' offset='0' xmlns=''/></CosmoRequest></CosmoContainer> ";
             getptCodes.send();
             go="<CosmoContainer xmlns=\"http://cos.ndorange.com/definitions\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><CosmoRequest service=\"com.ndorange.therasystem.services.OrganizationService\" action=\"query\" companyId=\""+compo+"\" xsi:type=\"ser:organizationRequest\" xmlns:ser=\"http://cos.ndorange.com/xml/services\"><ExecutionContext authenticationToken=\""+autho+"\" companyId=\""+compo+"\" userId=\""+unamo+"\"/><requestObject xsi:type=\"typ:OrganizationType\" xmlns:typ=\"http://cos.ndorange.com/xml/MedicalRecord/types\" xmlns=\"\"/></CosmoRequest></CosmoContainer>";
             getorganisations.send();
             gp="<CosmoContainer xmlns='http://cos.ndorange.com/definitions' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>  <CosmoRequest   service='com.ndorange.therasystem.services.ProviderService'  action='query'   companyId='"+compo+"'  xsi:type='ser:ProviderRequest'   xmlns:ser='http://cos.ndorange.com/xml/services'>   <ExecutionContext  authenticationToken='"+autho+"'   companyId='"+compo+"'   userId='"+unamo+"'/>   <requestObject    xsi:type='typ:ProviderType'  xmlns:typ='http://cos.ndorange.com/xml/MedicalRecord/types' xmlns=''/>   </CosmoRequest>   </CosmoContainer>";
             
         }
        public function parseString():void {
                
        
            var myPattern:RegExp = /.*\?/;  
                var s:String =ExternalInterface.call("window.location.href.toString");
                s = s.replace(myPattern, "");
                var params:Array = s.split("&");
                var s1:Array=params[0].split("=");
                var s2:Array=params[1].split("=");
                var s3:Array=params[2].split("=");
                
                autho=s1[1];
                compo=s2[1];
                unamo=s3[1];
                //Alert.show(autho+compo);
        }

 
    private function doDrag(event:MouseEvent):void
    {
        
      var img:mx.controls.Button = event.currentTarget as mx.controls.Button;
      
      var dragImg:mx.controls.Button = new mx.controls.Button();
     // dragImg.source = img.source;
      var dsource:DragSource = new DragSource();
      dsource.addData(img, 'img');
      DragManager.doDrag(img, dsource , event, dragImg);
    }
        
        
        public function dragWithin(event:MouseEvent):void {
            var img:mx.controls.Button = event.currentTarget as mx.controls.Button;
            
            //var o:Sup=bd.get(img.name) as Sup;
            //Alert.show("indrag");
            // lo.setX1(img.x);
            // lo.setY1(img.y);
            
            var dragImg:mx.controls.Button = new mx.controls.Button();
            
            //dragImg.source = img.source;
            var dsource:DragSource = new DragSource();
            dsource.addData(img, 'cann');
            DragManager.doDrag(img, dsource , event, dragImg);
        }
        private function dragAccept(event:DragEvent):void
        {
              var dropTarget:Canvas = event.currentTarget as Canvas;
              DragManager.acceptDragDrop(dropTarget);
        }
        
        
        private function click(event:MouseEvent):void
        {
            
            var imgCopy:mx.controls.Button = event.currentTarget as mx.controls.Button;
            
            com=imgCopy.id;
            
            //Alert.show(imgCopy.id.indexOf("oraganisation").toString());
            if(imgCopy.id.indexOf("organisation")==0)
            {
                //Alert.show("org");
                noform.visible=false;
                organisation.visible=true;    
                person.visible=false;
                
                toid.text=(bd.get(com) as Organisation).getId;
                toname.text=(bd.get(com) as Organisation).getName;
                totype.text=onames[searchNames((bd.get(com)as Organisation).getType,ocodes)];
                var temp=searchImage(com);
                (imgcol[temp] as mx.controls.Button).label=toname.text+"          "+totype.text;
                
                //toid.text=(bd.get(com)as Organisation).getId;
                
            }                
            else if(imgCopy.id.indexOf("person")==0)
            {
                //Alert.show("per");
                var per:Person=bd.get(com) as Person;
                //var per:Person=new Person("",5,7);
                noform.visible=false;
                organisation.visible=false;
                person.visible=true;
                
                tpsalu.text=per.getsalutation;
                tpfname.text=per.getfirstName;
                tplname.text=per.getlastName;
                tpgen.text=per.getgender;
                tpssn.text=per.getsocialSecurityNumber;
                tpsuf.text=per.getsuffix;
                tplab.text=per.getId;
                //(bd.get(com)as Person).Credentials=tpcreden.text;
                //Alert.show(per.getproviderType);
                
                tppartype.text=ptnames[searchNames(per.getpartyType,ptcodes)];
                tpspec.text=snames[searchNames(per.getspeciality,scodes)];
                tptype.text=pnames[searchNames(per.getproviderType,pcodes)].toString();
                var temp=searchImage(com);
                (imgcol[temp] as mx.controls.Button).label=tpfname.text+" "+tplname.text+"          "+tptype.text;
                
                
                
                
                
                
                
                
            }
            
        }
    
    private function dragDrop(event:DragEvent):void
    {
        //Alert.show("inclickdd");
        if (event.dragSource.hasFormat("img")) 
        {
            var draggedImage:mx.controls.Button = event.dragSource.dataForFormat('img') as mx.controls.Button;
            var dropCanvas:Canvas = event.currentTarget as Canvas;
            
            // Since this is a copy, create a new object to 
            // add to the drop target.
            var newImage:mx.controls.Button=new mx.controls.Button();
            //newImage.source = draggedImage.source;
            newImage.x = dropCanvas.mouseX;
            newImage.y = dropCanvas.mouseY;
            newImage.id = draggedImage.id+count;
            newImage.width=108;
            newImage.height=33;
            com=newImage.id;
            imgcol.addItemAt(newImage,count);
            
            count++;
            //Alert.show(draggedImage.name);
            
            if(draggedImage.id=="organisationbut")
            {
            //    Alert.show("orgy but");
                var or:Organisation =new Organisation(newImage.id,newImage.x,newImage.y);
            
                //Alert.show(newImage.name.toString());
                
                noform.visible=false;
                organisation.visible=true;    
                person.visible=false;
                bd.put(newImage.id,or);    
            
            }
            else if(draggedImage.id=="personbut")
            {
                //Alert.show("person but");
                noform.visible=false;
                organisation.visible=false;
                person.visible=true;
                var po: Person = new Person(newImage.id,newImage.x,newImage.y);
                bd.put(newImage.id,po);
            }
            else
            {
                Alert.show("else");
            }
            //newImage.addEventListener(MouseEvent.DOUBLE_CLICK,click);
            //newImage.addEventListener(MouseEvent.CLICK,click);
            //newImage.addEventListener(MouseEvent.MOUSE_UP,alerter);
            
            newImage.addEventListener(MouseEvent.MOUSE_DOWN,click);
            newImage.addEventListener(MouseEvent.MOUSE_DOWN, dragWithin);
            
            dropCanvas.addChild(newImage);
            
            //can.createNode("new",newImage);
           }
        else if (event.dragSource.hasFormat("cann"))
        {
               var child:mx.controls.Button = event.dragInitiator as mx.controls.Button;
            if (transformer)
            {
                var k:int=checker((event.currentTarget as Canvas).mouseX,(event.currentTarget as Canvas).mouseY);
              if (k!=-1)
              {
                  var parentid:String;
                  var parenttype:String;
                  var childid:String;
                  var childtype:String;
                  var parent:mx.controls.Button=imgcol[k] as mx.controls.Button;
                  if(parent.id==child.id)
                  {
                      Alert.show("cannot connect same object");
                  }
                  else if(findType(parent.id)==102)
                  {
                      Alert.show("relation not possible");
                  }
                  else
                  {
                  if(findType(child.id)==101)
                      {
                        childid =(bd.get(child.id) as Organisation).getId;
                        childtype="OrganizationType";
                      }
                      else
                      {
                          childid =(bd.get(child.id) as Person).getId;
                          childtype="ProviderType";
                      }
                      if(findType(parent.id)==101)
                          {
                          parentid =(bd.get(parent.id) as Organisation).getId;
                          parenttype="OrganizationType";
                          }
                          else
                          {
                              parentid =(bd.get(parent.id) as Person).getId;
                              parenttype="ProviderType";
                          }
                      par=parent;
                      chi=child;
                      if(findType(child.id)==101)
                      {
                          var o:Organisation=bd.get(child.id) as Organisation;
                          o.setparentId=parentid;
                        Request= "<CosmoContainer xmlns='http://cos.ndorange.com/definitions' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>  <CosmoRequest   service='com.ndorange.therasystem.services.OrganizationService'   action='update'   companyId='"+compo+"'   xsi:type='ser:organizationRequest' xmlns:ser='http://cos.ndorange.com/xml/services'>    <ExecutionContext authenticationToken='"+autho+"' companyId='"+compo+"' userId='"+unamo+"'/>    <requestObject     companyId='"+compo+"' parentId='"+o.getparentId+"' partyId='"+o.getId+"' xsi:type='typ:OrganizationType'     xmlns:typ='http://cos.ndorange.com/xml/MedicalRecord/types' xmlns=''/>  </CosmoRequest></CosmoContainer>";
                        
                        connector.send();
                      }
                      else
                      {
                     Request="<CosmoContainer xmlns=\"http://cos.ndorange.com/definitions\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><CosmoRequest service=\"com.ndorange.therasystem.services.RelationshipService\" action=\"special\" xsi:type=\"ser:RelatedObjectCosmoRequest\" xmlns:ser=\"http://cos.ndorange.com/xml/services\"><ExecutionContext authenticationToken=\""+autho+"\" companyId=\""+compo+"\" userId=\""+unamo+"\"/><relationship specialOp=\"InsertUpdate\" parentId=\""+parentid+"\" parentObjectClassName=\""+parenttype+"\" childId=\""+childid+"\" childObjectClassName=\""+childtype+"\" activeFlag=\"true\" xmlns=\"\"/></CosmoRequest></CosmoContainer>";
                     //  Alert.show("parent org child per");
                       
                       conorgper.send();
                      }
                 
                }
              }
            }
            else
            {
                child.x = (event.currentTarget as Canvas).mouseX;
                child.y = (event.currentTarget as Canvas).mouseY;
                com=child.id;
            }
               
           }
    }
        
        public function change():void
        {
            if(transformer==true)
            {
                transformer=false;
                transfer="line";
            }
            else
            {
                transformer=true;
                transfer="image";
            }

        }
        public function searchImage(str1:String):int
        {
            for(var i=0;i<count;i++)
            {
                if((imgcol[i] as mx.controls.Button).id == str1)
                    return i;
            }
            return -1;
            
        }
        public function checker(x2:Number,y2:Number):int
        {
        for (var i:int=0;i<imgcol.length;i++)
        {
            var ima:mx.controls.Button= imgcol[i] as mx.controls.Button;
            if (x2>=ima.x && x2<=(ima.x+ima.width) && y2>=ima.y && y2<=(ima.y+ima.height))
            {
                return i;
            }
        }
        return -1;
        }
        public function searchNames(str:String,arr:ArrayCollection):int
        {
            for (var i=0;i<arr.length;i++)
            {
                if(arr[i]==str)
                    return i;
            }
            return 0;
        }
         
        public function submitPerson():void
        {
            var k:Person=bd.get(com)as Person;
            k.setAll(tpfname.text,tplname.text,tpsalu.selectedItem.toString(),tpssn.text,tpgen.selectedItem.data.toString(),pcodes[tptype.selectedIndex],scodes[tpspec.selectedIndex],tpsuf.text,ptcodes[tppartype.selectedIndex]);/*vjlzxbhvbzhbvkhz*/
            
            if(k.getId != "not yet generated")
            {
                
                Request="<CosmoContainer xmlns=\"http://cos.ndorange.com/definitions\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><CosmoRequest service=\"com.ndorange.therasystem.services.ProviderService\" action=\"update\" companyId=\""+compo+"\" xsi:type=\"ser:ProviderRequest\" xmlns:ser=\"http://cos.ndorange.com/xml/services\"><ExecutionContext authenticationToken=\""+autho+"\" companyId=\""+compo+"\" userId=\""+unamo+"\"/><requestObject partyId=\""+k.getId+"\" partyType=\""+k.getproviderType+"\" companyId=\""+compo+"\" firstName=\""+k.getfirstName+"\" lastName=\""+k.getlastName+"\" salutation=\"\" suffix=\""+k.getsuffix+"\" socialSecurityNumber=\""+k.getsocialSecurityNumber+"\" birthTime=\"\" gender=\""+k.getgender+"\" nationalProviderId=\"\" specialty=\""+k.getspeciality+"\" isEPrescribing=\"false\" providerType=\""+k.getproviderType+"\" isAutoFaxEnabled=\"false\" credentials=\"\" xsi:type=\"typ:ProviderType\" xmlns:typ=\"http://cos.ndorange.com/xml/MedicalRecord/types\" xmlns=\"\"/></CosmoRequest></CosmoContainer>";
                
            }
            else
            {
            
            Request="<CosmoContainer xmlns=\"http://cos.ndorange.com/definitions\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><CosmoRequest service=\"com.ndorange.therasystem.services.ProviderService\" action=\"insert\" companyId=\""+compo+"\" xsi:type=\"ser:ProviderRequest\" xmlns:ser=\"http://cos.ndorange.com/xml/services\"><ExecutionContext authenticationToken=\""+autho+"\" companyId=\""+compo+"\" userId=\""+unamo+"\"/><requestObject partyType=\""+k.getproviderType+"\" firstName=\""+k.getfirstName+"\" lastName=\""+k.getlastName+"\" salutation=\"\" suffix=\""+k.getsuffix+"\" socialSecurityNumber=\""+k.getsocialSecurityNumber+"\" gender=\""+k.getgender+"\" nationalProviderId=\"\" specialty=\""+k.getspeciality+"\" providerType=\""+k.getproviderType+"\" credentials=\"\" xsi:type=\"typ:ProviderType\" xmlns:typ=\"http://cos.ndorange.com/xml/MedicalRecord/types\" xmlns=\"\"/></CosmoRequest></CosmoContainer>";
            }
               sender();
               
        }
        public function submitOrganisation():void
        {
            var k:Organisation=bd.get(com)as Organisation;
            //Alert.show(totype.selectedItem.data.toString());
            
            k.setall(toname.text,ocodes[totype.selectedIndex]);/*vjlzxbhvbzhbvkhz*/
            if(k.getId != "not yet generated")
            {
                
                Request="<CosmoContainer xmlns='http://cos.ndorange.com/definitions' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>  <CosmoRequest   service='com.ndorange.therasystem.services.OrganizationService'   action='update'   companyId='"+compo+"'   xsi:type='ser:organizationRequest' xmlns:ser='http://cos.ndorange.com/xml/services'>    <ExecutionContext authenticationToken='"+autho+"' companyId='"+compo+"' userId='"+unamo+"'/>    <requestObject     companyId='"+compo+"' parentId='"+k.getparentId+"' partyId='"+k.getId+"' xsi:type='typ:OrganizationType'     xmlns:typ='http://cos.ndorange.com/xml/MedicalRecord/types' xmlns=''/>  </CosmoRequest></CosmoContainer>";    
            }
            else
            {
                Request="<CosmoContainer xmlns=\"http://cos.ndorange.com/definitions\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><CosmoRequest service=\"com.ndorange.therasystem.services.OrganizationService\" action=\"insert\" requestObjectClassName=\"\" companyId=\""+compo+"\" xsi:type=\"ser:organizationRequest\" xmlns:ser=\"http://cos.ndorange.com/xml/services\"><ExecutionContext authenticationToken=\""+autho+"\" companyId=\""+compo+"\" userId=\""+unamo+"\"/><requestObject companyId=\""+compo+"\" name=\""+k.getName+"\" organizationType=\""+k.getType+"\" parentId=\""+k.getparentId+"\" isPhysicalLocation=\"true\" xsi:type=\"typ:OrganizationType\" xmlns:typ=\"http://cos.ndorange.com/xml/MedicalRecord/types\" xmlns=\"\"/></CosmoRequest></CosmoContainer>";

            
            }
            sender();
        }
  
            import flash.net.URLRequest;  
            import flash.net.navigateToURL;  
            
            private var dir:String = "http://localhost:8080/flash/connector.jsp";  
        private var pet:URLRequest = new URLRequest(dir);  
        
        private function sender(): void  
        {  
            
            //navigateToURL(pet, "_blank");  
            loginSrv.send();  
        }  
        public function searchbd(str2:String):int
        {
           for(var i=0;i<imgcol.length;i++)
           {
               var temp:Sup=bd.get((imgcol[i] as mx.controls.Button).id) as Sup;
               if(temp.getId==str2)
                   return i;
           }
           return -1;
        }
        protected function loginSrv_resultHandler(event:ResultEvent):void
        {
            // TODO Auto-generated method stub
            var str:XML=event.result as XML;
            //Alert.show(str.toString());
            //.text=str.toString();
            
        
            var i:int=findType(com);
            //Alert.show(i+"");
            switch(i)
            {
                case 101:
                {
                    if((bd.get(com)as Organisation).getId == "not yet generated")
                    {
                        //Alert.show(str.CosmoResponse.Organization.@partyId);
                    (bd.get(com)as Organisation).setId=str.CosmoResponse.Organization.@partyId;
                    //Alert.show((bd.get(com)as Organisation).getId);
                    toid.text=(bd.get(com)as Organisation).getId;
                    
                    //Alert.show();
                    }
                    
                    var temp=searchImage(com);
                    (imgcol[temp] as mx.controls.Button).label=toname.text+"          "+totype.text;
                    break;
                }
                case 102:
                {
                    if((bd.get(com)as Person).getId== "not yet generated")
                    {
                        
                    (bd.get(com)as Person).setId=str.CosmoResponse.results.@partyId;
                    //Alert.show(str.toString());
                    tplab.text=(bd.get(com)as Person).getId;
                    
                    //toid.text=(bd.get(com)as Organisation).getId;
                    }
                    
                    var temp=searchImage(com);
                    (imgcol[temp] as mx.controls.Button).label=tpfname.text+" "+tplname.text+"          "+totype.text;
                    break;
                }
                    
                default:
                {
                    break;
                }
            
        }
        }
        public function findType(str:String):int
        {
            if (str.indexOf("organisation")==0){
                return 101;
            }
             else if(str.indexOf("person")==0){
                    return 102;
            }
            else if(str.indexOf("company")==0){
                    return 103;
            }
            else{
                    return -1;
            }
        }            
        
        protected function connector_resultHandler(event:ResultEvent):void
        {
            var str1:XML=event.result as XML;
            
            (bd.get(chi.id) as Organisation).setparentId=str1.CosmoResponse.Organization.@parentId;
            //Alert.show(str1.CosmoResponse.Organization.@parentId);
            
            var connect:Connector=new Connector(par,chi);
            connect.drawConnector();
            can.addChild(connect);
            //Alert.show(str1.toString());
        }
        
        protected function getCodes_resultHandler(event:ResultEvent):void
        {
            // TODO Auto-generated method stub
            var str:XML=event.result as XML;
            onames=new ArrayCollection();
            ocodes=new ArrayCollection();
            ncounter=0;
            ccounter=0;
            //Alert.show((str.CosmoResponse.row.*));
            for each(var object:XML in str.CosmoResponse.row.* )
            {
                if (object.name()=="results")
                {
                    //Alert.show((object.@value).tostring());
                    if (object.@name=="CodeValuesType_codeDescription")
                    {
                        onames.addItemAt(object.@value,ncounter);
                        ncounter++;
                        
                    }
                    
                    if (object.@name=="CodeValuesType_codeValue")
                    {
                        // Alert.show(object.@value);
                        ocodes.addItemAt(object.@value,ccounter);
                        ccounter++; 
                    } 
                }
            }
        }        
        
        protected function getpCodes_resultHandler(event:ResultEvent):void
        {
            // TODO Auto-generated method stub
            var str:XML=event.result as XML;
            pnames=new ArrayCollection();
            pcodes=new ArrayCollection();
            //Alert.show(str.toString());
            ncounter=0;
            ccounter=0;
            for each(var object:XML in str.CosmoResponse.row.* )
            {
                if (object.name()=="results")
                {
                    //Alert.show((object.@value).tostring());
                    if (object.@name=="CodeValuesType_codeDescription")
                    {
                        pnames.addItemAt(object.@value,ncounter);
                        ncounter++;
                        
                    }
                    
                    if (object.@name=="CodeValuesType_codeValue")
                    {
                        // Alert.show(object.@value);
                        pcodes.addItemAt(object.@value,ccounter);
                        ccounter++; 
                    } 
                } 
            }
            
        }    
        
        protected function getsCodes_resultHandler(event:ResultEvent):void
        {
            // TODO Auto-generated method stub
            var str:XML=event.result as XML;
            snames=new ArrayCollection();
            scodes=new ArrayCollection();
            //Alert.show(str.toString());
            ncounter=0;
            ccounter=0;
            for each(var object:XML in str.CosmoResponse.row.* )
            {
                if (object.name()=="results")
                {
                    //Alert.show((object.@value).tostring());
                    if (object.@name=="CodeValuesType_codeDescription")
                    {
                        snames.addItemAt(object.@value,ncounter);
                        ncounter++;
                        
                    }
                    
                    if (object.@name=="CodeValuesType_codeValue")
                    {
                        // Alert.show(object.@value);
                        scodes.addItemAt(object.@value,ccounter);
                        ccounter++; 
                    } 
                } 
            }
        }    
        
        protected function getptCodes_resultHandler(event:ResultEvent):void
        {
            // TODO Auto-generated method stub
            var str:XML=event.result as XML;
            ptnames=new ArrayCollection();
            ptcodes=new ArrayCollection();
            //Alert.show(str.toString());
            ncounter=0;
            ccounter=0;
            for each(var object:XML in str.CosmoResponse.row.* )
            {
                if (object.name()=="results")
                {
                    //Alert.show((object.@value).tostring());
                    if (object.@name=="CodeValuesType_codeDescription")
                    {
                        ptnames.addItemAt(object.@value,ncounter);
                        ncounter++;
                        
                    }
                    
                    if (object.@name=="CodeValuesType_codeValue")
                    {
                        // Alert.show(object.@value);
                        ptcodes.addItemAt(object.@value,ccounter);
                        ccounter++; 
                    } 
                } 
            }
        }
        
        protected function getpersons_resultHandler(event:ResultEvent):void
        {
            var str:XML=event.result as XML;
            for each(var object:XML in str.CosmoResponse.* )
            {
                
                //Alert.show(object.@partyType);
                var newImage:mx.controls.Button=new mx.controls.Button(); 
                //newImage.source=("assets/organizationlog.png");
                
                //newImage.source=personlog;
                newImage.id="person"+count;
                newImage.x=241;
                newImage.y=250;
                newImage.height=33;
                newImage.width=108;
                newImage.addEventListener(MouseEvent.MOUSE_DOWN, dragWithin);
                newImage.addEventListener(MouseEvent.MOUSE_DOWN,click);
                imgcol.addItemAt(newImage,count);
                var or:Person =new Person(newImage.id,newImage.x,newImage.y);
                or.setId=object.@partyId;
            //    Alert.show(object.@partyId);
                newImage.label=object.@firstName+" "+object.@lastName+"          "+object.@providerType;
                or.setpartyType=object.@partyType;
                or.setfirstName=object.@firstName;
                or.setlastName=object.@lastName;
                or.setgender=object.@gender;
                or.setsalutation=object.@salutation;
                or.setsocialSecurityNumber=object.@socialSecurityNumber;
                or.setsuffix=object.@suffex;
                or.setspeciality=object.@specialty;
                or.setproviderType=object.@providerType;
                bd.put(newImage.id,or);
                count++;
                
                can.addChild(newImage);
                Request="<CosmoContainer xmlns=\"http://cos.ndorange.com/definitions\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><CosmoRequest service=\"com.ndorange.therasystem.services.RelationshipService\" action=\"query\" xsi:type=\"ser:RelatedObjectCosmoRequest\" xmlns:ser=\"http://cos.ndorange.com/xml/services\"><ExecutionContext authenticationToken=\""+autho+"\" companyId=\""+compo+"\" userId=\""+unamo+"\"/><relationship parentObjectClassName=\"OrganizationType\" childObjectClassName=\"ProviderType\" childId=\""+or.getId+"\" activeFlag=\"true\" xmlns=\"\"/></CosmoRequest></CosmoContainer>";
                test.send();
                //Alert.show(or.getspeciality);
                //Alert.show("inside if");
                
            }
            
        }
        
        protected function getorganisations_resultHandler(event:ResultEvent):void
        {
            var str:XML=event.result as XML;
                for each(var object:XML in str.CosmoResponse.* )
                {
                    
                    //Alert.show(object.toString());
                    var newImage:mx.controls.Button=new mx.controls.Button(); 
                    //newImage.source=("assets/organizationlog.png");
                    //newImage.source=organizationlog;
                    newImage.id="organisation"+count;
                    newImage.x=241;
                    newImage.y=168;
                    newImage.height=33;
                    newImage.width=108;
                    newImage.addEventListener(MouseEvent.MOUSE_DOWN, dragWithin);
                    newImage.addEventListener(MouseEvent.MOUSE_DOWN,click);
                    imgcol.addItemAt(newImage,count);
                    var or:Organisation =new Organisation(newImage.id,newImage.x,newImage.y);
                    or.setId=object.@partyId;
                    newImage.label=object.@name+"          "+object.@organizationType;
                    or.setName=object.@name;
                    or.setType=object.@organizationType;
                    or.setparentId=object.@parentId;
                    bd.put(newImage.id,or);
                    count++;
                    
                    can.addChild(newImage);
                    
                }
                var parent:mx.controls.Button;
                var child:mx.controls.Button;
                var s:Sup;
                var connect:Connector;
                for(var i=0;i<imgcol.length;i++)
                {
                    s=bd.get((imgcol[i] as mx.controls.Button).id) as Sup;
                    //Alert.show(s.getId+" g "+s.getparentId);
                    if(s.getparentId !="0" && s.getparentId !="" )
                    {
                        //Alert.show(searchbd(s.getparentId)+"");
                        if(searchbd(s.getparentId)==-1)
                        {
                            continue;
                        }
                         parent=imgcol[searchbd(s.getparentId)] as mx.controls.Button;
                         child=imgcol[i] as mx.controls.Button;
                        connect=new Connector(parent,child);
                        connect.drawConnector();
                        
                        can.addChild(connect);
                    }
                }
                getpersons.send();
                
            
            
        }
        
        
        protected function test_resultHandler(event:ResultEvent):void
        {
            var str:XML=event.result as XML;
            
            var parentpc:mx.controls.Button;
            var childpc:mx.controls.Button;
            var connectpc:Connector;
            
            //Alert.show(str.toString()+"inside if");
            for each(var object:XML in str.CosmoResponse.* )
            {
                //if(object. object.@parentId !=null && object.@childId !=null )
                //{ 
                  
                  parentpc=imgcol[searchbd(object.@parentId)];
                  childpc=imgcol[searchbd(object.@childId)];
                  //Alert.show("inside if");
                 // Alert.show(str.toString()+"inside if");
                  connectpc=new Connector(parentpc,childpc);
                  connectpc.drawConnector();
                  can.addChild(connectpc);
                
                //Alert.show("inside else");
                
            }
            
        }
        
        protected function conorgper_resultHandler(event:ResultEvent):void
        {
            var connect:Connector=new Connector(par,chi);
            connect.drawConnector();
            can.addChild(connect);
            
        }
        
        protected function lgo_clickHandler(event:MouseEvent):void
        {
            // TODO Auto-generated method stub
            unamo="";
            compo="";
            autho="";
            navigateToURL(new URLRequest("login.html"));
        }
        
    ]]>
  </mx:Script>
    <mx:HTTPService id="conorgper" url="http://localhost:8080/flash/connector.jsp"  resultFormat="e4x"
                    method="POST" useProxy="false"  result="conorgper_resultHandler(event)"
                    showBusyCursor="true">  
        
        <mx:request xmlns="">  
            <data>{Request}</data>   
        </mx:request>  
    </mx:HTTPService>
    <mx:HTTPService id="loginSrv" url="http://localhost:8080/flash/connector.jsp"  resultFormat="e4x"
                    method="POST" useProxy="false"  result="loginSrv_resultHandler(event)"
                    showBusyCursor="true">  
        
        <mx:request xmlns="">  
            <data>{Request}</data>   
        </mx:request>  
    </mx:HTTPService> 
    <mx:HTTPService id="test" url="http://localhost:8080/flash/connector.jsp"  resultFormat="e4x"
                    method="POST" useProxy="false"  result="test_resultHandler(event)"
                    showBusyCursor="true">  
        
        <mx:request xmlns="">  
            <data>{Request}</data>   
        </mx:request>  
    </mx:HTTPService> 
    <mx:HTTPService id="getorganisations" url="http://localhost:8080/flash/connector.jsp"  resultFormat="e4x"
                    method="POST" useProxy="false"  result="getorganisations_resultHandler(event)"
                    showBusyCursor="true">  
        
        <mx:request xmlns="">  
            <data>{go}</data>   
        </mx:request>  
    </mx:HTTPService> 
    <mx:HTTPService id="getpersons" url="http://localhost:8080/flash/connector.jsp"  resultFormat="e4x"
                    method="POST" useProxy="false"  result="getpersons_resultHandler(event)"
                    showBusyCursor="true">  
        
        <mx:request xmlns="">  
            <data>{gp}</data>   
        </mx:request>  
    </mx:HTTPService> 
    
    <mx:HTTPService id="connector" url="http://localhost:8080/flash/connector.jsp"  resultFormat="e4x"
                    method="POST" useProxy="false"  result="connector_resultHandler(event)"
                    showBusyCursor="true">  
        
        <mx:request xmlns="">  
            <data>{Request}</data>   
        </mx:request>  
    </mx:HTTPService> 
    <mx:HTTPService id="getCodes" url="http://localhost:8080/flash/connector.jsp"  resultFormat="e4x"
                    method="POST" useProxy="false"  result="getCodes_resultHandler(event)"
                    showBusyCursor="true">  
        
        <mx:request xmlns="">  
            <data>{ans}</data>   
        </mx:request>  
    </mx:HTTPService> 
    <mx:HTTPService id="getpCodes" url="http://localhost:8080/flash/connector.jsp"  resultFormat="e4x"
                    method="POST" useProxy="false"  result="getpCodes_resultHandler(event)"
                    showBusyCursor="true">  
        
        <mx:request xmlns="">  
            <data>{ansp}</data>   
        </mx:request>  
    </mx:HTTPService> 
    <mx:HTTPService id="getsCodes" url="http://localhost:8080/flash/connector.jsp"  resultFormat="e4x"
                    method="POST" useProxy="false"  result="getsCodes_resultHandler(event)"
                    showBusyCursor="true">  
        
        <mx:request xmlns="">  
            <data>{anss}</data>   
        </mx:request>  
    </mx:HTTPService> 
    <mx:HTTPService id="getptCodes" url="http://localhost:8080/flash/connector.jsp"  resultFormat="e4x"
                    method="POST" useProxy="false"  result="getptCodes_resultHandler(event)"
                    showBusyCursor="true">  
        
        <mx:request xmlns="">  
            <data>{anspt}</data>   
        </mx:request>  
    </mx:HTTPService>
    <mx:Panel x="-4" y="-1" width="177" height="701" title="CONTROLS" layout="vertical" paddingLeft="20">
        <mx:Label x="0" y="210" text="Components" 
                  width="118" height="42" fontSize="15" color="#818181"/>
    <mx:Button label="Organisation" id="organisationbut" x="79" y="101" width="108" height="33" mouseDown="doDrag(event)" >    
    </mx:Button>
        <mx:Button label="Person" id="personbut" x="79" y="121" mouseDown="doDrag(event)" width="108" height="33" >
        </mx:Button>
        
    </mx:Panel>
  
  <mx:Canvas id="can" x="181" y="44" width="881" height="656" alpha="30" backgroundColor="#DBDBDB"
             borderStyle="solid" dragDrop="dragDrop(event)" dragEnter="dragAccept(event)"
             fontStyle="italic">
  </mx:Canvas>
    <mx:Panel  id="properties" x="1060" y="0" width="313" height="700" layout="absolute" title="PROPERTIES">
    <s:Form id="noform" x="0" y="1" width="308" height="400" visible="true">
        <s:FormItem label="No item selected">
            
        </s:FormItem>
        
    </s:Form>
        <s:Form id="organisation" width="309" height="400" visible="false">
            <s:FormItem label="name :">
                <s:TextInput id="toname">
                    
                </s:TextInput>
            </s:FormItem>
            <s:FormItem label="Type">
                    <mx:ComboBox id="totype" dataProvider="{onames}"> 
                        
                        
                    </mx:ComboBox>
            </s:FormItem>
            <s:FormItem id="tomain" label="Id :"  >
                
                <s:Label id="toid" text="">
                    
                </s:Label>
            </s:FormItem>
            <s:FormItem>
                
                <s:Button id="obutton" label="Submit" click="submitOrganisation();"/>
            
            </s:FormItem>
        </s:Form>
        <s:Form id="person" width="309" height="600" visible="false">
            <s:FormItem label="Party Type :">
                <mx:ComboBox id="tppartype" dataProvider="{ptnames}">
                    
                </mx:ComboBox>            
            </s:FormItem>
            <s:FormItem label="First Name :">
                <s:TextInput id="tpfname">
                    
                </s:TextInput>
            </s:FormItem>
            <s:FormItem label="Last Name :">
                <s:TextInput id="tplname">
                    
                </s:TextInput>
            </s:FormItem>
            
            <s:FormItem label="Salutation :">
                <mx:ComboBox id="tpsalu"> 
                    <mx:dataProvider>
                        <mx:String>Mr</mx:String>
                        <mx:String>Ms</mx:String>
                        
                    </mx:dataProvider>
                </mx:ComboBox>
            </s:FormItem>
            <s:FormItem label="Suffix :">
                <s:TextInput id="tpsuf">
                    
                </s:TextInput>
            </s:FormItem>
            <s:FormItem label="Social Security Number :">
                <s:TextInput id="tpssn">
                    
                </s:TextInput>
            </s:FormItem>
            <s:FormItem label="Gender :">
                <mx:ComboBox id="tpgen"> 
                    <s:ArrayCollection>
                        <mx:Object label="Male" data="M"/>
                        <mx:Object label="Female" data="F"/>
                        
                    </s:ArrayCollection>
                </mx:ComboBox>            
            </s:FormItem>
            
            <s:FormItem label="Credentials :">
                <s:TextInput id="tpcreden">
                    
                </s:TextInput>
            </s:FormItem>
            
            <s:FormItem label="Speciality :">
                <mx:ComboBox id="tpspec" dataProvider="{snames}"> 
                    
                    
                </mx:ComboBox>            
            </s:FormItem>
            <s:FormItem label="Provider Type :">
                <mx:ComboBox id="tptype" dataProvider="{pnames}">
                    
                </mx:ComboBox>            
            </s:FormItem>
            <s:FormItem id="tpmain" label="ID :" >
                <s:Label id="tplab" text="">
                    
                </s:Label>
            </s:FormItem>
            <s:FormItem>
            <s:Button  id="pbutton" label="Submit" click="submitPerson();"/>
                    
            </s:FormItem>
        </s:Form>        
    </mx:Panel>
    <s:Button id="lgo" x="660" y="10" label="Logout" click="lgo_clickHandler(event)"/>
    <mx:Label x="354" y="9" width="226" height="27" fontSize="17" fontStyle="italic"
              fontWeight="bold" text="TARGET AREA" textAlign="center" textDecoration="none"/>
    <mx:Button x="214" y="8" label="{transfer}" click="change();">
        
    </mx:Button>
</mx:Application>