'****************************************************************************************************************
'* Id Application modified by:   Date(MM/dd/yyyy)   Description													*
'* -- ------------------------   --------           -------------------------------------------	    			*
'* 01 Raśl Callupe - PACNET      03/10/2006         Creation of the CAMSBasePage class used as a base page      *
'*                                                  for any page that requires functionality. Includes basic    *
'*                                                  functions.                                                  *
'****************************************************************************************************************

Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Text
Imports CAMS_ADMIN

Public Class CAMSBasePage
    Inherits System.Web.UI.Page

    Private _strAppName As String
    Private _strAppPath As String
    Private _strLogoPath As String
    Private _strAppVersion As String


#Region "Properties"

    Public ReadOnly Property ApplicationName() As String
        Get
            Return _strAppName
        End Get
    End Property

    Public ReadOnly Property ApplicationPath() As String
        Get
            Return _strAppPath
        End Get
    End Property

    Public ReadOnly Property ApplicationVersion() As String
        Get
            Return _strAppVersion
        End Get
    End Property

    Public ReadOnly Property LogoPath() As String
        Get
            Return _strLogoPath
        End Get
    End Property

#End Region

    'Start, id: 01
    Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
        MyBase.OnInit(e)
        InitializeProperties()
        InitializeSession()
        RegisterJavascripts()
    End Sub
    'End, id: 01

#Region "Javascript functions and initialization of properties"

    'Start, id: 01
    Private Sub InitializeProperties()
        _strAppName = ConfigurationSettings.AppSettings("AppName")
        _strAppPath = ConfigurationSettings.AppSettings("AppPath")
        _strAppVersion = ConfigurationSettings.AppSettings("AppVersion")
        _strLogoPath = ConfigurationSettings.AppSettings("LogoPath")
    End Sub
    'End, id: 01

    Private Sub RegisterJavascripts()
        Dim sbScript As New StringBuilder

        sbScript.Append("<script language=""javascript"">")
        sbScript.Append("var isIE = document.all?true:false;")
        sbScript.Append("var isNS = document.layers?true:false;")
        sbScript.Append("function fnOnlyDigits(e,decReq) {")
        sbScript.Append("   var key = (isIE) ? window.event.keyCode : e.which;")
        sbScript.Append("   var obj = (isIE) ? event.srcElement : e.target;")
        sbScript.Append("   var isNum = (key > 47 && key < 58 || key==13) ? true:false;")
        sbScript.Append("   var dotOK = (key==46 && decReq=='decOK' && (obj.value.indexOf(""."")<0 || obj.value.length==0)) ? true:false;")
        sbScript.Append("   window.event.keyCode = (!isNum && !dotOK && isIE) ? 0:key;")
        sbScript.Append("   e.which = (!isNum && !dotOK && isNS) ? 0:key;")
        sbScript.Append("   return (isNum || dotOK);")
        sbScript.Append("}")
        sbScript.Append("</script>")

        Page.RegisterClientScriptBlock("fnOnlyDigits", sbScript.ToString())

        sbScript = New StringBuilder
        sbScript.Append("<script language=""javascript"">")
        sbScript.Append("   function Trim(Trim_VALUE){")
        sbScript.Append("       if(Trim_VALUE.length < 1){	return""""; }")
        sbScript.Append("       Trim_VALUE = RTrim(Trim_VALUE);")
        sbScript.Append("       Trim_VALUE = LTrim(Trim_VALUE);")
        sbScript.Append("       if(Trim_VALUE==""""){ return """";}")
        sbScript.Append("       else{ return Trim_VALUE;}")
        sbScript.Append("   }")
        sbScript.Append("</script>")
        Page.RegisterClientScriptBlock("Trim", sbScript.ToString())

        sbScript = New StringBuilder
        sbScript.Append("<script language=""javascript"">")
        sbScript.Append("   function RTrim(VALUE){")
        sbScript.Append("       var w_space = String.fromCharCode(32);")
        sbScript.Append("       var v_length = VALUE.length;")
        sbScript.Append("       var strTemp = """";")
        sbScript.Append("       if(v_length < 0){return"""";}")
        sbScript.Append("       var iTemp = v_length -1;")
        sbScript.Append("       while(iTemp > -1){")
        sbScript.Append("       if(VALUE.charAt(iTemp) == w_space){}")
        sbScript.Append("       else{strTemp = VALUE.substring(0,iTemp +1);")
        sbScript.Append("       break;}")
        sbScript.Append("       iTemp = iTemp-1;}")
        sbScript.Append("       return strTemp;")
        sbScript.Append("   }")
        sbScript.Append("</script>")
        Page.RegisterClientScriptBlock("RTrim", sbScript.ToString())

        sbScript = New StringBuilder
        sbScript.Append("<script language=""javascript"">")
        sbScript.Append("   function LTrim(VALUE){")
        sbScript.Append("       var w_space = String.fromCharCode(32);")
        sbScript.Append("       if(v_length < 1){return"""";}")
        sbScript.Append("       var v_length = VALUE.length;")
        sbScript.Append("       var strTemp = """";")
        sbScript.Append("       var iTemp = 0;")
        sbScript.Append("       while(iTemp < v_length){")
        sbScript.Append("       if(VALUE.charAt(iTemp) == w_space){}")
        sbScript.Append("       else{strTemp = VALUE.substring(iTemp,v_length);")
        sbScript.Append("       break;}")
        sbScript.Append("       iTemp = iTemp + 1;}")
        sbScript.Append("       return strTemp;")
        sbScript.Append("   }")
        sbScript.Append("</script>")
        Page.RegisterClientScriptBlock("LTrim", sbScript.ToString())
    End Sub

#End Region

#Region "Redirect to ..."

    Protected Sub RedirectToLogin(Optional ByVal nErrorNumber As Integer = 0)
        Dim sbScript As New StringBuilder
        sbScript.Append("<script language=""javascript"">")

        If nErrorNumber <> 0 Then
            sbScript.Append("     window.parent.location=""" & _strAppPath & "frmLogin.aspx?errid=" & nErrorNumber.ToString & """")
        Else
            sbScript.Append("     window.parent.location=""" & _strAppPath & "frmLogin.aspx""")
        End If

        sbScript.Append("</script>")
        Response.Write(sbScript.ToString())
        Response.End()
    End Sub

    Protected Sub RedirectToHome()
        Response.Redirect(_strAppPath & "frmHome.aspx", True)
    End Sub

    Protected Sub RedirectToMsgPage(ByVal strMsgID As String, Optional ByVal strParams As String = "")

        If strMsgID.Trim.Equals(String.Empty) = False Then
            Response.Redirect(_strAppPath & "frmMessage.aspx?redirect=" & Request.Path & "&errid=" & strMsgID & strParams, True)
        End If

    End Sub

    'Protected Sub RedirectOnError()
    '    Response.Redirect("")
    '    Response.End()
    'End Sub

