
var browser_IE = document.all ? true : false;
var CR   = String.fromCharCode(13); // Return.
var CRLF = String.fromCharCode(10) + String.fromCharCode(13); // Satır sonu.

// Hex işlemlerini gerçekleştirir.
var HexConverter =
{
    hexDigits: new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"),

    Chr: function(Ascii_Code)
    {
        var Result;

        Result = String.fromCharCode(Ascii_Code);

        // Türkçe karakterleri ayarla.
        switch (Ascii_Code)
        {
            case 208:
                Result = 'Ğ';
                break;
                
            case 240:
                Result = 'ğ';
                break;

            case 220:
                Result = 'Ü';
                break;

            case 252:
                Result = 'ü';
                break;

            case 222:
                Result = 'Ş';
                break;

            case 254:
                Result = 'ş';
                break;

            case 221:
                Result = 'İ';
                break;

            case 253:
                Result = 'ı';
                break;

            case 214:
                Result = 'Ö';
                break;

            case 246:
                Result = 'ö';
                break;

            case 199:
                Result = 'Ç';
                break;

            case 231:
                Result = 'ç';
                break;
        }

        return Result;
    },

    ChrToHex: function(Char)
    {
        return (this.hexDigits[Char.charCodeAt(0) >> 4] + this.hexDigits[Char.charCodeAt(0) & 15]);
    },

    HexToChr: function(Hex)
    {
        return this.Chr(parseInt(Hex, 16));
    },

    StringToHex: function(Str)
    {
        Result  = '';

        for (i = 0; i < Str.length; i++)
        {
          Result += this.ChrToHex(Str.substring(i, i + 1));
        }

        return Result;
    },

    HexToString : function(Hex)
    {
        Result  = '';

        for (i = 0; i < Hex.length; i += 2)
        {
            Result += this.HexToChr(Hex.substring(i, i + 2));
        }

        return Result;
    }
}

function Get_Obj(Obj_Id)
{
    // Obj_Id ile bildirilen nesnenin kendisini döndürür.
    return document.getElementById(Obj_Id);
}

function Obj_Left(Obj_Id)
{
    // Obj_Id ile bildirilen nesnenin left pozisyonunu döndürür.

    var Obj = Get_Obj(Obj_Id).style;

    if (Obj)
        return parseInt(Obj.left);
    else
        return 0;
}

function Obj_Top(Obj_Id)
{
    // Obj_Id ile bildirilen nesnenin top pozisyonunu döndürür.
    
    var Obj = Get_Obj(Obj_Id).style;
    
    if (Obj)
        return parseInt(Obj.top);
    else
        return 0;
}

function Obj_Width(Obj_Id)
{
    // Obj_Id ile bildirilen nesnenin uzunluğunu döndürür.

    var Obj = Get_Obj(Obj_Id).style;

    if (Obj)
        return parseInt(Obj.width);
    else
        return 0;
}

function Obj_Move(Obj)
{
  /*  Şimdilik iptal.
    MPos = GetMousePos(Obj);
    alert(MPos.X.toString() + ', ' + MPos.Y.toString())
    Obj.style.left = MPos.X.toString() + 'px';
    Obj.style.top = MPos.Y.toString() + 'px';
  */
}

function captureMousePosition(e)
{
    var Result = {X: 0, Y: 0};
    
    if (document.layers)
    {
        // When the page scrolls in Netscape, the event's mouse position
        // reflects the absolute position on the screen. innerHight/Width
        // is the position from the top/left of the screen that the user is
        // looking at. pageX/YOffset is the amount that the user has
        // scrolled into the page. So the values will be in relation to
        // each other as the total offsets into the page, no matter if
        // the user has scrolled or not.
        xMousePos = e.pageX;
        yMousePos = e.pageY;
        xMousePosMax = window.innerWidth+window.pageXOffset;
        yMousePosMax = window.innerHeight+window.pageYOffset;
    }
    else
    if (document.all)
    {
        // When the page scrolls in IE, the event's mouse position
        // reflects the position from the top/left of the screen the
        // user is looking at. scrollLeft/Top is the amount the user
        // has scrolled into the page. clientWidth/Height is the height/
        // width of the current page the user is looking at. So, to be
        // consistent with Netscape (above), add the scroll offsets to
        // both so we end up with an absolute value on the page, no
        // matter if the user has scrolled or not.
        xMousePos = window.event.x+document.body.scrollLeft;
        yMousePos = window.event.y+document.body.scrollTop;
        xMousePosMax = document.body.clientWidth+document.body.scrollLeft;
        yMousePosMax = document.body.clientHeight+document.body.scrollTop;
    } else 
    if (document.getElementById)
    {
        // Netscape 6 behaves the same as Netscape 4 in this regard
        xMousePos = e.pageX;
        yMousePos = e.pageY;
        xMousePosMax = window.innerWidth+window.pageXOffset;
        yMousePosMax = window.innerHeight+window.pageYOffset;
    }

    Result.X = xMousePos;
    Result.Y = yMousePos;

    return Result;
}

