﻿$.pdiPopup = function (settings, callback) {
    /// <summary>
    ///popup sayfası için kullanılır.setting degerine wrap ve content degerlerı verılır.wrap ile contentin acılma hızları manuel olarak verilmiştir.değiştirilmek istenirse wrapSpeed , contentSpeed degerlerne istenilen hız yazılır.
    ///</summary> 
    settings = $.extend(
    {
        wrapSpeed: '600',
        contentSpeed: '700',
        content: '',
        close: '',
        url: '',
        dispose: ''

    },
    settings);

    var wrap = '<div id="contentWrap" ></div>';
    $('body').append(wrap);

    var url = settings.url;
    var wrapContent = $('#contentWrap');
    var close = settings.close;
    var wrapSpeed = settings.wrapSpeed;
    var content = settings.content;
    var dispose = settings.dispose;


    content.css('display', 'none');
    wrapContent.fadeIn(wrapSpeed, function () {
        //css özelliklerini ekliyoruz
        wrapContent.css(
        {
            "position": "fixed",
            "width": "100%",
            "height": "100%",
            "left": "0",
            "top": "0",
            "margin": "0px",
            "background-color": "#000",
            "z-index": "1000",
            "opacity": "0.6"
        });

        var screenWidth = $('body').width();
        var screenHeight = $('body').height();
        var contentHeight = content.outerHeight();
        var contentWidth = content.width();
        var contentSpeed = settings.contentSpeed;
        content.css({
            'position': 'absolute',
            'min-height': '150px',
            'z-index': '9999',
            'left': '10px;',
            'top': '40px',
//            'margin-top': -($(content).height() / 2) + 'px',
//            'margin-left': -($(content).width() / 2) + 'px'
        });
        content.fadeIn(contentSpeed);
        $.call(this, callback);
    });





    wrapContent.bind('click', function () {
        if (url == '') {

            // alert($(content).attr('id'));
            content.fadeOut(100);
            $(this).fadeOut(200);
            if (dispose != '') {
                dispose.html('');
            }
        }
        else {
            location.href = url;
        }
        return false;
    });


    close.bind('click', function () {




        if (url == '') {

            content.fadeOut(100);
            wrapContent.fadeOut(200);
            if (dispose != '') {
                dispose.html('');
            }
        }
        else {
            location.href = url;
        }

        return false;
    });



}



$.pdiIsNumeric = function (settings) {
    ///<summary>
    ///control olarak verılen textbox a sadece numara 0.1.2.3.4.5.6.7.8.9 rakamlarının girmesini saglar.
    ///value textbox olarak deger alır dırek konrtolu vermenız yeterli $("#txt[type=text]) şeklinde de olabilir..
    //isDecimal degerı ondalık sayı gırıldıgınde true olarak ızin verilir birsey yazılmazsa false degerını alır.
    ///</summary>

    settings = $.extend({ control: '', isDecimal: false }, settings);

    var textBox = settings.control; //kontrolu textBox degıskenıne aktarıyoruz.
    var isDecimal = settings.isDecimal; //ondalık sayı girilebilir olamasına izin verir

    textBox.bind('keydown', function (e) {

        //46 delete tuşu
        //8 backSpace tuşu
        //96 ... 150 sağ rakamlar.
        //48 ...57 yukarı rakamlar..
        //110 sağ rakamların oldugu virgül tuşu...
        //188 normal virgül tuşu
        var keyCode = e.keyCode;
        if (!isDecimal) {//ondalık sayı degerıi false ise
            if (!((keyCode >= 96 && keyCode <= 105) || (keyCode >= 48 && keyCode <= 57) || keyCode == 8 || keyCode == 46 || keyCode == 37 || keyCode == 39)) {//klavyenin sol tuşları.
                e.preventDefault();
            }
        }
        else {
            if (!((keyCode >= 96 && keyCode <= 105) || (keyCode >= 48 && keyCode <= 57) || keyCode == 8 || keyCode == 110 || keyCode == 188 || keyCode == 46 || keyCode == 190 || keyCode == 37 || keyCode == 39)) {//klavyenin sol tuşları.
                e.preventDefault();
            }
        }
    });

}


