﻿document.onhelp = function() { return (false); }
window.onhelp = function() { return (false); }

this.document.onkeydown = function() {
    KeyName = ActionHotKey(event.keyCode);
}
this.document.onkeyup = function() {
    HotKeyUp(event.keyCode);
}

function getUDTValueClassName(udtType) {
    var clsName;
    switch (udtType) {
        case '0': clsName = 'TimePeriodValue'; break;
        case '1': clsName = 'LocationValue'; break;
        case '2': clsName = 'DimensionValue'; break;
    }
    return clsName;
}

function getUDTClassName(udtType) {
    var clsName;
    switch (udtType) {
        case '0': clsName = 'TimePeriod'; break;
        case '1': clsName = 'Location'; break;
        case '2': clsName = 'Dimension'; break;
    }
    return clsName;
}

function getUDTValuesClassName(udtType) {
    var clsName;
    switch (udtType) {
        case '0': clsName = 'TimePeriodValues'; break;
        case '1': clsName = 'LocationValues'; break;
        case '2': clsName = 'DimensionValues'; break;
    }
    return clsName;
}


/*Hos
در این متد یک رشته جستجو جهت استفاده در متدهای find صفحات مختلف تولید می شود
*/
function HasQuotation(fValue) {
    return (fValue.length > 1 && fValue.substring(0, 1) == "\"" && fValue.substring(fValue.length - 1, fValue.length) == "\"");
}
function ReplaceQuote(fValue) {
    if (fValue.indexOf)
        while (fValue.indexOf("\"") > -1) {
            fValue = fValue.replace("\"", "''");
        }  
    return fValue;
}
function genSearchRegExp(searchTxt, hasQuotation) 
{
  if (!hasQuotation) {
    var glExp = "[^\t\n\x0B\f\r]*";
    var j;
    var RegExpStr = "";
    var Arr = new Array;
    Arr = searchTxt.split(' ');
    for (j = 0; j < Arr.length; j++) {
        if (Arr[j] != "")
            RegExpStr = RegExpStr + glExp + Arr[j];
    }
    if (RegExpStr != "")
        RegExpStr = RegExpStr + glExp;
    return (new RegExp(RegExpStr));
}
}
/*Hos*/

function Trim(e) {
    var CounterW
    CounterW = 0
    for (i = 0; i <= e.length; i++)
        if (e.substr(i, 1) == " ")
        CounterW += 1
    else
        i = e.length + 1
    e = e.substr(CounterW, e.length - CounterW)

    CounterW = 0
    for (i = e.length; i >= 0; i--)
        if (e.substr(i - 1, 1) == " ")
        CounterW += 1
    else
        i = -2
    e = e.substr(0, e.length - CounterW)
    return e;
//    return e.replace("^s+|\s+$/g","")
}

function ChangeMenu(MainMenu, SubMenu) {

    var TableCollection = window.parent.document.getElementsByTagName("TABLE");
    var MenuTable = TableCollection[8];
    var MainFound = false;

    for (i = 0; i < MenuTable.rows.length; i++) {
        CurrentRow = MenuTable.rows[i];

        for (j = 0; j < CurrentRow.cells.length; j++) {
            if ((CurrentRow.cells[j].innerText == MainMenu) && (!MainFound)) {
                CurrentRow.cells[j].fireEvent("onclick")

                MainFound = true;
            }
            else if ((CurrentRow.cells[j].innerText == SubMenu) && (MainFound)) {
                CurrentRow.cells[j].fireEvent("onmousedown")
                return;
            }

        }
    }
}
function ChangeContextMenuPos() {
    TreeViewContextMenu.style.left = window.event.x + document.body.scrollLeft - 129;
    TreeViewContextMenu.style.top = window.event.y + 10 + document.body.scrollTop - 13;
    if (window.event.y + 10 + document.body.scrollTop + TreeViewContextMenu.clientHeight > screen.height - 200)
        TreeViewContextMenu.style.top = window.event.y + 10 + document.body.scrollTop - TreeViewContextMenu.clientHeight;

}
function FreeTreeViewNodes(TreeView)//By Hazhar
{
    TreeView.onselectedindexchange = null;
    var RootNode = TreeView.getTreeNode("0");
    RemoveNodeChilds(RootNode)
    if (RootNode != null) {
        try {
            RootNode.removeNode(true);
        }
        catch (e) { ; }
    }
}
function RemoveNodeChilds(node)//By Hazhar
{
    try {
        if (node == null)
            return;
        var Childs = node.getChildren();
        for (var i = Childs.length - 1; i >= 0; i--) {
            RemoveNodeChilds(Childs[i])
        }
        node.remove();
    }
    catch (e) { ; }
}
function FocusTreeView(TreeView) {
    window.onfocus = TreeViewFocus
    function TreeViewFocus() {
        try {
            TreeView.focus();
            window.onfocus = null;
            TreeView.onmouseover = null
        }
        catch (e)
		{ ; }
    }
    if (TreeView.getAttribute('IsPostBack') == "false") {
        TreeView.onmouseover = TreeViewFocus;
    }
}