#End Region

#Region "Common Methods"

    Public Function GetControlID(ByVal prmControlName As String) As String
        Dim oCC_Security As New CC_Security

        Return oCC_Security.GetControlID(prmControlName)
    End Function

    Public Function HasAccessTo(ByVal prmPageId As String, ByVal prmAccessGroupId As String) As Boolean
        Dim oCC_Security As New CC_Security

        Return oCC_Security.GetHasAccessToControl(prmPageId, prmAccessGroupId)
    End Function

#End Region

#Region "Session Management"

    Private Sub InitializeSession()

        If Session(Constants.CONST_TYPE_SESSION_NAME) Is Nothing Then
            RedirectToLogin(Constants.CONST_ERROR_ACCESSDENIED_TOAPP)
        End If

    End Sub

    Protected Function GetUserFromSession() As EC_User

        Try
            Dim serializer As New Xml.Serialization.XmlSerializer(GetType(EC_User))
            Dim r As New System.IO.StringReader(Session.Item(Constants.CONST_TYPE_SESSION_NAME))
            Dim oEC_User As EC_User = CType(serializer.Deserialize(r), EC_User)

            If Not oEC_User Is Nothing Then
                Return oEC_User
            Else
                Throw New Exception("User session is not referenced.")
            End If
        Catch ex As Exception
            RedirectToLogin()
        End Try

    End Function

    Protected Function Logout()
        Try
            Session.Clear()
            Session.Abandon()
        Catch ex As Exception
            Throw ex
        End Try
    End Function

#End Region

End Class

