﻿params = {};
var currentrecord = null;
var datasrc = null

function delineate()
{
    if (window.location.href.contains("?"))
    {
        urlquery = window.location.href.split("?")[1];
        urltable = urlquery.split("&");
        urltable.each( function(keyvalpair, index)
        {
            pair = keyvalpair.split("=");
            
            eval('params.' + pair[0] + ' = new Object();');
            eval('params.' + pair[0] + ' = pair[1];');
        });
    }
};

function GotoOverview(args,control)
{
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) 
    {
        DScript.DScovery.DScoveryManager.saveState();
        theForm.action = './overview.aspx?src=' + this.datasourcename;
        theForm.submit();
    }
};

function GotoBookmarks(control)
{
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) 
    {
        DScript.DScovery.DScoveryManager.saveState();
        theForm.action = './bookmarks.aspx';
        theForm.submit();
    }
};


function UpdateBookmark()
{
        if (Bookmarks1 == null || !Bookmarks1) return;

        var addbookmark = new Element('a', {
                'class': 'bookmark',
                'styles': {
                    'cursor': 'pointer'
                }
        });
        
        if (!Bookmarks1.Contains(datasrc))        
        {
                addbookmark.innerHTML = " : Add bookmark";
                addbookmark.onclick = AddBookmark.bindAsEventListener(datasrc,addbookmark);
                
        }
        else
        {
                addbookmark.innerHTML = " : Delete bookmark";
                addbookmark.onclick = DeleteBookmark.bindAsEventListener(datasrc,addbookmark);
        }
        
        var breadcrumb = $('breadcrumb');
        if (breadcrumb != null)
        {
            addbookmark.inject(breadcrumb);
        }
};

function AddBookmark(args,control)
{
    Bookmarks1.Add(this);
    var removedElement = control.remove();
    UpdateBookmark();

};

function DeleteBookmark(args,control)
{
    Bookmarks1.Delete(this);
    var removedElement = control.remove();
    UpdateBookmark();
};

DScript.HTML.HTMLControls.Xml.implement
({
    onSuccess : function()
    {
        if (this.myXHR.transport.statusText == 'OK')
        {
            currentrecord.xmlstring = this.myXHR.transport.responseText;
            DSCoveryContainer1.Xml1.BindToXmlDataSource(this.myXHR.transport.responseText);
            
            DSCoveryContainer1.onCallBack(DSCoveryContainer1.Xml1);
            DSCoveryContainer1.Visible(true);
        }
    }
    
});

DScript.DScovery.DScoveryContainer.implement
({
    PostRender : function()
    {
        currentrecord.id = DSCoveryContainer1.control.getElement('table').getAttribute(datasrc.context.keyfield);
        Tree1.selectItem(currentrecord.datasourcename, datasrc.context.keyfield, currentrecord.id);//JAM
        
        var breadcrumb = $('breadcrumb');
        if (breadcrumb != null)
        {
            var bookmarkbreadcrumb = breadcrumb.getElementsByClassName('bookmark')[0];
            if (bookmarkbreadcrumb)
            {
                var removedElement = bookmarkbreadcrumb.remove();
            }
            
            if (currentrecord.id)
                UpdateBookmark();
        }
        
        var separatorCtrl = $$('p.seperator');
        if ( separatorCtrl != null ) {
           separatorCtrl[0].style.display = 'none';
        }        
    }
});

DScript.DScovery.Navigation.Pager.implement
({ 
    onUpdate : function()
    {
        if (DScript.DScovery.DScoveryManager.ayncmode == 1)
        {
            this.doCallBack();
        }
        else if (DScript.DScovery.DScoveryManager.ayncmode == 0)
        {
            this.onPostBack(sender);
        }
        
        datasrc.context.record.position = this.context.current - 1;
        DSCoveryContainer1.Xml1.BindToXmlDataSource(datasrc.context.record);
        DSCoveryContainer1.onCallBack(DSCoveryContainer1.Xml1);
        DSCoveryContainer1.Visible(true);
    }
});