function HotKeyUp(KeyCode) {
    if (ControlKey == KeyCode)
        ControlKey = 0
}


function EscKey(KeyCode) {
    if (KeyCode == 27)
        return 'Esc'
    if (KeyCode == 114)
        event.keyCode = 0;
}

// --->

//MrMemarian 1388/08/03
var ControlKey = 0;
var MainKey = 0;
function ActionHotKey(KeyCode) {
    if (KeyCode == '16' || KeyCode == '17' || KeyCode == '18')
        ControlKey = KeyCode;
    else
        MainKey = KeyCode;

    switch (MainKey) {
        case 123:
            event.returnValue = false;
            if (ControlKey == 17) {
                try {
                    alert(RawUrl);
                }
                catch (e) { ; }
                ControlKey = 0;
                MainKey = 0
                return 'Ctrl+F12'
            }
            else if (ControlKey == 16) {
            ControlKey = 0;
            MainKey = 0
            return 'Shift+F12'
        }
            MainKey = 0
            break;
        case 67:
            if (ControlKey == 17) {
                MainKey = 0
                return 'Copy'
            }
            break;
        case 88:
            if (ControlKey == 17) {
                MainKey = 0
                return 'Cut'
            }
            break;
        case 48:
            if (ControlKey == 16) {
                MainKey = 0;
                return ')';
            }
            else {
                MainKey = 0;
                return '0';
            }
            break;
        case 49:
            if (ControlKey == 16) {
                MainKey = 0;
                return '!';
            }
            else {
                MainKey = 0;
                return '1';
            }
            break;
        case 50:
            if (ControlKey == 16) {
                MainKey = 0
                return '@'
            }
            else {
                MainKey = 0;
                return '2';
            }
            break;
        case 51:
            if (ControlKey == 16) {
                MainKey = 0
                return '#'
            }
            else {
                MainKey = 0;
                return '3';
            }
            break;
        case 52:
            if (ControlKey == 16) {
                MainKey = 0
                return '$'
            }
            else {
                MainKey = 0;
                return '4';
            }
            break;
        case 53:
            if (ControlKey == 16) {
                MainKey = 0
                return '%'
            }
            else {
                MainKey = 0;
                return '5';
            }
            break;
        case 54:
            if (ControlKey == 16) {
                MainKey = 0
                return '^'
            }
            else {
                MainKey = 0;
                return '6';
            }
            break;
        case 55:
            if (ControlKey == 16) {
                MainKey = 0
                return '&'
            }
            else {
                MainKey = 0;
                return '7';
            }
            break;
        case 56:
            if (ControlKey == 16) {
                MainKey = 0
                return '*'
            }
            else {
                MainKey = 0;
                return '8';
            }
            break;
        case 57:
            if (ControlKey == 16) {
                MainKey = 0
                return '('
            }
            else {
                MainKey = 0;
                return '9';
            }
            break;
        case 70:
            if (ControlKey == 17) {
                //event.keyCode = 0;
                event.returnValue = false
                MainKey = 0
                return 'Find'
            }
            break;
        case 86:
            if (ControlKey == 17) {
                MainKey = 0;
                return 'Paste'
            }
            break;
        case 119:
            MainKey = 0
            event.returnValue = false;
            //event.keyCode = 0
            return 'ChangeContext';
            break;
        case 187:
            if (ControlKey == 16) {
                MainKey = 0
                return '+'
            }
            break;
        case 120:
            MainKey = 0
            return 'Properties';
            break;
        case 113:
            event.keyCode = 0;
            event.returnValue = false;
            MainKey = 0
            return 'Edit';
            break;
        case 114:
            event.keyCode = 0;
            event.returnValue = false;
            MainKey = 0
            return 'Search';
            break;
        case 117:
            MainKey = 0
            event.returnValue = false;
            return 'Rename';
            break;
        case 122:
            MainKey = 0
            event.keyCode = 0;
            event.returnValue = false;
            break;
        case 82:
            if (ControlKey == 17) {
                MainKey = 0
                //event.keyCode = 0;
                event.returnValue = false;
            }
            break;
        case 74:
            if (ControlKey == 17) {
                MainKey = 0
                //event.keyCode = 0;
                event.returnValue = false;
            }
            break;
        case 78:
            if (ControlKey == 17) {
                MainKey = 0
                event.returnValue = false;
            }
            break;
        case 77:
            if (ControlKey == 17) {
                MainKey = 0
                event.returnValue = false;
            }
            break;
        case 76:
            if (ControlKey == 17) {
                MainKey = 0
                event.returnValue = false;
            }
            break;
        case 69:
            if (ControlKey == 17) {
                MainKey = 0
                event.returnValue = false;
            }
            break;
        case 66:
            if (ControlKey == 17) {
                MainKey = 0
                event.returnValue = false;
            }
            break;
        case 72:
            if (ControlKey == 17) {
                MainKey = 0
                event.returnValue = false;
            }
            break;
        case 73:
            if (ControlKey == 17) {
                MainKey = 0
                event.returnValue = false;
            }
            break;
        case 79:
            if (ControlKey == 17) {
                MainKey = 0
                event.returnValue = false;
            }
            break;
        case 87:
            if (ControlKey == 17) {
                MainKey = 0
                event.returnValue = false;
            }
            break;
        case 80:
            if (ControlKey == 17) {
                event.returnValue = false;
                MainKey = 0;
                //event.KeyCode = 0;
            }
            break;
        case 68:
            if (ControlKey == 17) {
                MainKey = 0
                event.returnValue = false;
            }
            break;
        case 36:
            if (ControlKey == 18) {
                event.returnValue = false;
                MainKey = 0
                //event.KeyCode = 0;
            }
            break;
        case 121:
            if (ControlKey == 17 || ControlKey == 16) {
                MainKey = 0
                event.returnValue = false;
            }
            break;
        case 8:
            MainKey = 0;
            return 'BackSpace';
            break;
        case 13:
            if (ControlKey != 18) {
                MainKey = 0;
                return 'Enter';
            }
            else {
                MainKey = 0;
                event.returnValue = false;
                return false;
            }
            break;
        case 17:
            MainKey = 0;
            ControlKey = 17;
            return;
            break;
        case 16:
            MainKey = 0;
            ControlKey = 16;
            return;
            break;
        case 27:
            MainKey = 0;
            return 'Esc';
            break;
        case 32:
            MainKey = 0;
            return 'Space';
            break;
        case 33:
            MainKey = 0;
            return 'PageUp';
            break;
        case 34:
            MainKey = 0;
            return 'PageDown';
            break;
        case 38:
            MainKey = 0;
            return 'Up';
            break;
        case 40:
            MainKey = 0;
            return 'Down';
            break;
        case 45:
            MainKey = 0;
            return 'Ins';
            break;
        case 46:
            MainKey = 0;
            return 'Del';
            break;
        case 96:
            MainKey = 0
            return '0';
            break;
        case 97:
            MainKey = 0
            return '1';
            break;
        case 98:
            MainKey = 0
            return '2';
            break;
        case 99:
            MainKey = 0
            return '3';
            break;
        case 100:
            MainKey = 0
            return '4';
            break;
        case 101:
            MainKey = 0
            return '5';
            break;
        case 102:
            MainKey = 0
            return '6';
            break;
        case 103:
            MainKey = 0
            return '7';
            break;
        case 104:
            MainKey = 0
            return '8';
            break;
        case 105:
            MainKey = 0
            return '9';
            break;
        case 106:
            MainKey = 0
            return '*';
            break;
        case 107:
            MainKey = 0
            return '+';
            break;
        case 109:
            MainKey = 0
            return '-';
            break;
        case 111:
            MainKey = 0;
            return '/';
            break;
        case 112:
            try {
                var hostname = window.location.hostname.toLowerCase();
                var helpAddress, param;
                if (hostname == 'localhost') {
                    var pathname = window.location.pathname;
                    var split = pathname.split('/');
                    if (split[0] == '')
                        helpAddress = '/' + split[1] + '/help/helplist.aspx';
                    else
                        helpAddress = '/' + split[0] + '/help/helplist.aspx';
                }
                else
                    helpAddress = '/help/helplist.aspx';

                param = 0;

                if (window.location.toString().indexOf('ViewEntityForm.aspx') > -1) {
                    helpAddress = helpAddress.replace('/help/helplist.aspx', '/CustomUserHelp/ViewCustomUserHelp.aspx');
                    helpAddress += '?formid=' + document.getElementById("HidEntityFormId").value + '&ObjectType=entityform';
                }
                else if (window.location.toString().indexOf('ViewForm.aspx') > -1) {
                    helpAddress = helpAddress.replace('/help/helplist.aspx', '/CustomUserHelp/ViewCustomUserHelp.aspx');
                    helpAddress += '?formid=' + document.getElementById("hidsourceId").value + '&ObjectType=form';
                }
                else {
                    if (document.getElementById("hidPageParameter") == '[object]')
                        if (document.getElementById("hidPageParameter").value != '')
                        param = document.getElementById("hidPageParameter").value;
                    helpAddress += '?path=' + window.location.href + '&param=' + param;
                }

                var MyWidth = screen.availWidth - 52;
                var MyHeight = screen.availHeight - 140;
                window.open(helpAddress, "", "scrollbars=1,resizable=0,top=82,left=20,width=" + MyWidth + ",height=" + MyHeight);
                
            }
            catch (e) {
                alert('راهنمای این صفحه موجود نمی باشد');
            }
            MainKey = 0;
            event.returnValue = false;
            event.keyCode = 0
            return false;
            break;
        case 115:
            if (ControlKey == 18) {
                MainKey = 0;
                event.returnValue = false;
                //event.keyCode = 0
                return false;
            }
            else {
                MainKey = 0;
                event.keyCode = 0;
                event.returnValue = false;
                return 'Report';
            }
        case 116:
            event.returnValue = false;
            MainKey = 0;
            event.keyCode = 0;
            return 'F5';
            break;
        case 189:
            MainKey = 0
            return '-';
            break;
        case 191:
            MainKey = 0
            return '/';
            break;
    }
}