//günleri diziye atiyrouz
var days = ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'];
//ayları diziye atıyoruz.
var months = ['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Agustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık'];

var date = new Date();
var nowDay = date.getDate(); //bu gün ayın kaçı ?
var nowMonth = date.getMonth(); //hangi aydayız ?
var nowYear = date.getFullYear(); //hangi yıldayız
var calender = $("#clander");


function GetNowDayName() {
    return days[date.getDay()]; //bugünün adını return ediyor.
}


function DaysInMonth(year, month) {//ayın son gününü alıyoruz.
    var monthLastdays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    if (month != 2) {//eger ay şubat degil ise ayı bir azalt return et.
        return monthLastdays[month - 1];
    }
    if (year % 4 != 0) {//yılın 4 ıle bölüümünden kalan 0 degil ise o ay 28 çekiyordur.yani şubatt
        return monthLastdays[1];
    }
    if (year % 100 == 0 && year % 400 != 0) {
        return monthLastdays[1];
    }
    return monthLastdays[1] + 1; //hiç biri degilse ayı bir arttır ve gönder return et.
    //+1 yada -1 yapmamızın sebebi dizideki degerlerin 0 index ile basşaması
}


function CreateCalender() {//takvimi oluşturuyoruz

    var firstDate = new Date();
    var today = firstDate.getDate();
    firstDate.setDate(1);
    firstDate.setMonth(nowMonth); //+1 koymamızın sebebi getMonth 0,1,2,3 şklinde ay dönderir.örnegin şubat ayı için 1 yazılmalıdır.
    firstDate.setFullYear(nowYear);

    var nowMonthOfDayName = days[date.getDay()]; //ayın ilk gününün Adı
    var startDayStep = firstDate.getDay(); //ayın ilk gününün Id sini alıyorz.bu sayede kac gün atlayacagımızı hesaplıyoruz.

    var calender = '';

    calender += '<table id="clander">'; //takvimi olşturmaya başlıyrouz.

    calender += '<td>';
    calender += '<img src="Images/SiteImages/preview.gif" onclick="PrevMonth()" />';
    calender += '</td>';

    calender += '<td>';
    calender += '</td>';

    calender += '<td colspan="3" >';
    calender += months[nowMonth] + ' - ' + nowYear;
    calender += '</td>';

    calender += '<td>';
    calender += '</td>';


    calender += '<td>';
    calender += '<img src="Images/SiteImages/next.gif" onclick="NextMonth()" />';
    calender += '</td>';


    calender += '<tr>';
    for (var i = 0; i < days.length; i++) {//günleri oluşturuyoruz
        calender += '<td> ' + days[i] + '</td>';
    }
    calender += '</tr>';



    var lastDaycount = DaysInMonth(nowYear, nowMonth + 1);

    for (var i = 1; i <= lastDaycount + 7; i += 7) {

        if (i < 7) {
            calender += '<tr>';
            for (var j = 1; j <= startDayStep; j++) {//boş günleri oluşturuyoruz.
                calender += '<td></td>';
            }
            for (var k = 1; k <= 7 - startDayStep; k++) {//geriye kalan günleri eklemeye başlıyoruz



                if (k == today) {//buügünü atıyoruz
                    calender += '<td class="today" ';
                }
                else {
                    calender += '<td ';
                }


                calender += ' onclick="GetDate(' + k + ',' + (nowMonth + 1) + ',' + nowYear + ')">' + k + '</td>'; //günleri aldıl ilk haftanın...
            }
            calender += '</tr>';
        }
        else if (i > 7) {

            calender += '<tr>';
            var count = 0; //geriye kactane boş alanın kalacagını sayıyoruz.
            for (var y = i - startDayStep; y < i + 8 - startDayStep - 1; y++) {
                if (y > lastDaycount) {//eger dönen değer ayın son gününden büyük ise döngüden çık
                    break;
                }

                if (y == today) {
                    calender += '<td class="today" '; //bügünü atıyoruz
                }
                else {
                    calender += '<td ';
                }

                calender += ' onclick="GetDate(' + y + ',' + (nowMonth + 1) + ',' + nowYear + ')">' + y + '</td>';
                count++;
            }

            if (count < 7 && count != 0) {//sonda kalan boşlukları ekliyoruz.
                for (var v = 0; v < 7 - count; v++) {
                    calender += '<td></td>';
                };
            }
            calender += '</tr>';
        }
    }

    calender += '</table>';
    return calender;
}

