﻿//if (window.location.toString().indexOf("LoginFrm.aspx") > 0) {
    //var oMasterWindow = window;
//}
//alert(oMasterWindow)

/// <reference path="wz_tooltip.js" />
/////////////////////////////////////////////////////////////////////////////////////////////////////					
switch(window.screen.width )
{
	case 1024 :
		try
		{
			document.write("<LINK href=\"/FarzinSoft/Common/CStyles/CPageStyle_1024.css\" type=\"text/css\" rel=\"STYLESHEET\">");
		}
		catch(e){}		
		break;
	default :
		document.write("<LINK href=\"/FarzinSoft/Common/CStyles/CPageStyle_1024.css\" type=\"text/css\" rel=\"STYLESHEET\">");
		break;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////					
window.attachEvent("onload" , TabContentLoadingStatusNoneDisplay);
function TabContentLoadingStatusNoneDisplay()
{
	//----------- display loading status
	if(window.parent.TabContentLoadingStatus!=null && window.parent.TabContentLoadingStatus!="undefined")
	    window.parent.TabContentLoadingStatus.style.display = "none";
	DataEntryChecking();
	//CheckCredential();
	return;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////					
//Disable right mouse click Script
var message="Function Disabled!";
///////////////////////////////////
function clickIE4() {
	if (event.button==2)
		return false;
}
function clickNS4(e) {
	if (document.layers||document.getElementById&&!document.all)
	{
		if (e.which==2||e.which==3)
			return false;
	}
}
if (document.layers)
{
	document.captureEvents(Event.MOUSEDOWN);
	document.onmousedown=clickNS4;
}
else if (document.all&&!document.getElementById)
	document.onmousedown=clickIE4;
document.oncontextmenu = new Function("return false;");
///////////////////////////////////////////////////////////////////////////////////////////////////////					

//////////////////////////////////////////////////////////////////////////////////////////////
var iIntervalId ;
if ( ! iIntervalId )
	iIntervalId = window.setInterval( AttachEventToBody, 100 ) ;
//////////////////////////////////////////////////////////////////////////////////////////////
function AttachEventToBody()
{
	if(document!=null && document.body != null)
	{
		document.body.attachEvent("onkeydown", OpenNewCardTable);
		window.clearInterval( iIntervalId ) ;
	}
}
//////////////////////////////////////////////////////////////////////////////////////////////
function OpenNewCardTable()
{
	if(event.keyCode == 123)
	{
		var iWidth  = parseInt(window.screen.width) - 30 ;
		var iHeight = parseInt(window.screen.height) - 120 ;

		var strFeatures = "Height="+iHeight+", Width="+iWidth+", left=0, top=0, resizable=no, help=no, status=no, scroll=no";	
		var strURL = "/FarzinSoft/eOrgan/Home/HomeFrm.aspx?SelSoft=746B271D02168914";
		var hwnd = window.open(strURL , "NEW" ,strFeatures,true);
		hwnd.focus();
	}
}
//////////////////////////////////////////////////////////////////////////////////////////////
function ShowMsg(Message, Type, Icon, Direction, arryProgress)  
{
	// arryProgress[0] : MinValue , arryProgress[1] : MaxValue
	
	var arryParams = new Array();
	arryParams[0] = (Type != null) ? Type : "OK";
	arryParams[1] = Message;
	arryParams[2] = (Icon != null) ? Icon : "warning";
	arryParams[3] = (Direction != null) ? Direction : "rtl";
	arryParams[4] = arryProgress;
	
	var dlgFetures = "dialogHeight:150px; dialogWidth:400px; dialogTop:center; resizable:yes; help:no; status:no; scroll:no;";	
	return window.showModalDialog("/FarzinSoft/Common/GeneralMessages/GeneralMsg.htm", arryParams, dlgFetures);
}

//////////////////////////////////////////////////////////////////////////////////////////////
function ConfirmMsg(Message, Type, Direction)
{
	var arryParams = new Array();
	arryParams[0] = (Type != null) ? Type : "YesNo";
	arryParams[1] = Message;
	arryParams[2] = "question";
	arryParams[3] = (Direction != null) ? Direction : "rtl";
	arryParams[4] = null;

	var dlgFetures = "dialogHeight:150px; dialogWidth:400px; dialogTop:center; resizable:yes; help:no; status:no; scroll:no;";
	return window.showModalDialog("/FarzinSoft/Common/GeneralMessages/GeneralMsg.htm", arryParams, dlgFetures);
}
//////////////////////////////////////////////////////////////////////////////////////////////
function PromptMsg(Message, Type, Direction, Icon, Default)
{
	var arryParams = new Array();
	arryParams[0] = (Type != null) ? Type : "OKCANCEL";
	arryParams[1] = Message;
	arryParams[2] = Icon;
	arryParams[3] = (Direction != null) ? Direction : "rtl";
	arryParams[4] = Default;
	
	var dlgFetures = "dialogHeight:150px; dialogWidth:400px; dialogTop:center; resizable:yes; help:no; status:no; scroll:no;";	
	return window.showModalDialog("/FarzinSoft/Common/GeneralMessages/PromptMsg.htm", arryParams, dlgFetures);
}
//////////////////////////////////////////////////////////////////////////////////////////////
var strWhiteList = new Array("afrm.aspx", "ufrm.aspx", "farzinreportgenerator/reportsmanagement/createreport/editconditionsfrm.aspx", "farzinreportgenerator/reportsmanagement/createreport/definevariablereference.aspx", "farzinreportgenerator/reportsmanagement/createreport/newfieldfrm.aspx", "farzinworkflow/", "entity/definedefaultvalue/", "entity/relatedfields", "advancedconfiguration/operators", "farzinreportgenerator/reportsmanagement/designtemplate/body.aspx");
var strBlackList = new Array("rptprocess.aspx");
//////////////////////////////////////////////////////////////////////////////////////////////
function DataEntryChecking() {
    var needAntiSqlInjection = true;
    var bISInBlackList = false;
    for (var iIndex = 0; iIndex < strBlackList.length; iIndex++) {
        if (window.location.toString().toLowerCase().indexOf("/" + strBlackList[iIndex]) > 0) {
            bISInBlackList = true;
            break;
        }
    }
    for (var iIndex = 0; !bISInBlackList && iIndex < strWhiteList.length; iIndex++) {
        if (window.location.toString().toLowerCase().indexOf("/" + strWhiteList[iIndex]) > 0)
            needAntiSqlInjection = false;
    }

    var j = 0;
    var oInputElements = window.document.all.tags("INPUT");
    for (j = 0; j < oInputElements.length; j++) {
        var oInput = oInputElements(j);
        if (oInput.type.toLowerCase() != "text") continue;
        if (oInput.style == null) continue;
        if (oInput.style.display != "") continue;
        if (needAntiSqlInjection) {
            oInput.attachEvent("onkeypress", onTextChange);
            oInput.attachEvent("onblur", onTextBlur);
        }
        oInput.attachEvent("onkeypress", CheckInputDataType_OnTextChange);
        oInput.attachEvent("onblur", CheckInputDataType_OnTextBlur);
    }

    var oTextAreaElements = window.document.all.tags("TEXTAREA");
    for (j = 0; j < oTextAreaElements.length; j++) {
        var oTextArea = oTextAreaElements(j);
        if (oTextArea.style == null) continue;
        if (oTextArea.style.display != "") continue;
        if (needAntiSqlInjection) {
            oTextArea.attachEvent("onkeypress", onTextChange);
            oTextArea.attachEvent("onblur", onTextBlur);
        }
        oTextArea.attachEvent("onkeypress", CheckInputDataType_OnTextChange);
        oTextArea.attachEvent("onblur", CheckInputDataType_OnTextBlur);
    }
}
//////////////////////////////////////////////////////////////////////////////////////////////
function onTextChange() {
    var oInputText = "";
    var REobj = null;

    var element = event.srcElement;
    var Event = event;

    if (element.value == null)
        return;

    if (event.keyCode == "'".charCodeAt(0)) {
        event.keyCode = 0;
    }

    oInputText = element.value;

    REobj = /<\s*script(>|\s+.*>)/igm;
    if (REobj.test(oInputText))
        element.value = "";

    REobj = /<\s*object(>|\s+.*>)/igm;
    if (REobj.test(oInputText))
        element.value = "";

    REobj = /<\s*applet(>|\s+.*>)/igm;
    if (REobj.test(oInputText))
        element.value = "";

    REobj = /<\s*embed(>|\s+.*>)/igm;
    if (REobj.test(oInputText))
        element.value = "";

}
 //////////////////////////////////////////////////////////////////////////////////////////////
function onTextBlur() {
    var oInputText = "";
    var REobj = null;
    var Event = event;
    if (event.srcElement.value == null)
        return;
    oInputText = event.srcElement.value;
    while (oInputText.indexOf("'") >= 0)
        oInputText = oInputText.replace("'", "");
        
    event.srcElement.value = oInputText;

    REobj = /<\s*script(>|\s+.*>)/igm;
    if (REobj.test(oInputText))
        event.srcElement.value = "";

    REobj = /<\s*object(>|\s+.*>)/igm;
    if (REobj.test(oInputText))
        event.srcElement.value = "";

    REobj = /<\s*applet(>|\s+.*>)/igm;
    if (REobj.test(oInputText))
        event.srcElement.value = "";

    REobj = /<\s*embed(>|\s+.*>)/igm;
    if (REobj.test(oInputText))
        event.srcElement.value = "";

}
//////////////////////////////////////////////////////////////////////////////////////////////
//We need to put dataType attribute on INPUT elements
function CheckInputDataType_OnTextBlur() {
    var Event = window.event;
    var element = Event.srcElement;
    var oInputText = element.value;

    if (element.dataType == null)
        return;

    switch (element.dataType.toString().toLowerCase()) {
        case 'int':
            REobj = /^[0-9]*$/igm;
            if (!REobj.test(oInputText))
                element.value = "";
            break;
        case 'decimal':
            REobj = /^[0-9]*(\.)?[0-9]+$/igm;
            if (!REobj.test(oInputText))
                element.value = "";
            break;
        default:
            break;
    }
}
//////////////////////////////////////////////////////////////////////////////////////////////
function CheckInputDataType_OnTextChange() {
    var Event = window.event;
    var element = Event.srcElement;
    var oInputText = element.value;

    if (element.dataType == null)
        return;

    switch (element.dataType.toString().toLowerCase()) {
        case 'int':
            var key = Event.keyCode;
            if (key > 58 || key < 48)
                Event.keyCode = 0;
            break;
        case 'decimal':
            var key = Event.keyCode;
            if (key == 46 && oInputText.indexOf('.') >= 0) {
                Event.keyCode = 0;
                return;
            }
            if ((key > 58 || key < 48) && key != 46)
                Event.keyCode = 0;

            break;
        default:
            break;
    }
}
//////////////////////////////////////////////////////////////////////////////////////////////
function CheckCredential() {
    var strDialogArgumentPage = new Array("farzinworkflow/");
    for (var iIndex = 0; iIndex < strDialogArgumentPage.length; iIndex++) {
        if (window.location.toString().toLowerCase().indexOf("/" + strDialogArgumentPage[iIndex]) > 0 && window.dialogArguments == null) {
            document.body.innerHTML = "<Center style='font-family:traffic;font-size:12;font-weight:bold;color:indianred;'>" + "درخواست شما معتبر نمي‌باشد" + "</Center>";
            break;
        }
    }
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function LTrim(Str) {
    var Char = Str.substring(0, 1);
    while (Char == " ") {
        Str = Str.substring(1);
        Char = Str.substring(0, 1);
    }
    return Str;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function RTrim(Str) {
    var Char = Str.substring(Str.length - 1);
    while (Char == " ") {
        Str = Str.substring(0, Str.length - 2);
        Char = Str.substring(Str.length - 1);
    }
    return Str;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function Trim(Str) {
    return RTrim(LTrim(Str));
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function GetCookie2(CookieName) {
    var Cookies, CookieNameInCookies, CookieValueInCookies
    Cookies = document.cookie;
    Cookies = Cookies.split(";")
    for (var Counter = 0; Counter < Cookies.length; Counter++) {
        var strCookie = Cookies[Counter];
        var iEqualIndex = strCookie.search("=");
        if (iEqualIndex == -1)
            return -1;

        var CookieNameInCookies = strCookie.substring(0, iEqualIndex);
        var CookieValueInCookies = strCookie.substring(iEqualIndex + 1, strCookie.length);

        if (Trim(CookieNameInCookies) == Trim(CookieName))
            return CookieValueInCookies;
    }
    return -1;
}
//////////////////////////////////////////////////////////////////////////////////////////////
function SetError(bSuccess, iErrCode, strErrMsg, bTokenForced, bTokenSuspend, strTokenSerialNO) {
    var oResult = new Array(6);
    oResult[0] = bSuccess;
    oResult[1] = iErrCode;
    oResult[2] = strErrMsg;
    oResult["TokenForced"] = bTokenForced;
    oResult["TokenSuspend"] = bTokenSuspend;
    oResult["TokenSerialNO"] = strTokenSerialNO;
    return oResult;
}
//////////////////////////////////////////////////////////////////////////////////////////////
function CheckToken() {
    var oResult;
    var nl = null;
    var TokenForced = -1, TokenSuspend = -1, TokenSerialNO = "";
    try
    {
        nl = new ActiveXObject("NovinAfzar.clsLocalDevice");
        nl.Init();
    }
    catch(e)
    {
        oResult = SetError(false, 1, "Lock support failed[Driver Error]", TokenForced, TokenSuspend, TokenSerialNO);
        return oResult;
    }
    
    try
    {
        TokenForced = GetCookie2("TokenForced");
        TokenSuspend = GetCookie2("TokenSuspend");
        TokenSerialNO = GetCookie2("TokenSerialNO");
	    nl.SelectDevice(TokenSerialNO);
        if (nl.ErrNo) 
        {
            oResult = SetError(false, 2, "The required token does not exists[" + nl.ErrDescrFA + "]", TokenForced, TokenSuspend, TokenSerialNO);
            return oResult;
        }
        oResult = SetError(true, 0, "Success", TokenForced, TokenSuspend, TokenSerialNO);
        return oResult;
    }
    catch(e)
    {
        oResult = SetError(false, 3, "Unknown error[" + e.message + "]", TokenForced, TokenSuspend, TokenSerialNO);
        return oResult;
    }
}
//////////////////////////////////////////////////////////////////////////////////////////////
function IsTokenOKForSign() {
    var oResult;
    var oRet = new Array(2);
    oResult = CheckToken();

    oRet[0] = false;

    if(oResult[0] == true)
        oRet[0] = true;
    else if(parseInt(oResult["TokenForced"]) == 0 || parseInt(oResult["TokenForced"]) == -1)
        oRet[0] = true;
    else if(parseInt(oResult[1]) == 1)
        oRet[0] = true;
    oRet[1] = oResult[2] + "[" + oResult[1] + "]";

    return oRet;
}
//////////////////////////////////////////////////////////////////////////////////////////////
function MakeDialogParameters() {
    //alert(window.location)
    var ParamsArray = arguments;
    var FirstParamArray = new Array();

    if (ParamsArray.length < 2) {
        ShowMsg("خطا در فراخواني MakeDialogParameters. اشكال در تعداد پارامترها ");
        return null;
    }

    if (ParamsArray == null || ParamsArray.length == null || ParamsArray.length <= 0)
        return null;

    //If number of parameters are three & first parameter is an array, putting its elements to FirstParamArray
    if (ParamsArray.length == 3 && (ParamsArray[0] instanceof Array)) {
        for (var i = 0; i < ParamsArray[0].length; i++)
            FirstParamArray[i] = ParamsArray[0][i];
    }

    //If number of parameters are three & first parameter is an scaller value then dialogArguments is same as it
    var Parameters;
    if (ParamsArray.length == 3 && !(ParamsArray[0] instanceof Array)) {
        function ParamsClass() {
            //Check ParamsArray[0] for string 
            if (typeof (ParamsArray[0]) == "string")
                return (new String(ParamsArray[0]));
            if (typeof (ParamsArray[0]) == "number")
                return (new Number(ParamsArray[0]));
            if (typeof (ParamsArray[0]) == "boolean")
                return (new Boolean(ParamsArray[0]));
            if (ParamsArray[0] == null)
                return (String(""));
            return ParamsArray[0];
        }
        Parameters = new ParamsClass();
    }
    else {
        Parameters = new Array();
        Parameters._FARZIN_DialogParamType_IsArray = true;
    }

    //Putting all parameters in Parameters variable
    var Index = 0, Offset = 0;
    for (Index = 0; FirstParamArray.length != 0 && Index < FirstParamArray.length; Index++)
        Parameters[Index] = FirstParamArray[Index];

    if (Index == 0) {
        for (Offset = 0; Offset < ParamsArray.length; Offset++)
        {
            //alert("Parameters[Offset]:" + Parameters[Offset])
            //alert("ParamsArray[Offset]:" + ParamsArray[Offset])
            Parameters[Offset] = ParamsArray[Offset];
        }
        Parameters.Length = Offset;
    }
    else {
        for (Offset = 1; Offset < ParamsArray.length; Offset++)
            Parameters[Index + Offset - 1] = ParamsArray[Offset];

        Parameters.Length = Index + Offset - 1;
    }

    //Correcting path if it's not a relative path
    var DestinationUrl = Parameters[Parameters.Length - 2];
    if (typeof (DestinationUrl) == "string") {
        //Triming the DestinationUrl
        DestinationUrl = DestinationUrl.replace(/^\s+|\s+$/, '');
        var SlashIndex = DestinationUrl.indexOf("/");
        if (SlashIndex != 0) {
            var PagePath = window.location.pathname;
            DestinationUrl = PagePath.substring(0, PagePath.lastIndexOf("/")) + "/" + DestinationUrl;
            if (DestinationUrl.charAt(0) != "/")
                DestinationUrl = "/" + DestinationUrl;
            Parameters[Parameters.Length - 2] = DestinationUrl;
        }
    }

    Parameters._FARZIN_DialogParam = true;

    return Parameters;
}
//////////////////////////////////////////////////////////////////////////////////////////////
function Loading(on) {
    //-----------------[JQuery]---------------------
    //    if ($('div[id=divLoading]').length)
    //        $('div[id=divLoading]').remove();
    //    if ($('table[id=imgLoading]').length)
    //        $('table[id=imgLoading]').remove();
    //    if (on) {
    //        $('body').append("<div id='divLoading' style='position:absolute;background-color:#000;filter:alpha(opacity=55);-moz-opacity:.55;opacity:.55;left:0px;top:0px;width:100%;height:100%'></div>");
    //        $('body').append("<table id='imgLoading' style='position:absolute;text-align:center;vertical-align:middle;left:0px;top:0px;width:100%;height:100%'><tr><td><img src='/FarzinSoft/Resources/loading2.gif' alt='' /></td></tr></table>");
    //    }
    if (d = document.getElementById('divLoading'))
        d.parentNode.removeChild(d);
    if (i = document.getElementById('imgLoading'))
        i.parentNode.removeChild(i);
    if (on) {
        //var width = Math.max(document.body.clientWidth, Math.max(document.documentElement.clientWidth, document.body.offsetWidth + parseInt(document.body.style.margin, 10)));
        //var height = Math.max(document.body.clientHeight, Math.max(document.documentElement.clientHeight, document.body.offsetHeight + parseInt(document.body.style.margin, 10)));
        var width = Math.max(document.body.clientWidth, Math.max(document.documentElement.clientWidth, document.body.offsetWidth));
        var height = Math.max(document.body.clientHeight, Math.max(document.documentElement.clientHeight, document.body.offsetHeight));
        
        try
        {
        if(width==0)
        {
            width = Math.max(width, parseInt(window.dialogWidth, 10));
            height = Math.max(height, parseInt(window.dialogHeight, 10));
            }
        }
        catch(e){}
        
        if(width > 1024)
            width = 1024;
            
        if(height > 768)
            height = 768;   
            
//background-color:#000;
        var body = document.getElementsByTagName("body")[0];
        var div = document.createElement("<div id='divLoading' style='position:absolute;filter:alpha(opacity=55);-moz-opacity:.55;opacity:.55;left:0px;top:0px;width:" + (width - 50) + "px;height:" + (height - 50) + "px'></div>");
        body.appendChild(div);

        var table = document.createElement("<table id='imgLoading' style='position:absolute;text-align:center;vertical-align:middle;left:0px;top:0px;width:" + (width - 50)+ "px;height:" + (height - 50) + "px'></table>");
        var cell = table.insertRow().insertCell();
        cell.innerHTML = "<img src='/FarzinSoft/Resources/loading2.gif' alt='' />";
        body.appendChild(table);
    }
}
//////////////////////////////////////////////////////////////////////////////////////////////
function AddWindowHandle(hWnd) {
    return;
    if (GetCookie2("WindowHandles") != "-1")
        document.cookie = "WindowHandles=" + GetCookie2("WindowHandles") + "," + hWnd.name + ";path=/";
    else
        document.cookie = "WindowHandles=" + hWnd.name + ";path=/";
}
//////////////////////////////////////////////////////////////////////////////////////////////
function CloseOpenWindows() {
    return;
    var strCookie = String(GetCookie2("WindowHandles").toString());
    var windowHandles = strCookie.split(",");
    for (var i = 0; i < windowHandles.length; i++) {
        try {
            var windowName = windowHandles[i].toString();
            window.open("", windowName, "width=0px,height=0px").close();
        }
        catch (e) { }
    }
    document.cookie = "WindowHandles=;path=/";
}
//////////////////////////////////////////////////////////
function saveData(name, value) {
    try {
        var oStorage = document.getElementById("divStorage");
        oStorage.setAttribute(name, value);
        oStorage.save("data");
    } catch (e) { }
}
//////////////////////////////////////////////////////////
function getData(name) {
    try {
        var oStorage = document.getElementById("divStorage");
        oStorage.load("data");
        return oStorage.getAttribute(name);
    } catch (e) { return null; }
}
//////////////////////////////////////////////////////////
var MaxLoopCount = 10;
function GetParentModalDialog(hwnd) {
    var ParentModalDialog = hwnd;
    var i = 0;
    while (ParentModalDialog != ParentModalDialog.parent && i < MaxLoopCount) {
        ParentModalDialog = ParentModalDialog.parent;
        i++;
    }
    if (i >= MaxLoopCount) {
        alert("Loop exception in GetParentModalDialog");
        throw "Loop exception in GetParentModalDialog";
    }
    return ParentModalDialog;
}
//////////////////////////////////////////////////////////
function GetFarzinMasterWindow(hwnd) {
    if (hwnd.dialogArguments != null) {
        alert("Window.dialogArguments is not null");
        throw "Window.dialogArguments is not null";
    }

    var i = 0;
    var farzinMasterDialog = hwnd;
    while (farzinMasterDialog != farzinMasterDialog.parent && i < MaxLoopCount) {
        farzinMasterDialog = farzinMasterDialog.parent;
        i++;
    }
    if (i >= MaxLoopCount) {
        alert("Loop exception in GetFarzinMasterWindow");
        throw "Loop exception in GetFarzinMasterWindow";
    }
    return farzinMasterDialog;
}
//////////////////////////////////////////////////////////
function IsUtilitiesAvailable(callback) {
    if (window.Utilities == null) {
        if (GetDialogMasterWindow(window).Utilities != null) {
            window.Utilities = GetDialogMasterWindow(window).Utilities;
            return true;
        }
        if (typeof callback == "function")
            setTimeout(callback, 1);
        return false;
    }
    return true;
}
//////////////////////////////////////////////////////////
function GetDialogMasterWindow(hwnd) {
    var i = 0;
    var dialogMasterWindow = hwnd;
    while (dialogMasterWindow != dialogMasterWindow.parent && i < MaxLoopCount) {
        dialogMasterWindow = dialogMasterWindow.parent;
        i++;
    }
    if (i >= MaxLoopCount) {
        alert("Loop exception in GetFarzinMasterWindow");
        throw "Loop exception in GetFarzinMasterWindow";
    }
    return dialogMasterWindow;
}
//////////////////////////////////////////////////////////
function RegisterUtilities() {
    if (ParentWindow.dialogArguments == null)
        window.Utilities = GetFarzinMasterWindow(ParentWindow).Utilities;
    else
        window.Utilities = GetParentModalDialog(ParentWindow).Utilities;
}
//////////////////////////////////////////////////////////