function Get_PosX(Obj_Id)
{
    var Obj = Get_Obj(Obj_Id);
    var curleft = 0;
    
    if(Obj.offsetParent)
        while(1)
        {
            curleft += Obj.offsetLeft;
            if(!Obj.offsetParent)
                break;
            Obj = Obj.offsetParent;
        }
    else
        if(Obj.x)
            curleft += Obj.x;
        
    return curleft;
}

function Get_PosY(Obj_Id)
{
    var Obj = Get_Obj(Obj_Id);
    var curtop = 0;

    if(Obj.offsetParent)
        while(1)
        {
            curtop += Obj.offsetTop;
            if(!Obj.offsetParent)
                break;
            Obj = Obj.offsetParent;
        }
    else
        if(Obj.y)
            curtop += Obj.y;

    return curtop;
}

function Get_Width(Obj_Id)
{
    // Obj_Id ile bildirilen nesnenin uzunluğunu döndürür.

    var Obj = Get_Obj(Obj_Id);

    if (Obj)
        return parseInt(Obj.offsetWidth);
    else
        return 0;
}

function Get_Height(Obj_Id)
{
    // Obj_Id ile bildirilen nesnenin yüksekliğini döndürür.

    var Obj = Get_Obj(Obj_Id);

    if (Obj)
        return parseInt(Obj.offsetHeight);
    else
        return 0;
}

function GetMousePos(e)
{
    var Result = {X: 0, Y: 0};
    
    if (browser_IE) // Browser IE ise
    {
        e = event;
        Result.X = e.clientX + document.body.scrollLeft;
        Result.Y = e.clientY + document.body.scrollTop;
    }
    else // Browser IE değil.
    {
        // if (typeof Event == 'object') // Firefox için ama çalışmıyor.
        //     e = Event;
        // else
        
        if (typeof window.event == 'object') // Chrome için
            e = window.event;
          
        Result.X = e.pageX;
        Result.Y = e.pageY;
    }

    if (Result.X < 0)
        Result.X = 0;

    if (Result.Y < 0)
        Result.Y = 0;

    return Result;
}

function Ara_Kutusu(Obj, Mesaj)
{
    /******************************************************************************
     * @Function    : Ara_Kutusu
     *
     * @Description : Arama işlemlerinde kullanılan kutunun içindeki yazıyı ayarlar.
     *                Kutunun onblur ve onfocus olayları kullanılır.
     *                Mesaj kısmındaki değer her iki olayda da aynı olmalıdır.
     *                Kullanım şekli:
                      <input type="text" name="aranan" value="Aranan  kelimeyi giriniz"
     *                onblur="Ara_Kutusu(this, 'Aranan  kelimeyi giriniz')"
     *                onfocus="Ara_Kutusu(this, 'Aranan  kelimeyi giriniz')"/>
     *
     * @Param       : input_tag Obj
     * @Param       : String    Mesaj
     * @Return      : Yok
     *****************************************************************************/

    if(Obj.value == "")
        Obj.value = Mesaj;
    else
    if(Obj.value == Mesaj)
        Obj.value = "";

    return true;
}

function Pencere_Ac(Url, Pencere_Adi, Pencere_Ozellikleri)
{
    /******************************************************************************
     * @Function    : Pencere_Ac
     *
     * @Description : Yeni bir pencere açar.
     *
     * @Param       : strUrl  Url
     * @Param       : String  strWindowName
     * @Param       : String  strWindowFeatures
     * @Return      : Yok
     *****************************************************************************/


    /*
     * ÖRNEK kullanım:
     *
     * Pencere_Ac(url, 'popupWindow', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=475,height=300,screenX=100,screenY=100,top=100,left=100')
     *
     **/

    window.open(Url, Pencere_Adi, Pencere_Ozellikleri);
}

