﻿//                      DON'T REMOVE THESE COMMENTS!
//##################################################################
//                      Copyright ©2006 Behrouz Rad.
//                         behrouz.rad@gmail.com
//##################################################################

var cMenu = new Object();
var tdClicked;
var DataKeySelected;
cMenu["1"] = {menuID:"contextMenu1"};
  
// position and display context menu
function showContextMenu(evt) {
    // first we need hide any existing menu
    hideContextMenus();
    evt = (evt) ? evt : ((event) ? event : null);
    if (evt) {
       var elem = (evt.target) ? evt.target : evt.srcElement;
         if (elem.nodeType == 3) {
            elem = elem.parentNode;
        }
        
        try {
            DataKeySelected = elem.getElementsByTagName("div")[0].innerHTML;
        }
        catch (e) { // in "Edit Mode" has no Properties Error will occure!
        }
        tdClicked = elem;
        if (elem.parentNode.className == "contextEntry") {
            var menu = document.getElementById("contextMenu1");
            
            if (menu.setCapture) {
                menu.setCapture();
            }
            // position menu at mouse event location
            var left, top;
            if (evt.pageX) {
                left = evt.pageX;
                top = evt.pageY;
            } else if (evt.offsetX || evt.offsetY) {
                left = evt.offsetX;
                top = evt.offsetY;
            } else if (evt.clientX) {
                left = evt.clientX;
                top = evt.clientY;
            }
            if (typeof window.event != "undefined") { //Browser is IE
               menu.style.left = window.event.x - 2;
               menu.style.top = window.event.y - 2;
            } else { //Browser isn't IE
               menu.style.left = left + "px";
               menu.style.top = top + "px";
            } 
            menu.style.visibility = "visible";
            if (evt.preventDefault) {
                evt.preventDefault();
            }
            evt.returnValue = false;
           
        }
    }
}
  
// do action for chosen menu item
function execMenu(evt) {
    evt = (evt) ? evt : ((event) ? event : null);
    if (evt) {
        var elem = (evt.target) ? evt.target : evt.srcElement;
        if (elem.nodeType == 3) {
            elem = elem.parentNode;
        }
        if (elem.className == "menuItemOn") {
            var index = elem.parentNode.rowIndex;
            switch (index) {
                case 0: //Remove Item was Clicked
                   var chkRemove = tdClicked.parentNode.getElementsByTagName("input")[1];
                   if (chkRemove.type == "checkbox") {
                       chkRemove.checked = true;
                   }
                   var btnDelete = document.getElementById("gridelement").value;
                   var tmpArray = btnDelete.split(",");
                   try {
                       hideContextMenus();
                       document.getElementById(tmpArray[0]).click();
                   }
                   catch(e) { // "btnDelete" has no Properties Error!
                       alert("در حال حاضر امکان حذف وجود ندارد! برنامه در مد ویرایش قرار دارد");
                   }
                   break;
                case 1: //Edit Item was Clicked
                   var btnEdit = tdClicked.parentNode.getElementsByTagName("input")[0];
                   if (btnEdit.type == "button") {
                       hideContextMenus();
                       btnEdit.click();
                   }
                   break;
                case 2: //Insert Item was Clicked
                   var btnAdd = document.getElementById("gridelement").value;
                   var tmpArray = btnAdd.split(",");
                   try {
                       hideContextMenus();
                       document.getElementById(tmpArray[1]).click();
                   }
                   catch(e) { // "btnDelete" has no Properties Error will occure!
                       alert("در حال حاضر امکان ثبت رکورد وجود ندارد! برنامه در مد ویرایش قرار دارد");
                   }
                   break;
                case 4: // Select/Deselect Item was Clicked
                   var btnSelDesel = document.getElementById("gridelement").value;
                   var tmpArray = btnSelDesel.split(",");
                   hideContextMenus();
                   
                   document.getElementById(tmpArray[2]).click();
                   break;
                case 6: // Number of Rows Item was Clicked
                var btnAdd = document.getElementById("gridelement").value;
                   var tmpArray = btnAdd.split(",");
                   try {
                       hideContextMenus();
                       var tmp = document.getElementById(tmpArray[0]).id;
                       alert("تعداد رکوردها " + numRows("no") + " عدد می باشد");
                   }
                   catch(e) {
                       alert("تعداد رکوردها " + numRows("yes") + " عدد می باشد");
                   }
                   break;
                default:
                   hideContextMenus();
                   alert("Invalid Value!");
            }
        }
        hideContextMenus();
    }
}
  
// hide context menu
function hideContextMenus() {
    if (document.releaseCapture) {
        document.releaseCapture();
    }
    for (var i in cMenu) {
        var div = document.getElementById(cMenu[i].menuID)
        div.style.visibility = "hidden";
    }
}

// background color of menu items at mouse over and mouse out
function changeHighlight(evt) {
    evt = (evt) ? evt : ((event) ? event : null);
    if (evt) {
        var elem = (evt.target) ? evt.target : evt.srcElement;
        if (elem.nodeType == 3) {
            elem = elem.parentNode;
        }
        if (elem.className.indexOf("menuItem") != -1) {
            elem.parentNode.getElementsByTagName("td").item(1).className = (evt.type == "mouseover") ? "menuIconOn" : "menuIcon";
            elem.className = (evt.type == "mouseover") ? "menuItemOn" : "menuItem";
        }
    }
}
  
// bind events
function initContextMenus() {
    if (document.body.addEventListener) {
        // W3C
        document.body.addEventListener("contextmenu", showContextMenu, true);
        document.body.addEventListener("click", hideContextMenus, true);
    } else {
        // IE
        document.body.oncontextmenu = showContextMenu;
    }
}