/*
DScript.DScovery.Search.DScoverySearch.implement
({
    onFinishSearch : function (sender)
    {
        hits = 0;
        
        sender.datasources.each( function(datagrp, index)
        {
            datagrp.datasources.each( function(src, index)
            {
                if (src.ischecked == true && hits >= 0)
                {
                    if (src.hitcount > 0)
                    {
                        hits += src.hitcount;
                    }
                    else if (src.hitcount < 0)
                    {
                        MessageBox.write(src.htmlstring);
                        hits = -1;
                    }
                }
            });
        });
        
        if (hits >= 0) MessageBox.write("No Search Results found.");
    }
});
*/

DScript.DScovery.DScoveryContainer.implement
({
    GetProperties : function(obj){
        var props = new Array();

        for (var s in obj)
        {
            if (typeof(obj[s]) != "function") {
                
               props[props.length] = s;
            }
        }

        return props;
    },
    
    PostRender : function()
    {
        currentrecord = eObj.Data;
        if ( currentrecord != null ) {
            datasrc.context.record = eObj.Data.record;
            
            var props = this.GetProperties(datasrc.context.record.fields);
            console.log(props.length);
            
            var pointer = props.length - 1;
            
            while(pointer >= 0)
            {
                if (props[pointer] && typeof(datasrc.context.record.fields[props[pointer]]) != "function")
                {
                    //console.log(props[pointer] + " : " + datasrc.context.record.fields[props[pointer]]);
                    Tree1.selectItem(eObj.Data.record.datasourcename, props[pointer], datasrc.context.record.fields[props[pointer]] ); //JAM
                    // End loop and get out
                    pointer = -1;
                    break;
                }
                else
                    pointer--;
            }

            var separatorCtrl = $E('p.seperator');
            if ( separatorCtrl != null ) {
               separatorCtrl.setStyles('Display:none');
            }                
            
            if (currentrecord.record.id)
            {
                UpdateBookmark();
            }
        }
    },

    PageLoad : function()
    {
        DSCoverySearch1.SearchTemplateContainer.setAsDefault();
        
        delineate();
        
        currentrecord = null;
        
        if (params.src != null)
        {
            datasrc = DScript.DScovery.DataGroups.Find(params.src);
            
            if (datasrc != null)
                currentrecord = datasrc.context.record;
        }
        
        if (currentrecord == null) return;
        
        if (currentrecord.id == null)
        {
            currentrecord.id = params.id;
            currentrecord.datasourcename = params.src;
            DSCoveryContainer1.Xml1.context.DocumentSource = "./dscoverysearch.aspx";
            DSCoveryContainer1.Xml1.Request("name=" + currentrecord.datasourcename + "&q=" + datasrc.context.keyfield + ":%22" + currentrecord.id + "%22&record=0");
        }
        else
        {
            Bookmarks1 = null;
        
            // -- Handle Bookmarking
            ///*
            
            Bookmarks1 = new DScript.DScovery.Bookmarks();
            
            var overviewlink = new Element('a', {
                'class': 'overview',
                'styles': {
                    'cursor': 'pointer'
                    }
                });
                
            overviewlink.innerHTML = 'Overview';
            
             var bookmarkslink = new Element('a', {
                'class': 'viewbookmarks',
                'styles': {
                    'cursor': 'pointer'
                    }
                });
                
             bookmarkslink.innerHTML = ' : View Bookmarks';
            
            var breadcrumb = $('breadcrumb');
            
            if (breadcrumb != null)
            {
                overviewlink.onclick = GotoOverview.bindAsEventListener(currentrecord,breadcrumb);
                overviewlink.inject(breadcrumb);
                
                bookmarkslink.onclick = GotoBookmarks.bindAsEventListener(breadcrumb);
                bookmarkslink.inject(breadcrumb);
            }
           
            //*/
            
            DSCoveryContainer1.Xml1.BindToXmlDataSource(currentrecord);
            DSCoveryContainer1.onCallBack(DSCoveryContainer1.Xml1);
            DSCoveryContainer1.Visible(true);
            
        }
        
        /*
        var msgBox = new DScript.HTML.HTMLControls.Control();
        msgBox.control = $('pageControls').getChildren()[2];
        MessageBox = new DScript.DScovery.Message.MessageBox(msgBox);
        */
        
        datasrc.context.record = currentrecord.record;
     }
});

DScript.DServe.Tree.implement(
{
    onNavigate : function(term)
    {
      
    }
});


