// Namespace tanımlanıyor
if (typeof ZEYTIN == "undefined" || !ZEYTIN) var ZEYTIN = {};

// Ajax nesne prototipi
ZEYTIN.ajaxGonder = function(sayfa, parametreler, calistirilacakFonksiyon, maskeliBekletme) {
	// xmlHttpRequest nesnesi oluşturan fonksiyon
	var xmlHttpOlustur = function() {
	  	var xmlHttp;

		// Firefox, Opera 8.0+, Safari
		try {
		  	xmlHttp = new XMLHttpRequest();
	 	}
		catch (e) {
	  		// Internet Explorer
	  		try {
	    		xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
	    	}
	  		catch (e) {
	    		try {
	      			xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
	      		}
	    		catch (e) {
	     			alert('Tarayıcınız ajax desteklemiyor.');
	      		}
			}
		}

		return xmlHttp;
	};

	// Ajax isteğini gönderen fonksiyon
	var istekGonder = function() {
		var xmlHttp = xmlHttpOlustur();

		// xmlHttp nesnesinin durumu değiştiğinde çalışacak fonksiyon
		xmlHttp.onreadystatechange = function() {
			// Bilgilerin tamamı gelmişse
			if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
				// Sonuç okunuyor
				var sonuc;

				// Sonuç XML ise
				if (xmlHttp.getResponseHeader("Content-Type") == 'text/xml') {
					sonuc = xmlHttp.responseXML;
					sonuc.degerOku = function(alan) {
						var deger;

						if (this.getElementsByTagName(alan)[0] && this.getElementsByTagName(alan)[0].childNodes.length > 0) {
							deger = this.getElementsByTagName(alan)[0].childNodes[0].nodeValue;
						}

						return deger || '';
					};
				}
				else {
					sonuc = xmlHttp.responseText;
				}

				// xmlHttp nesnesi kapatılıyor
				xmlHttp.close; xmlHttp.abort; xmlHttp = null;

				if (maskeliBekletme) beklemeyiBitir();

				// Sonuç geldiğinde çalıştırılması istenen fonksiyon çağrılıyor
				calistirilacakFonksiyon(sonuc);
			}
		};

		// İstek gönderiliyor
		xmlHttp.open("POST", sayfa, true);

		xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlHttp.setRequestHeader("Content-length", parametreler.length);
		xmlHttp.setRequestHeader("Connection", "close");

		if (maskeliBekletme) beklemeyiBaslat();
		xmlHttp.send(parametreler);
	};

	var eskiOnResize;
	var eskiOnScroll;

	var beklemeyiBaslat = function() {
	    // Bekletme penceresi zaten açıksa çık
	    if (document.getElementById('zeytinAjaxBekletmeDiv')) return;

	    // Değişkenler hazırlanıyor
	    var sayfaBody = document.getElementsByTagName('body')[0];
	    var genislik = 150;
	    var yukseklik = 70;

	    // Bekletme penceresi oluşturup gösteren fonksiyon
	    pencereOlusturGoster = function()
	    {
	        maskeDivOlustur();
	        pencereDivOlustur();

	        pencereyiGoster();

	        divBoyutKonumAyarla();


			eskiOnResize = window.onresize;
			eskiOnScroll = window.onscroll;

			window.onresize = divBoyutKonumAyarla;
	        window.onscroll = divBoyutKonumAyarla;
	    };

	    // Maske div'i oluşturup gösteren fonksiyon
	    maskeDivOlustur = function()
	    {
	        var maskeDiv = document.createElement('div');

	        maskeDiv.id = 'zeytinAjaxBekletmeMaskeDiv';

	        sayfaBody.appendChild(maskeDiv);
	    };

	    pencereDivOlustur = function()
	    {
	        var pencereDiv = document.createElement('div');

	        pencereDiv.id = 'zeytinAjaxBekletmeDiv';

	        pencereDiv.style.width = genislik + 'px';
	        pencereDiv.style.height = yukseklik + 'px';

	        pencereDiv.innerHTML = ''
                + '<div id="zeytinAjaxBekletmeBaslikDiv">'
                +    'LÜTFEN BEKLEYİN'
                + '</div>';

	        sayfaBody.appendChild(pencereDiv);
	    };

	    sayfaGenisligiBul = function() {
	        return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
	    };

	    sayfaYuksekligiBul = function() {
	        return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
	    };

	    scrollSolKonumBul = function() {
	        return window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft;
	    };

	    scrollUstKonumBul = function() {
	        return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
	    };

	    divBoyutKonumAyarla = function()
	    {
	        var maskeDiv = document.getElementById('zeytinAjaxBekletmeMaskeDiv');
	        var popupDiv = document.getElementById('zeytinAjaxBekletmeDiv');

	        var sayfaGenisligi = sayfaGenisligiBul();
	        var sayfaYuksekligi = sayfaYuksekligiBul();
	        var scrollUstKonum = scrollUstKonumBul();

	        maskeDiv.style.top = scrollUstKonum;

	        maskeDiv.style.width = sayfaGenisligi;
	        maskeDiv.style.height = sayfaYuksekligi;

	        popupDiv.style.left = ((sayfaGenisligi - genislik) / 2) + 'px';
	        popupDiv.style.top = (scrollUstKonum + ((sayfaYuksekligi - yukseklik - 50) / 2)) + 'px';

	        // Sayfadan taşıyorsa sol ve üst konumlar 0 yapılıyor
	        if (popupDiv.style.left.substr(0,1) == '-') popupDiv.style.left = 0 + 'px';
	        if (popupDiv.style.top.substr(0,1) == '-') popupDiv.style.top = 0 + 'px';
	    };

	    pencereyiGoster = function()
	    {
	        var maskeDiv = document.getElementById('zeytinAjaxBekletmeMaskeDiv');
	        var pencereDiv = document.getElementById('zeytinAjaxBekletmeDiv');

	        maskeDiv.style.display = 'block';
	        pencereDiv.style.display = 'block';
	    };

	    pencereOlusturGoster();
	};

	var beklemeyiBitir = function() {
	    var sayfaBody = document.getElementsByTagName('body')[0];

	    sayfaBody.removeChild(document.getElementById('zeytinAjaxBekletmeMaskeDiv'));
        sayfaBody.removeChild(document.getElementById('zeytinAjaxBekletmeDiv'));

		window.onresize = eskiOnResize;
        window.onscroll = eskiOnScroll;
};

	// Ajax isteği gönderiliyor
	istekGonder();
};

// POST ile gönderilmeden önce % & ' işaretlerini düzenleyen fonksiyon
String.prototype.postIcinDuzenle = function() {
	return this.replace(/%/g, '%25').replace(/&/g, '%26');
};
