GitHub
Tests: 12 • Commercial: 2 • Pet projects: 4 • Legacy: 4
Total: 22

.NET Framework

Test
2021

Project Request

ASP.NET MVC • C# • SQL Server
Idea of the project: if someone wants to order a project development, here you can send an application.
Test
2020

ProjectC

ASP.NET MVC • C# • JSON • jQuery
JSON data processing.
Test
2020

Vehicle Maintenance

ASP.NET MVC • VB.NET • JSON
Idea of the project: if someone wants to order a project development, here you can send an application.
Test
2019

Movie Navigator

ASP.NET MVC • VB.NET
Request information about movie from IMDB.
Test
2018

Customers Exchange

ASP.NET MVC • C# • SQL Server
Automated teller machine emulation.
Test
2016

ATM

ASP.NET MVC • C#
Automated teller machine emulation.

.NET Core

Pet project
2022

Mail Daemon

.NET 9 • Console • JSON
Utility to send mails with customizable settings.

Custom

Code
2024

Buns of code

.NET Framework • C# • JavaScript
Code snippets from my projects, ready to use; tiny tests; code examples.

PHP

Test
2024

Mediabox

PHP 8 • Laravel 11 • Vue.js • Composer • SQLite
Test project for media files management.
Test
2020

Loan Castle

PHP • MariaDB
Jums jāizstrādā kāda lielāk projekta prototips. Izstrādājot prototipu, paturiet prātā, ka projektam attīstoties, šo prototipu varētu vajadzēt pilnveidot.
Test
2020

Content Management

PHP • MySQL • AJAX
Создать простой сайт, где будет страница с формой для авторизации и страница для авторизованного пользователя.
Test
2019

Laravel

PHP • Laravel • Vue.js • Composer • SQLite
Izveidot aplikāciju, kura ik pēc noteikta intervāla (60 sekundes) veic ierakstu datubāzē izmantojot Laravel freimworka iebūvēto funkcionalitāti.
Test
2019

Phone Check

PHP • JavaScript • JSON • Docker
Implement application to detect country by phone number.

Frontend

Test
2021

Forex Wall

npm • React
For this exercise, what we need is a simple live wall for tracking currencies.

Business projects

Commercial
2008

Certification Center

.NET Framework 4.8 • ASP.NET Web Forms • C# • LINQ • SQL Server • ADO.NET • Dapper • JavaScript • jQuery • Git
Transport registration and certification services in Latvia, Customer Relationship Management.
Commercial
2000

Amerikas Auto

.NET Framework 4.8 • ASP.NET Web Forms • C# • LINQ • SQL Server • ADO.NET • Entity Framework • JavaScript • jQuery • Git
Car service and spare parts for all USA and European car models, Customer Relationship Management.

Pet projects

Pet project
2023

Geolocation Assistant

.NET 8 • ASP.NET Core • C# • Web API • JSON • Git
Website for determining geolocation by IP or geotagged photo.
Pet project
2008

Web Dynamics

.NET Framework 4.8 • ASP.NET Web Forms • C# • LINQ • Web API • JSON • SQL Server • Dapper • JavaScript • jQuery • SVG • Git
Software development blog. Articles, books, videos, content management.
Pet project
2000

Blackball

.NET Framework 4.8 • ASP.NET Web Forms • C# • LINQ • Web API • JSON • XML • SQL Server • Dapper • JavaScript • jQuery • SVG • Git
My entertainment portal created from scratch.

Good old times

Legacy
2000

DOS Clock

Turbo Pascal • Assembler
Digital clock.
Legacy
2000

BrainOut

Turbo Pascal • Assembler
Tank battle game.
Legacy
1999

Airport Administrator

Turbo Pascal
Курсовая работа в институте.
Legacy
1998

Atomizer

Turbo Pascal • Assembler
Atomizer, aka «Studio2D». Graphic raster editor. AGI is my own «Atomizer Generated Image» file format.

Project Request

2021 Test