function Pencere_Ac_Layer(Fark_X, Fark_Y, MAIN_LYR_ID, CAPTION_LYR_ID, IMG_LYR_ID,  IMG_ID, IMG_LOADER_ID, Url, Width, Height, Overflow)
{
    /******************************************************************************
     * @Function    : Pencere_Ac_Layer
     *
     * @Description : Div katmanında bir pencere açar ve imaj gösterir.
     *
     *****************************************************************************/


    /*
     * ÖRNEK kullanım:
     *
     * Örnek1:
     * Pencere_Ac_Layer(0, 0, 'Image_View_MAIN_LYR', 'Image_View_CAPTION_LYR', 'Image_View_IMG_LYR', 'Image_View_IMG', 'Image_View_IMG_LOADER', 'images/buyuk_resim', '500', '500', 'auto');
     *
     * Örnek2:
      <IMG src="images/urun.png" style="cursor:pointer"
        onclick="Pencere_Ac_Layer(0, 0, 'Image_View_MAIN_LYR', 'Image_View_CAPTION_LYR', 'Image_View_IMG_LYR', 'Image_View_IMG', 'Image_View_IMG_LOADER', 'images/buyuk_resim', '500', '500', 'auto')" />
     *
     **/

    var Obj_MAIN_LYR    = Get_Obj(MAIN_LYR_ID);
    var Obj_CAPTION_LYR = Get_Obj(CAPTION_LYR_ID);
    var Obj_IMG_LYR     = Get_Obj(IMG_LYR_ID);
    var Obj_IMG         = Get_Obj(IMG_ID);
    var Obj_IMG_LOADER  = Get_Obj(IMG_LOADER_ID);

    Obj_IMG.src                   = '';             // Mevcut imajın silinmesini sağla.
    Obj_IMG.style.display         = 'none';         // Imajı gizle.
    Obj_IMG_LOADER.style.display  = 'block';        // Bekleme animasyonunu göster.
    Obj_IMG_LYR.style.overflow    = Overflow;       // Scroll özelliği aktif.
    Obj_IMG.src                   = unescape(Url);  // Imajı yükle.

    Obj_MAIN_LYR.style.width      = (parseInt(Width)).toString()  + "px";
    Obj_MAIN_LYR.style.height     = (parseInt(Height) + parseInt(Obj_CAPTION_LYR.style.height)).toString() + "px";
    Obj_MAIN_LYR.style.left       = (((screen.width / 2) - (parseInt(Obj_MAIN_LYR.style.width) / 2)) + Fark_X).toString() + "px";
    Obj_MAIN_LYR.style.top        = (((screen.height / 2) - (parseInt(Obj_MAIN_LYR.style.height) / 2)) + Fark_Y).toString() + "px";

    Obj_IMG_LYR.style.width       = Obj_MAIN_LYR.style.width;
    Obj_IMG_LYR.style.height      = (parseInt(Height)).toString() + "px";

    Obj_MAIN_LYR.style.display    = "block";
}

function Seffaf_Yap(Obj, Opacity)
{
    /******************************************************************************
     * @Function    : Seffaf_Yap
     *
     * @Description : Obj ile bildirilen nesnenin style.opacity değerini değiştirerek
     *                şeffaflık görünümünü değiştirir.
     *
     * @Param       : Object  Obj
     * @Param       : Number  Opacity
     * @Return      : Yok
     *****************************************************************************/
    
    if (Obj != null)
    {
        Obj = Obj.style;

        if (Obj.opacity != null)
            Obj.opacity = (Opacity / 100);

        if (Obj.MozOpacity != null)
            Obj.MozOpacity = (Opacity / 100);

        if (Obj.KhtmlOpacity != null)
            Obj.KhtmlOpacity = (Opacity / 100);

        if (Obj.filter != null)
            Obj.filter = "alpha(opacity=" + Opacity.toString() + ")";
    }
}

function GetXmlHttpObject(Event_OnReadyStateChange, Event_OnTimeOut)
{
    var xmlHttp = null;

    if (window.XMLHttpRequest)
    {
        // Eğer, IE7+, Mozilla, Safari veya destekleyen bir tarayıcı ise.
        xmlHttp = new XMLHttpRequest();
    }
    else
    {
        // Eski Internet Explorer Versionları
        if (window.ActiveXObject)
        {
            try
            {
                // IE5.x ve IE6 için
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e)
            {
                try
                {
                    // IE5`ten önceki tarayıcılar için
                    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch (e)
                {
                    // alert("Tarayıcınız AJAX teknolojisini desteklemiyor!");
                }
            }
        }
    }

    if (xmlHttp != null)
    {
        xmlHttp.onreadystatechange = Event_OnReadyStateChange;
        xmlHttp.ontimeout = Event_OnTimeOut;
    }

    //xmlHttp.overrideMimeType('text/html; charset=iso-8859-9');
    return xmlHttp;
}

function Trim(Str)
{
    var Result = '';
    var i;
    var Left = -1;
    var Right = -1;

    // Soldaki boşluk olmayan ilk karakteri bul.
    for (i = 0; i < Str.length; i++)
        if (Str.charCodeAt(i) > 32)
        {
            Left = i;
            break;
        }

    // Sağdaki boşluk olmayan ilk karakteri bul.
    for (i = Str.length - 1; i > -1; i--)
        if (Str.charCodeAt(i) > 32)
        {
            Right = i;
            break;
        }

    // Sağ ve sol boşlukları atarak ortaki karakterleri al.
    if (Left > -1)
        Result = Str.substring(Left, Right + 1);

    return Result;
}

function Karakter_Say(Str, Sayilan)
{
    var Result = 0;

    for (var i = 0; i < Str.length; i++)
        if (Str[i] == Sayilan)
            Result++;

    return Result;
}

function isValidMail(mail)
{
    var EMik = Karakter_Say(Trim(mail), '@'); // "@" Sayısı.
    var NMik = Karakter_Say(Trim(mail), '.'); // "." Sayısı.

    if (EMik != 1 || NMik < 1 || mail.charAt(0) == '@' || mail.charAt(0) == '.')
        return false;
    else
        if (mail.charAt(mail.length - 1) == '@' || mail.charAt(mail.length - 1) == '.')
            return false;
        else
            return true;
}