function SearchTreeView_click(treeview, txtSearch) {
    IsFound = false;
    LastNodeIndex = treeview.selectedNodeIndex;
    SearchTreeView(treeview, treeview.getTreeNode("0"), txtSearch);

    //SearchTreeView(treeview,treeview.getTreeNode(treeview.selectedNodeIndex),txtSearch);
    //SearchTreeView(treeview,treeview.getTreeNode(treeview.selectedNodeIndex),txtSearch);

    if (!IsFound && LastNodeIndex != '0') {
        LastNodeIndex = "0";
        SearchTreeView(treeview, treeview.getTreeNode("0"), txtSearch);
        //SearchTreeView(treeview, treeview.getTreeNode(treeview.selectedNodeIndex), txtSearch);
    }
}

function hasBiggerIndex(nodeIndex1, nodeIndex2) {
    var arrnodeIndex1 = nodeIndex1.split('.');
    var arrnodeIndex2 = nodeIndex2.split('.');
    var minLength = (arrnodeIndex2.length > arrnodeIndex1.length) ? arrnodeIndex1.length : arrnodeIndex2.length;

    for (var i = 0; i < minLength; i++) {
        if (eval(arrnodeIndex1[i]) > eval(arrnodeIndex2[i]))
            return true;
        else if (eval(arrnodeIndex1[i]) < eval(arrnodeIndex2[i]))
            return false;
    }
    return (nodeIndex1 > nodeIndex2)
}
// Sajadpoor - 1385/02/11 - Add Function SearchTreeView *************************************
// Nejatyab - 1385/02/16 - Approve Function SearchTreeView *************************************
function SearchTreeView(treeview, SelectedNode, txtSearch) {
    if (txtSearch != "") {
        if (IsFound)
            return;

        var txtNode = SelectedNode.getAttribute("Text");
        //alert(txtNode)
        if (txtNode.toUpperCase().indexOf(Trim(txtSearch.toUpperCase())) != -1)
            if ((hasBiggerIndex(SelectedNode.getNodeIndex(), LastNodeIndex)) || (SelectedNode.getNodeIndex() == '0' && LastNodeIndex == '0'))
            IsFound = true;
        if (IsFound) {
            treeview.selectedNodeIndex = SelectedNode.getNodeIndex();
            LastNodeIndex = SelectedNode.getNodeIndex();
        }
        else {
            var NodeChilds = SelectedNode.getChildren();
            SelectedNode.setAttribute("expanded", true);
            for (var i = 0; i < NodeChilds.length; i++) {
                SearchTreeView(treeview, NodeChilds[i], txtSearch);
            }
        }
    }
}