Idea of the project: if someone wants to order a project development, here you can send an application.

ASP.NET MVC C# SQL Server
Information
Source code
  Core
//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/Menu.js var __rootMenuItem; var __menuInterval; var __scrollPanel; var __disappearAfter = 500; function Menu_ClearInterval() { if (__menuInterval) { window.clearInterval(__menuInterval); } } function Menu_Collapse(item) { Menu_SetRoot(item); if (__rootMenuItem) { Menu_ClearInterval(); if (__disappearAfter >= 0) { __menuInterval = window.setInterval("Menu_HideItems()", __disappearAfter); } } } function Menu_Expand(item, horizontalOffset, verticalOffset, hideScrollers) { Menu_ClearInterval(); var tr = item.parentNode.parentNode.parentNode.parentNode.parentNode; var horizontal = true; if (!tr.id) { horizontal = false; tr = tr.parentNode; } var child = Menu_FindSubMenu(item); if (child) { var data = Menu_GetData(item); if (!data) { return null; } child.rel = tr.id; child.x = horizontalOffset; child.y = verticalOffset; if (horizontal) child.pos = "bottom"; PopOut_Show(child.id, hideScrollers, data); } Menu_SetRoot(item); if (child) { if (!document.body.__oldOnClick && document.body.onclick) { document.body.__oldOnClick = document.body.onclick; } if (__rootMenuItem) { document.body.onclick = Menu_HideItems; } } Menu_ResetSiblings(tr); return child; } function Menu_FindMenu(item) { if (item && item.menu) return item.menu; var tr = item.parentNode.parentNode.parentNode.parentNode.parentNode; if (!tr.id) { tr = tr.parentNode; } for (var i = tr.id.length - 1; i >= 0; i--) { if (tr.id.charAt(i) < '0' || tr.id.charAt(i) > '9') { var menu = WebForm_GetElementById(tr.id.substr(0, i)); if (menu) { item.menu = menu; return menu; } } } return null; } function Menu_FindNext(item) { var a = WebForm_GetElementByTagName(item, "A"); var parent = Menu_FindParentContainer(item); var first = null; if (parent) { var links = WebForm_GetElementsByTagName(parent, "A"); var match = false; for (var i = 0; i < links.length; i++) { var link = links[i]; if (Menu_IsSelectable(link)) { if (Menu_FindParentContainer(link) == parent) { if (match) { return link; } else if (!first) { first = link; } } if (!match && link == a) { match = true; } } } } return first; } function Menu_FindParentContainer(item) { if (item.menu_ParentContainerCache) return item.menu_ParentContainerCache; var a = (item.tagName.toLowerCase() == "a") ? item : WebForm_GetElementByTagName(item, "A"); var menu = Menu_FindMenu(a); if (menu) { var parent = item; while (parent && parent.tagName && parent.id != menu.id && parent.tagName.toLowerCase() != "div") { parent = parent.parentNode; } item.menu_ParentContainerCache = parent; return parent; } } function Menu_FindParentItem(item) { var parentContainer = Menu_FindParentContainer(item); var parentContainerID = parentContainer.id; var len = parentContainerID.length; if (parentContainerID && parentContainerID.substr(len - 5) == "Items") { var parentItemID = parentContainerID.substr(0, len - 5); return WebForm_GetElementById(parentItemID); } return null; } function Menu_FindPrevious(item) { var a = WebForm_GetElementByTagName(item, "A"); var parent = Menu_FindParentContainer(item); var last = null; if (parent) { var links = WebForm_GetElementsByTagName(parent, "A"); for (var i = 0; i < links.length; i++) { var link = links[i]; if (Menu_IsSelectable(link)) { if (link == a && last) { return last; } if (Menu_FindParentContainer(link) == parent) { last = link; } } } } return last; } function Menu_FindSubMenu(item) { var tr = item.parentNode.parentNode.parentNode.parentNode.parentNode; if (!tr.id) { tr=tr.parentNode; } return WebForm_GetElementById(tr.id + "Items"); } function Menu_Focus(item) { if (item && item.focus) { var pos = WebForm_GetElementPosition(item); var parentContainer = Menu_FindParentContainer(item); if (!parentContainer.offset) { parentContainer.offset = 0; } var posParent = WebForm_GetElementPosition(parentContainer); var delta; if (pos.y + pos.height > posParent.y + parentContainer.offset + parentContainer.clippedHeight) { delta = pos.y + pos.height - posParent.y - parentContainer.offset - parentContainer.clippedHeight; PopOut_Scroll(parentContainer, delta); } else if (pos.y < posParent.y + parentContainer.offset) { delta = posParent.y + parentContainer.offset - pos.y; PopOut_Scroll(parentContainer, -delta); } PopOut_HideScrollers(parentContainer); item.focus(); } } function Menu_GetData(item) { if (!item.data) { var a = (item.tagName.toLowerCase() == "a" ? item : WebForm_GetElementByTagName(item, "a")); var menu = Menu_FindMenu(a); try { item.data = eval(menu.id + "_Data"); } catch(e) {} } return item.data; } function Menu_HideItems(items) { if (document.body.__oldOnClick) { document.body.onclick = document.body.__oldOnClick; document.body.__oldOnClick = null; } Menu_ClearInterval(); if (!items || ((typeof(items.tagName) == "undefined") && (items instanceof Event))) { items = __rootMenuItem; } var table = items; if ((typeof(table) == "undefined") || (table == null) || !table.tagName || (table.tagName.toLowerCase() != "table")) { table = WebForm_GetElementByTagName(table, "TABLE"); } if ((typeof(table) == "undefined") || (table == null) || !table.tagName || (table.tagName.toLowerCase() != "table")) { return; } var rows = table.rows ? table.rows : table.firstChild.rows; var isVertical = false; for (var r = 0; r < rows.length; r++) { if (rows[r].id) { isVertical = true; break; } } var i, child, nextLevel; if (isVertical) { for(i = 0; i < rows.length; i++) { if (rows[i].id) { child = WebForm_GetElementById(rows[i].id + "Items"); if (child) { Menu_HideItems(child); } } else if (rows[i].cells[0]) { nextLevel = WebForm_GetElementByTagName(rows[i].cells[0], "TABLE"); if (nextLevel) { Menu_HideItems(nextLevel); } } } } else if (rows[0]) { for(i = 0; i < rows[0].cells.length; i++) { if (rows[0].cells[i].id) { child = WebForm_GetElementById(rows[0].cells[i].id + "Items"); if (child) { Menu_HideItems(child); } } else { nextLevel = WebForm_GetElementByTagName(rows[0].cells[i], "TABLE"); if (nextLevel) { Menu_HideItems(rows[0].cells[i].firstChild); } } } } if (items && items.id) { PopOut_Hide(items.id); } } function Menu_HoverDisabled(item) { var node = (item.tagName.toLowerCase() == "td") ? item: item.cells[0]; var data = Menu_GetData(item); if (!data) return; node = WebForm_GetElementByTagName(node, "table").rows[0].cells[0].childNodes[0]; if (data.disappearAfter >= 200) { __disappearAfter = data.disappearAfter; } Menu_Expand(node, data.horizontalOffset, data.verticalOffset); } function Menu_HoverDynamic(item) { var node = (item.tagName.toLowerCase() == "td") ? item: item.cells[0]; var data = Menu_GetData(item); if (!data) return; var nodeTable = WebForm_GetElementByTagName(node, "table"); if (data.hoverClass) { nodeTable.hoverClass = data.hoverClass; WebForm_AppendToClassName(nodeTable, data.hoverClass); } node = nodeTable.rows[0].cells[0].childNodes[0]; if (data.hoverHyperLinkClass) { node.hoverHyperLinkClass = data.hoverHyperLinkClass; WebForm_AppendToClassName(node, data.hoverHyperLinkClass); } if (data.disappearAfter >= 200) { __disappearAfter = data.disappearAfter; } Menu_Expand(node, data.horizontalOffset, data.verticalOffset); } function Menu_HoverRoot(item) { var node = (item.tagName.toLowerCase() == "td") ? item: item.cells[0]; var data = Menu_GetData(item); if (!data) { return null; } var nodeTable = WebForm_GetElementByTagName(node, "table"); if (data.staticHoverClass) { nodeTable.hoverClass = data.staticHoverClass; WebForm_AppendToClassName(nodeTable, data.staticHoverClass); } node = nodeTable.rows[0].cells[0].childNodes[0]; if (data.staticHoverHyperLinkClass) { node.hoverHyperLinkClass = data.staticHoverHyperLinkClass; WebForm_AppendToClassName(node, data.staticHoverHyperLinkClass); } return node; } function Menu_HoverStatic(item) { var node = Menu_HoverRoot(item); var data = Menu_GetData(item); if (!data) return; __disappearAfter = data.disappearAfter; Menu_Expand(node, data.horizontalOffset, data.verticalOffset); } function Menu_IsHorizontal(item) { if (item) { var a = ((item.tagName && (item.tagName.toLowerCase == "a")) ? item : WebForm_GetElementByTagName(item, "A")); if (!a) { return false; } var td = a.parentNode.parentNode.parentNode.parentNode.parentNode; if (td.id) { return true; } } return false; } function Menu_IsSelectable(link) { return (link && link.href) } function Menu_Key(item) { var event; if (item.currentTarget) { event = item; item = event.currentTarget; } else { event = window.event; } var key = (event ? event.keyCode : -1); var data = Menu_GetData(item); if (!data) return; var horizontal = Menu_IsHorizontal(item); var a = WebForm_GetElementByTagName(item, "A"); var nextItem, parentItem, previousItem; if ((!horizontal && key == 38) || (horizontal && key == 37)) { previousItem = Menu_FindPrevious(item); while (previousItem && previousItem.disabled) { previousItem = Menu_FindPrevious(previousItem); } if (previousItem) { Menu_Focus(previousItem); Menu_Expand(previousItem, data.horizontalOffset, data.verticalOffset, true); event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return; } } if ((!horizontal && key == 40) || (horizontal && key == 39)) { if (horizontal) { var subMenu = Menu_FindSubMenu(a); if (subMenu && subMenu.style && subMenu.style.visibility && subMenu.style.visibility.toLowerCase() == "hidden") { Menu_Expand(a, data.horizontalOffset, data.verticalOffset, true); event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return; } } nextItem = Menu_FindNext(item); while (nextItem && nextItem.disabled) { nextItem = Menu_FindNext(nextItem); } if (nextItem) { Menu_Focus(nextItem); Menu_Expand(nextItem, data.horizontalOffset, data.verticalOffset, true); event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return; } } if ((!horizontal && key == 39) || (horizontal && key == 40)) { var children = Menu_Expand(a, data.horizontalOffset, data.verticalOffset, true); if (children) { var firstChild; children = WebForm_GetElementsByTagName(children, "A"); for (var i = 0; i < children.length; i++) { if (!children[i].disabled && Menu_IsSelectable(children[i])) { firstChild = children[i]; break; } } if (firstChild) { Menu_Focus(firstChild); Menu_Expand(firstChild, data.horizontalOffset, data.verticalOffset, true); event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return; } } else { parentItem = Menu_FindParentItem(item); while (parentItem && !Menu_IsHorizontal(parentItem)) { parentItem = Menu_FindParentItem(parentItem); } if (parentItem) { nextItem = Menu_FindNext(parentItem); while (nextItem && nextItem.disabled) { nextItem = Menu_FindNext(nextItem); } if (nextItem) { Menu_Focus(nextItem); Menu_Expand(nextItem, data.horizontalOffset, data.verticalOffset, true); event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return; } } } } if ((!horizontal && key == 37) || (horizontal && key == 38)) { parentItem = Menu_FindParentItem(item); if (parentItem) { if (Menu_IsHorizontal(parentItem)) { previousItem = Menu_FindPrevious(parentItem); while (previousItem && previousItem.disabled) { previousItem = Menu_FindPrevious(previousItem); } if (previousItem) { Menu_Focus(previousItem); Menu_Expand(previousItem, data.horizontalOffset, data.verticalOffset, true); event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return; } } var parentA = WebForm_GetElementByTagName(parentItem, "A"); if (parentA) { Menu_Focus(parentA); } Menu_ResetSiblings(parentItem); event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return; } } if (key == 27) { Menu_HideItems(); event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return; } } function Menu_ResetSiblings(item) { var table = (item.tagName.toLowerCase() == "td") ? item.parentNode.parentNode.parentNode : item.parentNode.parentNode; var isVertical = false; for (var r = 0; r < table.rows.length; r++) { if (table.rows[r].id) { isVertical = true; break; } } var i, child, childNode; if (isVertical) { for(i = 0; i < table.rows.length; i++) { childNode = table.rows[i]; if (childNode != item) { child = WebForm_GetElementById(childNode.id + "Items"); if (child) { Menu_HideItems(child); } } } } else { for(i = 0; i < table.rows[0].cells.length; i++) { childNode = table.rows[0].cells[i]; if (childNode != item) { child = WebForm_GetElementById(childNode.id + "Items"); if (child) { Menu_HideItems(child); } } } } Menu_ResetTopMenus(table, table, 0, true); } function Menu_ResetTopMenus(table, doNotReset, level, up) { var i, child, childNode; if (up && table.id == "") { var parentTable = table.parentNode.parentNode.parentNode.parentNode; if (parentTable.tagName.toLowerCase() == "table") { Menu_ResetTopMenus(parentTable, doNotReset, level + 1, true); } } else { if (level == 0 && table != doNotReset) { if (table.rows[0].id) { for(i = 0; i < table.rows.length; i++) { childNode = table.rows[i]; child = WebForm_GetElementById(childNode.id + "Items"); if (child) { Menu_HideItems(child); } } } else { for(i = 0; i < table.rows[0].cells.length; i++) { childNode = table.rows[0].cells[i]; child = WebForm_GetElementById(childNode.id + "Items"); if (child) { Menu_HideItems(child); } } } } else if (level > 0) { for (i = 0; i < table.rows.length; i++) { for (var j = 0; j < table.rows[i].cells.length; j++) { var subTable = table.rows[i].cells[j].firstChild; if (subTable && subTable.tagName.toLowerCase() == "table") { Menu_ResetTopMenus(subTable, doNotReset, level - 1, false); } } } } } } function Menu_RestoreInterval() { if (__menuInterval && __rootMenuItem) { Menu_ClearInterval(); __menuInterval = window.setInterval("Menu_HideItems()", __disappearAfter); } } function Menu_SetRoot(item) { var newRoot = Menu_FindMenu(item); if (newRoot) { if (__rootMenuItem && __rootMenuItem != newRoot) { Menu_HideItems(); } __rootMenuItem = newRoot; } } function Menu_Unhover(item) { var node = (item.tagName.toLowerCase() == "td") ? item: item.cells[0]; var nodeTable = WebForm_GetElementByTagName(node, "table"); if (nodeTable.hoverClass) { WebForm_RemoveClassName(nodeTable, nodeTable.hoverClass); } node = nodeTable.rows[0].cells[0].childNodes[0]; if (node.hoverHyperLinkClass) { WebForm_RemoveClassName(node, node.hoverHyperLinkClass); } Menu_Collapse(node); } function PopOut_Clip(element, y, height) { if (element && element.style) { element.style.clip = "rect(" + y + "px auto " + (y + height) + "px auto)"; element.style.overflow = "hidden"; } } function PopOut_Down(scroller) { Menu_ClearInterval(); var panel; if (scroller) { panel = scroller.parentNode } else { panel = __scrollPanel; } if (panel && ((panel.offset + panel.clippedHeight) < panel.physicalHeight)) { PopOut_Scroll(panel, 2) __scrollPanel = panel; PopOut_ShowScrollers(panel); PopOut_Stop(); __scrollPanel.interval = window.setInterval("PopOut_Down()", 8); } else { PopOut_ShowScrollers(panel); } } function PopOut_Hide(panelId) { var panel = WebForm_GetElementById(panelId); if (panel && panel.tagName.toLowerCase() == "div") { panel.style.visibility = "hidden"; panel.style.display = "none"; panel.offset = 0; panel.scrollTop = 0; var table = WebForm_GetElementByTagName(panel, "TABLE"); if (table) { WebForm_SetElementY(table, 0); } if (window.navigator && window.navigator.appName == "Microsoft Internet Explorer" && !window.opera) { var childFrameId = panel.id + "_MenuIFrame"; var childFrame = WebForm_GetElementById(childFrameId); if (childFrame) { childFrame.style.display = "none"; } } } } function PopOut_HideScrollers(panel) { if (panel && panel.style) { var up = WebForm_GetElementById(panel.id + "Up"); var dn = WebForm_GetElementById(panel.id + "Dn"); if (up) { up.style.visibility = "hidden"; up.style.display = "none"; } if (dn) { dn.style.visibility = "hidden"; dn.style.display = "none"; } } } function PopOut_Position(panel, hideScrollers) { if (window.opera) { panel.parentNode.removeChild(panel); document.forms[0].appendChild(panel); } var rel = WebForm_GetElementById(panel.rel); var relTable = WebForm_GetElementByTagName(rel, "TABLE"); var relCoordinates = WebForm_GetElementPosition(relTable ? relTable : rel); var panelCoordinates = WebForm_GetElementPosition(panel); var panelHeight = ((typeof(panel.physicalHeight) != "undefined") && (panel.physicalHeight != null)) ? panel.physicalHeight : panelCoordinates.height; panel.physicalHeight = panelHeight; var panelParentCoordinates; if (panel.offsetParent) { panelParentCoordinates = WebForm_GetElementPosition(panel.offsetParent); } else { panelParentCoordinates = new Object(); panelParentCoordinates.x = 0; panelParentCoordinates.y = 0; } var overflowElement = WebForm_GetElementById("__overFlowElement"); if (!overflowElement) { overflowElement = document.createElement("img"); overflowElement.id="__overFlowElement"; WebForm_SetElementWidth(overflowElement, 1); document.body.appendChild(overflowElement); } WebForm_SetElementHeight(overflowElement, panelHeight + relCoordinates.y + parseInt(panel.y ? panel.y : 0)); overflowElement.style.visibility = "visible"; overflowElement.style.display = "inline"; var clientHeight = 0; var clientWidth = 0; if (window.innerHeight) { clientHeight = window.innerHeight; clientWidth = window.innerWidth; } else if (document.documentElement && document.documentElement.clientHeight) { clientHeight = document.documentElement.clientHeight; clientWidth = document.documentElement.clientWidth; } else if (document.body && document.body.clientHeight) { clientHeight = document.body.clientHeight; clientWidth = document.body.clientWidth; } var scrollTop = 0; var scrollLeft = 0; if (typeof(window.pageYOffset) != "undefined") { scrollTop = window.pageYOffset; scrollLeft = window.pageXOffset; } else if (document.documentElement && (typeof(document.documentElement.scrollTop) != "undefined")) { scrollTop = document.documentElement.scrollTop; scrollLeft = document.documentElement.scrollLeft; } else if (document.body && (typeof(document.body.scrollTop) != "undefined")) { scrollTop = document.body.scrollTop; scrollLeft = document.body.scrollLeft; } overflowElement.style.visibility = "hidden"; overflowElement.style.display = "none"; var bottomWindowBorder = clientHeight + scrollTop; var rightWindowBorder = clientWidth + scrollLeft; var position = panel.pos; if ((typeof(position) == "undefined") || (position == null) || (position == "")) { position = (WebForm_GetElementDir(rel) == "rtl" ? "middleleft" : "middleright"); } position = position.toLowerCase(); var y = relCoordinates.y + parseInt(panel.y ? panel.y : 0) - panelParentCoordinates.y; var borderParent = (rel && rel.parentNode && rel.parentNode.parentNode && rel.parentNode.parentNode.parentNode && rel.parentNode.parentNode.parentNode.tagName.toLowerCase() == "div") ? rel.parentNode.parentNode.parentNode : null; WebForm_SetElementY(panel, y); PopOut_SetPanelHeight(panel, panelHeight, true); var clip = false; var overflow; if (position.indexOf("top") != -1) { y -= panelHeight; WebForm_SetElementY(panel, y); if (y < -panelParentCoordinates.y) { y = -panelParentCoordinates.y; WebForm_SetElementY(panel, y); if (panelHeight > clientHeight - 2) { clip = true; PopOut_SetPanelHeight(panel, clientHeight - 2); } } } else { if (position.indexOf("bottom") != -1) { y += relCoordinates.height; WebForm_SetElementY(panel, y); } overflow = y + panelParentCoordinates.y + panelHeight - bottomWindowBorder; if (overflow > 0) { y -= overflow; WebForm_SetElementY(panel, y); if (y < -panelParentCoordinates.y) { y = 2 - panelParentCoordinates.y + scrollTop; WebForm_SetElementY(panel, y); clip = true; PopOut_SetPanelHeight(panel, clientHeight - 2); } } } if (!clip) { PopOut_SetPanelHeight(panel, panel.clippedHeight, true); } var panelParentOffsetY = 0; if (panel.offsetParent) { panelParentOffsetY = WebForm_GetElementPosition(panel.offsetParent).y; } var panelY = ((typeof(panel.originY) != "undefined") && (panel.originY != null)) ? panel.originY : y - panelParentOffsetY; panel.originY = panelY; if (!hideScrollers) { PopOut_ShowScrollers(panel); } else { PopOut_HideScrollers(panel); } var x = relCoordinates.x + parseInt(panel.x ? panel.x : 0) - panelParentCoordinates.x; if (borderParent && borderParent.clientLeft) { x += 2 * borderParent.clientLeft; } WebForm_SetElementX(panel, x); if (position.indexOf("left") != -1) { x -= panelCoordinates.width; WebForm_SetElementX(panel, x); if (x < -panelParentCoordinates.x) { WebForm_SetElementX(panel, -panelParentCoordinates.x); } } else { if (position.indexOf("right") != -1) { x += relCoordinates.width; WebForm_SetElementX(panel, x); } overflow = x + panelParentCoordinates.x + panelCoordinates.width - rightWindowBorder; if (overflow > 0) { if (position.indexOf("bottom") == -1 && relCoordinates.x > panelCoordinates.width) { x -= relCoordinates.width + panelCoordinates.width; } else { x -= overflow; } WebForm_SetElementX(panel, x); if (x < -panelParentCoordinates.x) { WebForm_SetElementX(panel, -panelParentCoordinates.x); } } } } function PopOut_Scroll(panel, offsetDelta) { var table = WebForm_GetElementByTagName(panel, "TABLE"); if (!table) return; table.style.position = "relative"; var tableY = (table.style.top ? parseInt(table.style.top) : 0); panel.offset += offsetDelta; WebForm_SetElementY(table, tableY - offsetDelta); } function PopOut_SetPanelHeight(element, height, doNotClip) { if (element && element.style) { var size = WebForm_GetElementPosition(element); element.physicalWidth = size.width; element.clippedHeight = height; WebForm_SetElementHeight(element, height - (element.clientTop ? (2 * element.clientTop) : 0)); if (doNotClip && element.style) { element.style.clip = "rect(auto auto auto auto)"; } else { PopOut_Clip(element, 0, height); } } } function PopOut_Show(panelId, hideScrollers, data) { var panel = WebForm_GetElementById(panelId); if (panel && panel.tagName.toLowerCase() == "div") { panel.style.visibility = "visible"; panel.style.display = "inline"; if (!panel.offset || hideScrollers) { panel.scrollTop = 0; panel.offset = 0; var table = WebForm_GetElementByTagName(panel, "TABLE"); if (table) { WebForm_SetElementY(table, 0); } } PopOut_Position(panel, hideScrollers); var z = 1; var isIE = window.navigator && window.navigator.appName == "Microsoft Internet Explorer" && !window.opera; if (isIE && data) { var childFrameId = panel.id + "_MenuIFrame"; var childFrame = WebForm_GetElementById(childFrameId); var parent = panel.offsetParent; if (!childFrame) { childFrame = document.createElement("iframe"); childFrame.id = childFrameId; childFrame.src = (data.iframeUrl ? data.iframeUrl : "about:blank"); childFrame.style.position = "absolute"; childFrame.style.display = "none"; childFrame.scrolling = "no"; childFrame.frameBorder = "0"; if (parent.tagName.toLowerCase() == "html") { document.body.appendChild(childFrame); } else { parent.appendChild(childFrame); } } var pos = WebForm_GetElementPosition(panel); var parentPos = WebForm_GetElementPosition(parent); WebForm_SetElementX(childFrame, pos.x - parentPos.x); WebForm_SetElementY(childFrame, pos.y - parentPos.y); WebForm_SetElementWidth(childFrame, pos.width); WebForm_SetElementHeight(childFrame, pos.height); childFrame.style.display = "block"; if (panel.currentStyle && panel.currentStyle.zIndex && panel.currentStyle.zIndex != "auto") { z = panel.currentStyle.zIndex; } else if (panel.style.zIndex) { z = panel.style.zIndex; } } panel.style.zIndex = z; } } function PopOut_ShowScrollers(panel) { if (panel && panel.style) { var up = WebForm_GetElementById(panel.id + "Up"); var dn = WebForm_GetElementById(panel.id + "Dn"); var cnt = 0; if (up && dn) { if (panel.offset && panel.offset > 0) { up.style.visibility = "visible"; up.style.display = "inline"; cnt++; if (panel.clientWidth) { WebForm_SetElementWidth(up, panel.clientWidth - (up.clientLeft ? (2 * up.clientLeft) : 0)); } WebForm_SetElementY(up, 0); } else { up.style.visibility = "hidden"; up.style.display = "none"; } if (panel.offset + panel.clippedHeight + 2 <= panel.physicalHeight) { dn.style.visibility = "visible"; dn.style.display = "inline"; cnt++; if (panel.clientWidth) { WebForm_SetElementWidth(dn, panel.clientWidth - (dn.clientLeft ? (2 * dn.clientLeft) : 0)); } WebForm_SetElementY(dn, panel.clippedHeight - WebForm_GetElementPosition(dn).height - (panel.clientTop ? (2 * panel.clientTop) : 0)); } else { dn.style.visibility = "hidden"; dn.style.display = "none"; } if (cnt == 0) { panel.style.clip = "rect(auto auto auto auto)"; } } } } function PopOut_Stop() { if (__scrollPanel && __scrollPanel.interval) { window.clearInterval(__scrollPanel.interval); } Menu_RestoreInterval(); } function PopOut_Up(scroller) { Menu_ClearInterval(); var panel; if (scroller) { panel = scroller.parentNode } else { panel = __scrollPanel; } if (panel && panel.offset && panel.offset > 0) { PopOut_Scroll(panel, -2); __scrollPanel = panel; PopOut_ShowScrollers(panel); PopOut_Stop(); __scrollPanel.interval = window.setInterval("PopOut_Up()", 8); } }