/*==========================================================================

		  Ajax Kütüphanesi - Mustafa Soner Acar

yukle	"hedef" katmanının içine "icerik.htm" dosyasından okunan HTML 
	içeriği yüklemek için kullanılır.
	obj_ajax_cagrisi return eder.
	ajax.yukle("icerik.htm", "hedef");


metin	"metin_kutusu" alanına dosyadan okunan text içeriği yüklemek 
	için kullanılır.
	obj_ajax_cagrisi return eder.
	ajax.metin("icerik.htm", "metin_kutusu");


durdur	belirtilen talebi durdurur-iptal eder.
	ajax.durdur(obj_ajax_cagrisi);


getir	okunan içeriği javascript'te string olarak kullanmak üzere getirir.
	var okunan = ajax.getir("icerik.htm");
	alert(okunan);


yolla	sunucuya veri göndermek için kullanılır. sunucuda $_POST[ajax_post_veri] 
	değişkeni olarak çağırılabilir. dosyadan gelen sonuc döner.
	ajax.yolla("metin_kaydet.php", "metin formatında veri");


script	okunan içeriği JavaScript kodu olarak kabul ederek çalıştırır.
	ajax.script("scriptler.js");


gizle	ID'si verilen nesneyi gizler (display=none).


goster	ID'si verilen gizlenmiş nesneyi görünür yapar.


temizle	ID'si verilen nesnenin innerHTML'sini boşaltır.


kaydir	Sayfayı, ID'si verilen nesne ekrana gelene kadar kaydırır.



==========================================================================*/


var ajax_animasyon_goster = false

var ajax={

yukleme_mesaji: 
'<div id="ajax_yukleniyor" style="position: absolute; top: 0; left: 0; display: none;"><img src="images/load.gif"></div>',


init:function() {
	document.writeln(ajax.yukleme_mesaji)
},

anim_goster:function() {
	if (!ajax_animasyon_goster) return
	nesne = document.getElementById('ajax_yukleniyor')
	nesne.style.top = (document.body.clientHeight / 2) + document.body.scrollTop - 100
	nesne.style.left = (document.body.clientWidth / 2) + document.body.scrollLeft
	nesne.style.display = ''
},

anim_gizle:function() {
	document.getElementById('ajax_yukleniyor').style.display = 'none'
},


// ==================================================

ajax_run:function(islem, sayfa_adresi, hedef_nesne_id, veri, callback, kaydirma) {

	// AJAX nesnesini oluştur
	var ajax_nesne = false
	if (window.XMLHttpRequest) // Mozilla, IE7, Safari vs.
		ajax_nesne = new XMLHttpRequest()
	else if (window.ActiveXObject) { // IE6 veya düşük modeller
		try {ajax_nesne = new ActiveXObject("Msxml2.XMLHTTP")} 
		catch (e) {try {ajax_nesne = new ActiveXObject("Microsoft.XMLHTTP")} catch (e){}}
	}
	else return false

	// asenkron = true olduğunda javascript bu işlemin tamamlanmasını 
	// beklemeden yoluna devam eder, false olunca cevabı bekler.
	var asenkron = false

	// POST edilen veri varsa bu değişkene aktarılacak
	var post_veri = ''

	// burada adreste düzeltmeler yapılıyor ve verinin önbellekten (cache) 
	// okunmasını engellemek için rastgele bir parametre ilave ediliyor
//	var ajax_uyumlu_adres = sayfa_adresi.replace(/^http:\/\/[^\/]+\//i, "http://"+window.location.hostname+"/") 
	var ajax_uyumlu_adres = sayfa_adresi

	var onbellek_onleyici = ((ajax_uyumlu_adres.indexOf("?")!=-1)? "&" : "?")+new Date().getTime()

	if (islem == 'yukle') {
		ajax.anim_goster()
		ajax_nesne.onreadystatechange = function() {
			if (ajax_nesne.readyState == 4 && (ajax_nesne.status == 200 || window.location.href.indexOf("http") == -1)) {
				document.getElementById(hedef_nesne_id).innerHTML = ajax_nesne.responseText
				ajax.anim_gizle()
				if (callback) eval(callback)
				if (kaydirma !== false) setTimeout("ajax.kaydir('"+hedef_nesne_id+"')", 500)
			}
		}
		asenkron = true
	}


	ajax_nesne.open('POST', ajax_uyumlu_adres+onbellek_onleyici, asenkron)

	if (islem == 'yolla') {
		ajax_nesne.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
		post_veri = 'ajax_post_veri='+veri
	}

	ajax_nesne.send(post_veri)

	if (islem == 'getir' || islem == 'yolla') return ajax_nesne.responseText
	if (islem == 'script') eval(ajax_nesne.responseText)

	return ajax_nesne
},


// ===========  Kullanıcı Fonksiyonları

yukle:function(sayfa_adresi, hedef_nesne_id, callback, kaydirma){
	return this.ajax_run('yukle', sayfa_adresi, hedef_nesne_id, null, callback, kaydirma)
},

metin:function(sayfa_adresi, hedef_nesne_id){
	return document.getElementById(hedef_nesne_id).innerText = this.ajax_run('getir', sayfa_adresi, hedef_nesne_id)
},

durdur:function(ajax_nesne){
	if (ajax_nesne) ajax_nesne.abort()
},

getir:function(sayfa_adresi){
	return this.ajax_run('getir', sayfa_adresi)
},

yolla:function(sayfa_adresi, veri){
	return this.ajax_run('yolla', sayfa_adresi, '', veri)
},

script:function(sayfa_adresi){
	this.ajax_run('script', sayfa_adresi)
},

gizle:function(hedef_nesne_id){
	document.getElementById(hedef_nesne_id).style.display = 'none'
},

goster:function(hedef_nesne_id){
	document.getElementById(hedef_nesne_id).style.display = ''
},

temizle:function(hedef_nesne_id){
	document.getElementById(hedef_nesne_id).innerHTML = ''
},

kaydir:function(hedef_nesne_id){
	step = 2
	belge = document.body
	nesne = document.getElementById(hedef_nesne_id)

	if (belge.scrollHeight < belge.clientHeight) return	// zaten herşey tek sayfaya sığıyorsa kaydırmaya gerek yok, çık.

	fark = Math.min(belge.scrollHeight-belge.clientHeight, nesne.offsetTop) - belge.scrollTop	// kaç piksel kaydıracağız?
	if (fark < 20) return	// işin yok mu iki üç piksel için ajax nesnesini meşgul ediyorsun!
	yon = (fark > 0) ? 1 : -1	// aşağı mı yukarı mı?

	for (a=0; a< Math.abs(fark); a+=step) window.scrollBy(0, step * yon)
}


} // nesne bitti.





function unesc_textbox(nesne_id) {
	document.getElementById(nesne_id).value = unescape(document.getElementById(nesne_id).value);
}

function unesc_innerHTML(nesne_id) {
	document.getElementById(nesne_id).innerHTML = unescape(document.getElementById(nesne_id).innerHTML);
}



ajax.init();