function CheckInt(e) {
    for (i = 48; i <= 57; i++)
        if (e == i)
        return true;
    if (e == 13)
        return true;

    event.returnValue = false;
    return false;
}


function ConvertToSepratedFormatNumber(obj) {

    var DigitGrouping = '،'
    var DecimalSymbol = '.'
    var FirstValue = obj.value;
    var SecondValue = ''
    var TempStr = ''

    if (obj.value.indexOf(DecimalSymbol) != -1) {
        FirstPos = obj.value.indexOf(DecimalSymbol) + 1;
        FirstValue1 = obj.value
        FirstValue = FirstValue1.substring(0, FirstPos - 1);
        SecondValue = obj.value.substring(FirstPos - 1, FirstValue1.length + 1);
    }

    while (FirstValue.indexOf(DigitGrouping) != -1)
        FirstValue = FirstValue.replace(DigitGrouping, '')

    var FirstSection = FirstValue.length % 3;
    TempStr = FirstValue.substring(0, FirstSection);

    for (var i = FirstSection; i < FirstValue.length; i++) {
        if ((FirstValue.length - i) % 3 == 0) {
            TempStr = TempStr + DigitGrouping + FirstValue.substring(i, i + 1);
        }
        else
            TempStr = TempStr + FirstValue.substring(i, i + 1);
    }
    if (TempStr.substring(0, 1) == DigitGrouping)
        TempStr = TempStr.substring(1, TempStr.length)

    var lastvalue = ""
    if (SecondValue != "")
        lastvalue = TempStr + SecondValue;
    else
        lastvalue = TempStr;

    obj.value = lastvalue
}

