/*
@abstract : AJAX Başlatma
@author   : Orhan POLAT
@copyright: Masters 2007
*/
function createRequestObject () {
	var result;
	var browser = navigator.appName;

	if(browser == "Microsoft Internet Explorer"){
		try {
			result = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			result = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}else{
		result = new XMLHttpRequest();
	}
	return result;
}

/*
@abstract : AJAX İşletme
@author   : Orhan POLAT
@copyright: Masters 2007
*/
function ajax (method, url, params, handleFunction, ext, debug){
	var http = new createRequestObject();
	http.open(method, url);
	if (method == 'post'){
		http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
		http.setRequestHeader('Content-length', params.length);
		http.setRequestHeader('Cache-control', 'no-cache');
		http.setRequestHeader('Connection', 'close');
	}
	http.onreadystatechange = function (){
		if (http.readyState == 4){
			if (ext){
				//Form
				if (ext.form)
				formusage(ext.form, 'enable');

				if (ext.type == 'DIALOG'){
					//Dialoglarda
					if (document.getElementById('loadingpoint'))
					document.getElementById(ext.target).removeChild(document.getElementById('loadingpoint'));
				}else if (ext.type == 'MESSAGE'){
					//Herhangi birinde
					warningModalDialog('hide');
				}
			}

			if (http.status == 200){
				if (debug) alert(http.responseText);

				var response = http.responseXML;

				if (response){
					if (handleFunction){
						if (typeof(handleFunction) == 'function'){
							//Sonucu gönderdik
							handleFunction(response);
						}else{
							if (ext){
								if (ext.type == 'LIST'){
									document.getElementById(ext.target).innerHTML = '<div style="color:#FF0000; text-align:center; line-height:40px;">Fonksiyon bulunmadı!</div>';
								}else if (ext.type == 'DIALOG' && ext.target){
									layer('hide', ext.target);
								}
							}
							messageDialog('Fonksiyon bulunmadı!', {type:'OK', icon:'warning.gif'});
						}
					}
				}else{
					if (ext){
						if (ext.type == 'LIST'){
							document.getElementById(ext.target).innerHTML = '<div style="color:#FF0000; text-align:center; line-height:40px;">Bir hata oluştu!</div>';
						}else if (ext.type == 'DIALOG' && ext.target){
							layer('hide', ext.target);
						}
					}
					messageDialog('Bir hata oluştu!', {type:'OK', icon:'warning.gif'});
				}
			}else{
				if (ext){
					if (ext.type == 'LIST'){
						document.getElementById(ext.target).innerHTML = '<div style="color:#FF0000; text-align:center; line-height:40px;">Sunucu bağlantısı kurulamadı!</div>';
					}else if (ext.type == 'DIALOG' && ext.target){
						layer('hide', ext.target);
					}
				}
				messageDialog('Sunucu bağlantısı kurulamadı!<br>Birazdan tekrar deneyin...', {type:'OK', icon:'warning.gif'});
			}
		}else{
			if (ext){
				//Form
				if (ext.form)
				formusage(ext.form, 'disable');

				//Mesajlar
				if (ext.type){
					switch (ext.type){
						case 'DIALOG':
						//Dialoglarda
						if (!document.getElementById('loadingpoint')){
							var el = document.createElement('div');
							el.id = 'loadingpoint';
							el.className = 'loadingpoint';
							el.innerHTML = ext.message;
							document.getElementById(ext.target).appendChild(el);
						}else{
							document.getElementById('loadingpoint').innerHTML = ext.message;
						}

						break;
						case 'LIST':
						//Listelerde
						document.getElementById(ext.target).innerHTML = '<div style="color:#FF0000; text-align:center; line-height:40px;">'+ ext.message +'</div>';

						break;
						case 'MESSAGE':
						//Herhangi birinde
						warningModalDialog('show', 'loading', ext.message);
						break;
					}
				}
			}
		}
	}
	http.send(params);
}

/*
@abstract : AJAX için select içine optionlar yerleştirme
@author   : Orhan POLAT
@copyright: Masters 2007
*/
function listOptions (targetOpt, optlabel, optvalue) {
	var new_option = document.createElement('option');

	new_option.text = optlabel;
	new_option.value = optvalue;

	try {
		targetOpt.add(new_option, null); //Standart
	}
	catch(ex) {
		targetOpt.add(new_option); //Gerizekalı IE için
	}
}

/*
@abstract : AJAX için selectleri sıfırlama
@author   : Orhan POLAT
@copyright: Masters 2007
*/
function clearList (targetOption) {
	while (targetOption.length > 0) {
		targetOption.remove(0);
	}
}

/*
@abstract : AJAX için formları disable eder
@author   : Orhan POLAT
@copyright: Masters 2007
*/
function formusage (dialog, status){
	if (document.forms[dialog]){
		for (var i=0; i < document.forms[dialog].elements.length; i++){
			if (document.forms[dialog].elements[i].id.lastIndexOf('cancelbtn') != 0){
				if (status == 'disable'){
					document.forms[dialog].elements[i].disabled = true;
				}else{
					document.forms[dialog].elements[i].disabled = false;
				}
			}
		}
	}
}

/*
@abstract : AJAX için formlardaki değerler
@author   : Orhan POLAT
@copyright: Masters 2007
*/
function getParams (formName){
	var params = '';

	if (document.forms[formName]){

		for (var i=0; i < document.forms[formName].elements.length; i++){
			switch (document.forms[formName].elements[i].type){
				case "select-one":
				params += '&'+ document.forms[formName].elements[i].name +'=';
				if (document.forms[formName].elements[i].options.length > 0){
					params += document.forms[formName].elements[i].options[document.forms[formName].elements[i].selectedIndex].value;
				}else{
					params += '0';
				}
				break;
				case "hidden":
				case "password":
				case "text":
				case "textarea":
				params += '&'+ document.forms[formName].elements[i].name +'=';
				params += encodeURIComponent(document.forms[formName].elements[i].value);
				break;
				case "radio":
				case "checkbox":
				if (document.forms[formName].elements[i].checked){
					params += '&'+ document.forms[formName].elements[i].name +'=';
					params += encodeURIComponent(document.forms[formName].elements[i].value);
				}
				break;
				default:
				break;
			}
		}
	}

	return params;
}

//Birden çok onload yazabilmek için
function wolOn(){
	window.onload = wolGo;
}

function wolGo(){
	for(var i = 0;i < wols.length;i++)
	eval(wols[i]);
}

function wolAdd(func){
	wols[wols.length] = func;
}

var wols = new Array();

//Çalıştırıyoruz
wolOn();

//Birden çok resize yazabilmek için
function worOn(){
	window.onresize = worGo;
}

function worGo(){
	for(var i = 0;i < wors.length;i++)
	eval(wors[i]);
}

function worAdd(func){
	wors[wors.length] = func;
}

var wors = new Array();

//Çalıştırıyoruz
worOn();

//Modal dialog için...
worAdd('centerModalDialog()');