//bir sonraki ayı getirir
function NextMonth() {
    nowMonth += 1;
    if (nowMonth >= 12) {
        nowMonth = nowMonth % 12;
        nowYear++;
    }

    calender.fadeOut(300);
    thisControl.html(CreateCalender()).fadeIn();
}


function GetDate(day, month, year) {//tarihi dönderir...
    alert(day + '.' + month + '.' + year);
}

//bir önceki ayı getirir..
function PrevMonth() {
    if (nowMonth <= 0) {
        nowMonth = 12;
        nowYear--;
    }
    nowMonth--;
    calender.fadeOut(300);
    thisControl.html(CreateCalender()).fadeIn();


}

var thisControl = '';

$.pdiDateTimePicker = function (control) {
    /// <summary>
    ///Takvim olusturur ID sını verdıgınız tag ın html ine tarih(datatimepicker) oluşturur.
    ///</summary> 
    thisControl = control;
    $(control).html(CreateCalender());
}


$.pdiTextSearch = function (settings) {

    var settings = $.extend({

        text: '',
        content: '',
        bgColor: '#000',
        color: '#fff'

    },
    settings);


    var color = settings.color;
    var bgColor = settings.bgColor;
    var contentHtml = settings.content;

    var fontStyleStartTag = '<font style="color:' + color + ';background-color:' + bgColor + ';">';
    var fontStyleEndTag = '</font>';


    var searchTextArr = settings.text.split(' '); //aranacak kelimelerin uzunlugu

    var content = contentHtml.html(); //içerigi content e aktarıyoruz.

    var contentLenght = content.length; //içerik uzunlugu

    for (var i = 0; i < searchTextArr.length; i++) {

        var lcContent = content.toLowerCase();

        var searchText = searchTextArr[i];

        var lcSearch = searchText.toLowerCase();

        var newContent = ''
        var index = -1;

        while (content.length > 0) {

            index = lcContent.indexOf(lcSearch);

            if (index < 0) {

                newContent += content;
                content = '';

            }
            else {

                if (content.lastIndexOf(">") >= content.lastIndexOf("<")) {//html karakterlerde aramaması ıcın...


                    newContent += content.substring(0, index) + fontStyleStartTag + content.substr(index, lcSearch.length) + fontStyleEndTag;

                    content = content.substr(index + lcSearch.length);

                    lcContent = content.toLowerCase();
                    index = -1;
                }
            }
        }
    }

    $(contentHtml).html(newContent);
}

$.pdiAddToFavorite = function () {

    var title = document.title;
    var url = location.href;

    if (document.all)
        window.external.AddFavorite(url, title);
    else
        if (window.sidebar)
            window.sidebar.addPanel(title, url, "")

}

$.pdiSharedToFacebook = function () {

    var title = document.title;
    var url = location.href;

    var requestUrl = 'http://www.facebook.com/sharer.php?u=' + url + '&t=' + title;

    location.href = requestUrl;


}

$.pdiSharedToTwitter = function () {

    var title = document.title;
    var requestUrl = 'http://twitter.com/home?status=' + title;
    location.href = requestUrl;
}

$.pdiShowToIframe = function (settings) {

    settings = $.extend(
    {
        src: '',
        width: '615',
        height: '600'
    }, setting);

    var src = settings.src;
    var htmlIframe = '';
    htmlIframe += '';
    htmlIframe += '<iframe width="615px" height="600" style="border: 0px;" scrolling="no" src="' + src + '"';

    htmlIframe += '></iframe>';

}

$.IsEmail = function (emailAddress) {

    var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);

    return pattern.test(emailAddress);
}