//Mohammad Reza Memarian 1386/11/09
function UndoSeprator(obj) {
    var lastTxt = obj.value;
    var arrayTxt = lastTxt.split('،');
    for (var i = 0; i < arrayTxt.length; i++) {
        if (lastTxt.indexOf('،') != -1)
            lastTxt = lastTxt.replace("،", "");
        else
            break;
    }
    obj.value = lastTxt;
}

function DeleteSeprator(NumberValue) {
    var lastTxt = NumberValue;
    var arrayTxt = lastTxt.split('،');
    for (var i = 0; i < arrayTxt.length; i++) {
        if (lastTxt.indexOf('،') != -1)
            lastTxt = lastTxt.replace("،", "");
        else
            break;
    }
    return (lastTxt)
}



function ShowProgressPage(pagePosition) {
    window.showModelessDialog(pagePosition + "Lib/Progress.aspx", "", "help:no;dialogWidth:50px; dialogHeight:50px; center:yes; resizeable:no; scroll:no; status:no; edge:raised");
}

function AddSp(obj) { // اضافه جداکننده هزار تايي-- جدا کردن سه رقم به سه رقم
    var MyVal = obj.value;
    while (MyVal.match(/^(.*\d)(\d{3}(\.|,|$).*$)/))
        MyVal = MyVal.replace(/^(.*\d)(\d{3}(\.|,|$).*$)/, '$1,$2');
    obj.value = MyVal;
}

function DelSp(obj) { // حذف جداکننده هزار تايي 
    while (obj.value.indexOf(",") != -1)
        obj.value = obj.value.replace(",", '')
}

function chechkValidName(strValue) {
    var fieldName = strValue;
    if (fieldName.match('>'))
        return false;
    else if (fieldName.match('<'))
        return false;
    else if (fieldName.match('&'))
        return false;
    else if (fieldName.match('\''))
        return false;
    else if (fieldName.match('"'))
        return false;
    else if (fieldName.match(','))
        return false;
    else if (fieldName.match('،'))
        return false;
    else
        return true;
}
