Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/ASP.NET/CS/MVCDemos/Scripts/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/ASP.NET/CS/MVCDemos/Scripts/Demo.js

DXDemo = {};

DXDemo.focusSearch = function() {
    searchBox.Focus();
};

DXDemo.CurrentDemoGroupKey = "";
DXDemo.CurrentDemoKey = "";
DXDemo.CurrentThemeCookieKey = "DXCurrentTheme";
DXDemo.CodeLoaded = false;
DXDemo.ShowCodeInNewWindow = function(demoTitle, codeTitle){
    var codeWnd = window.open("", "_blank", "status=0,toolbar=0,scrollbars=1,resizable=1,top=74,left=74,width=" + (screen.availWidth - 150) + ",height=" + (screen.availHeight - 150));
    codeWnd.document.open();
    codeWnd.document.write("<html><head><title>");
    codeWnd.document.write(demoTitle + " - " + codeTitle);
    codeWnd.document.write("</title>");
    var links = document.getElementsByTagName("link");
    for(var i = 0; i < links.length; i++){
        if(links[i].href && links[i].href.indexOf("CodeFormatter.css") > -1){
            codeWnd.document.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"" + links[i].href + "\" />");
            break;
        }
    }
    codeWnd.document.write("</head><body><code>");
    var codeTab = DemoPageControl.GetTabByName(codeTitle);
    codeWnd.document.write(document.getElementById("CodeBlock" + (codeTab.index - 1)).innerHTML);
    codeWnd.document.write("</code></body></html>");
    codeWnd.document.close();
}
DXDemo.SetCurrentTheme = function(theme){
    ThemeSelectorPopup.Hide();
    ASPxClientUtils.SetCookie(DXDemo.CurrentThemeCookieKey, theme);
    if(document.forms[0] && (!document.forms[0].onsubmit || document.forms[0].onsubmit.toString().indexOf("Sys.Mvc.AsyncForm") == -1)) {
        // for export purposes
        var eventTarget = document.getElementById("__EVENTTARGET");
        if(eventTarget)
            eventTarget.value = "";
        var eventArgument = document.getElementById("__EVENTARGUMENT");
        if(eventArgument)
            eventArgument.value = "";

        document.forms[0].submit();
    } else {
        window.location.reload();
    }
}
DXDemo.CodeNavBar_HeaderClick = function(s, e) {
    var source = _aspxGetEventSource(e.htmlEvent);
    var tag = source.tagName;
    e.cancel = tag != "A" && tag != "IMG";
}
DXDemo.ShowScreenshotWindow = function(evt, link){
    DXDemo.ShowScreenshot(link.href); 
    evt.cancelBubble = true; 
    return false;
}
DXDemo.ShowScreenshot = function(src){
    var screenLeft = document.all && !document.opera ? window.screenLeft : window.screenX;
	var screenWidth = screen.availWidth;
	var screenHeight = screen.availHeight;
    var zeroX = Math.floor((screenLeft < 0 ? 0 : screenLeft) / screenWidth) * screenWidth;
    
	var windowWidth = 475;
	var windowHeight = 325;
	var windowX = parseInt((screenWidth - windowWidth) / 2);
	var windowY = parseInt((screenHeight - windowHeight) / 2);
	if(windowX + windowWidth > screenWidth)
		windowX = 0;
	if(windowY + windowHeight > screenHeight)
		windowY = 0;

    windowX += zeroX;

	var popupwnd = window.open(src,'_blank',"left=" + windowX + ",top=" + windowY + ",width=" + windowWidth + ",height=" + windowHeight + ", scrollbars=no, resizable=no", true);
	if (popupwnd != null && popupwnd.document != null && popupwnd.document.body != null) {
	    popupwnd.document.body.style.margin = "0px"; 
    }
}
DXDemo.treeViewNodeClick = function(s, e) {
    var node = e.node;
    if(node.GetNavigateUrl() == "javascript:;") {
        node.SetExpanded(!node.GetExpanded());
    }
}
DXDemo.treeViewExpandedChanging = function(s, e) {
    var node = e.node;
    if(!node.parent && s.GetNodeCount() == 1)
        e.cancel = true;
}


