/*
 * 
 * Copyright © 2012 All Rights Reserved, http://simpletrees.co.uk
 * 
 * NOTICE:  All information contained herein is, and remains the property 
 * of Simple Trees Ltd and its suppliers, if any. The intellectual and 
 * technical concepts contained herein are proprietary to Simple Trees Ltd 
 * and its suppliers and may be covered by UK, EU and Foreign Patents, 
 * patents in process, and are protected by copyright law. Dissemination of 
 * this information or reproduction of this material is strictly forbidden
 * unless prior written permission is obtained from Simple Trees Ltd. 
 *
 * This version of the product and all associated intellectual/technical
 * concepts are intended for demo purposes only and not for resale.
 *
 * Contact info@simpletrees.co.uk for license agreements or more details.
 *
 */
function buildClientTree(){testMode=getQueryString("testmode","false");if(testMode=="true"){testData()}else{var a=getQueryString("id","");if(a==""){a=window.parent.Xrm.Page.data.entity.getId()}if(a!=""){var b=PadServerUrl(Xrm.Page.context.getServerUrl())+"XRMServices/2011/OrganizationData.svc/"+"AccountSet?$filter=AccountId eq guid'"+a+"'";odcc=0;ODataCall(b,recievedAccountData)}}}function recievedAccountData(a){processAccount(a.d.results[0],1)}function processAccount(a,b){if(b>10)return;if(!treeData||treeData.length==0){treeData=[{text:a.Name,id:a.AccountId,etc:1,imageUrl:imageUrls.Account}];createItemGroups(treeData[0])}else{if(a.ParentAccountId){var c=getAccount(treeData,a.ParentAccountId.Id);if(c){pushOrCreateItem(c,"Sub Companies",a.Name,a.AccountId,1)}}}odcc=odcc+4;var d=PadServerUrl(Xrm.Page.context.getServerUrl())+"XRMServices/2011/OrganizationData.svc/"+"AccountSet?$filter=ParentAccountId/Id eq guid'"+a.AccountId+"'";ODataCall(d,processSubCompanies);d=PadServerUrl(Xrm.Page.context.getServerUrl())+"XRMServices/2011/OrganizationData.svc/"+"ContactSet?$filter=ParentCustomerId/Id eq guid'"+a.AccountId+"'";ODataCall(d,processContacts);d=PadServerUrl(Xrm.Page.context.getServerUrl())+"XRMServices/2011/OrganizationData.svc/"+"ConnectionSet?$select=ConnectionId,Record1Id,Record2Id,Record2ObjectTypeCode,Record2RoleId&$filter=Record1Id/Id eq guid'"+a.AccountId+"'";ODataCall(d,processConnections);d=PadServerUrl(Xrm.Page.context.getServerUrl())+"XRMServices/2011/OrganizationData.svc/"+"OpportunitySet?$filter=CustomerId/Id eq guid'"+a.AccountId+"'";ODataCall(d,processOpportunities)}function processSubCompanies(a){for(var b=0;b<a.d.results.length;b++){processAccount(a.d.results[b],1)}odcc=odcc-1;createKendoTree(treeData)}function processContacts(a){for(var b=0;b<a.d.results.length;b++){var c=a.d.results[b];var d=getAccount(treeData,c.ParentCustomerId.Id);if(d){pushOrCreateItem(d,"Contacts",c.FullName,c.ContactId,2)}}odcc=odcc-1;createKendoTree(treeData)}function processConnections(a){for(var b=0;b<a.d.results.length;b++){var c=a.d.results[b];var d=getAccount(treeData,c.Record1Id.Id);if(d){pushOrCreateItem(d,"Connections",c.Record2Id.Name+"("+c.Record2RoleId.Name+")",c.ConnectionId,3234)}}odcc=odcc-1;createKendoTree(treeData)}function processOpportunities(a){for(var b=0;b<a.d.results.length;b++){var c=a.d.results[b];var d=getAccount(treeData,c.CustomerId.Id);if(d){pushOrCreateItem(d,"Opportunities",c.Name,c.OpportunityId,3)}}odcc=odcc-1;createKendoTree(treeData)}function pushOrCreateItem(a,b,c,d,e){if(!a.items){createItemGroups(a)}for(var f=0;f<a.items.length;f++){if(a.items[f].text==b){a.items[f].items.push({text:c,id:d,etc:e,imageUrl:imageUrls[b]});break}}}function createItemGroups(a){a.items=[];a.items.push({text:"Sub Companies",imageUrl:"../images/account.png",items:[]});a.items.push({text:"Contacts",imageUrl:"../images/contact.png",items:[]});a.items.push({text:"Connections",imageUrl:"../images/connection.png",items:[]});a.items.push({text:"Opportunities",imageUrl:"../images/opportunity.png",items:[]})}function getAccount(a,b){for(var c=0;c<a.length;c++){if(a[c].id==b){return a[c]}if(a[c].items){var d=getAccount(a[c].items,b);if(d)return d}}return null}function getAccountByName(a,b){for(var c=0;c<a.length;c++){if(a[c].text==b){return a[c]}if(a[c].items){var d=getAccountByName(a[c].items,b);if(d)return d}}return null}function testData(){treeData=[];treeData.push({id:"Item1",text:"Simple Trees Bank",etc:1,imageUrl:"../images/account.png",items:[{id:"Item1.1",etc:2,text:"Simple Trees Accounting",imageUrl:"../images/account.png"},{id:"Item1.2",text:"Conor Gallagher",imageUrl:"../images/contact.png"}]});odcc=1;createKendoTree(treeData);odcc=0;treeData.push({id:"Item2",text:"Microsoft",imageUrl:"../images/account.png"});createKendoTree(treeData)}function onSelect(a){accountTree.expand(a.node)}function createKendoTree(a){if(odcc<=0){accountTree=$("#treeView").kendoTreeView({theme:"blueopal",dataSource:a,select:onSelect}).data("kendoTreeView");$(".k-in").dblclick(itemDblClick)}}function itemDblClick(a){var b=getAccountByName(treeData,$(this).text());if(testMode=="true"){alert("Opening "+b.id+" with etc "+b.etc)}else{if(b&&b.id){OpenRecord(b.id,b.etc)}}}var accountTree;var testMode;var treeData;var odcc;var imageUrls={Account:"../images/account.png","Sub Companies":"../images/account.png",Contacts:"../images/contact.png",Connections:"../images/connection.png",Opportunities:"../images/opportunity.png"}