DXDemo.Search = {
    searchTimeout: null,
    lastSearch: null,
    selectedItem: null,

    onSearchBoxKeyPress: function(s, e) {
        var text = SearchBox.GetValue();
        if(text != DXDemo.Search.lastSearch) {
            if(DXDemo.Search.searchTimeout != null)
                clearTimeout(DXDemo.Search.searchTimeout);
            DXDemo.Search.searchTimeout = setTimeout(function() {
                DXDemo.Search.doSearch(text);
            }, 500);
        }
        DXDemo.Search.lastSearch = text;
    },
    onSearchBoxKeyDown: function(s, e) {
        var keyCode = ASPxClientUtils.GetKeyCode(e.htmlEvent);
        var prevent = false;
        if(keyCode == 13) {
            ASPxClientUtils.PreventEventAndBubble(e.htmlEvent);
            if(DXDemo.Search.selectedItem)
                document.location = DXDemo.Search.selectedItem.GetNavigateUrl();
        }
        if(keyCode == 40) {
            DXDemo.Search.moveSelectedItem(1);
            prevent = true;
        }
        if(keyCode == 38) {
            DXDemo.Search.moveSelectedItem(-1);
            prevent = true;
        }
        if(prevent)
            ASPxClientUtils.PreventEventAndBubble(e.htmlEvent);
    },
    onSearchBoxGotFocus: function() {
        var text = SearchBox.GetValue();
        if(text && text.length > 0)
            DXDemo.Search.showPopup();
    },

    doSearch: function(text) {
        DXDemo.Search.selectedItem = null;
        if(text && text.length > 2) {
            DXDemo.Search.showPopup();
            var isMvc = window.MVCxClientPopupControl !== undefined && SearchPopup instanceof window.MVCxClientPopupControl;
            SearchPopup.PerformCallback(isMvc ? { text: text} : text);
        }
        else {
            SearchPopup.Hide();
        }
    },
    moveSelectedItem: function(direction) {
        var groupCount = SearchResultsNavBar.GetGroupCount();
        var group, item;
        var newItem = null;
        if(groupCount == 0 || !SearchPopup.IsVisible()) {
            DXDemo.Search.selectedItem = null;
            return;
        }
        if(DXDemo.Search.selectedItem == null) {
            group = SearchResultsNavBar.GetGroup(direction > 0 ? 0 : groupCount - 1);
            item = group.GetItem(direction > 0 ? 0 : group.GetItemCount() - 1);
            newItem = item;
        }
        else {
            group = DXDemo.Search.selectedItem.group;
            if(direction > 0) {
                if(DXDemo.Search.selectedItem.index < group.GetItemCount() - 1)
                    newItem = group.GetItem(DXDemo.Search.selectedItem.index + 1);
                else {
                    group = SearchResultsNavBar.GetGroup(group.index < groupCount - 1 ? group.index + 1 : 0);
                    newItem = group.GetItem(0);
                }
            }
            else {
                if(DXDemo.Search.selectedItem.index > 0)
                    newItem = group.GetItem(DXDemo.Search.selectedItem.index - 1);
                else {
                    group = SearchResultsNavBar.GetGroup(group.index > 0 ? group.index - 1 : groupCount - 1);
                    newItem = group.GetItem(group.GetItemCount() - 1);
                }
            }
        }
        DXDemo.Search.selectNavBarItem(newItem);
    },
    showPopup: function() {
        DXDemo.Search.selectNavBarItem(null);
        SearchPopup.ShowAtElementByID("SearchPanel");
    },
    selectNavBarItem: function(item) {
        if(window.SearchResultsNavBar) {
            SearchResultsNavBar.SetSelectedItem(item);
            DXDemo.Search.selectedItem = item;
            if(item) {
                var scrollContainer = SearchResultsNavBar.GetMainElement().parentNode;
                var itemElement = document.getElementById("sr_" + item.group.index + "_" + item.index);
                var scrollContainerHeight = scrollContainer.offsetHeight;
                var itemElementOffsetTop = itemElement.offsetTop;
                if(itemElementOffsetTop >= scrollContainer.scrollTop + scrollContainerHeight || itemElementOffsetTop < scrollContainer.scrollTop)
                    scrollContainer.scrollTop = itemElementOffsetTop < scrollContainerHeight ? 0 : itemElementOffsetTop;
            }
        }
    }
}

DXEventMonitor = {
    TimerId: -1,
    PendingUpdates: [ ],
    
    Trace: function(sender, e, eventName) {
        var checkbox = document.getElementById("EventCheck" + eventName);
        if(!checkbox.checked) return;
        
        var self = DXEventMonitor;
        var name = sender.name;
        var lastSeparator = name.lastIndexOf("_");
        if(lastSeparator > -1)
            name = name.substr(lastSeparator + 1);

        var builder = ["<table>"];
        self.BuildTraceRowHtml(builder, "Sender", name, 100);
        self.BuildTraceRowHtml(builder, "EventType", eventName.replace(/_/g, " "));
        var count = 0;
        for(var child in e) {
            if (typeof e[child] == "function") continue;
            var childValue = e[child];
            if (typeof e[child] == "object" && e[child] && e[child].name)
                childValue = "[name: '" + e[child].name + "']";
            self.BuildTraceRowHtml(builder, count ? "" : "Arguments", child + " = " + childValue);
            count++;
        }                
        builder.push("</table><br />");
        
        self.PendingUpdates.unshift(builder.join(""));
        if(self.TimerId < 0)
            self.TimerId = window.setTimeout(self.Update, 0);
    },
    
    BuildTraceRowHtml: function(builder, name, text, width) {
        builder.push("<tr><td valign=top");
        if(width)
            builder.push(" style='width: ", width, "px'");
        builder.push(">");
        if(name)
            builder.push("<b>", name, ":</b>");        
        builder.push("</td><td valign=top>", text, "</td></tr>");
    },
    
    GetLogElement: function() {
        return document.getElementById("EventLog")
    },
    
    Update: function() {                    
        var self = DXEventMonitor;
        var element = self.GetLogElement();
        
        element.innerHTML = self.PendingUpdates.join("") + element.innerHTML;
        self.TimerId = -1;
        self.PendingUpdates = [ ];                
    },
    
    Clear: function() {
       DXEventMonitor.GetLogElement().innerHTML = ""; 
    }
};