// Sayfa
// ---------------------------------------------
function Sayfa(){

	var sayfa = {
		basla  : function(){
			sayfa.tepe  = sayfa.icerik('tepe');
			sayfa.kolon = sayfa.icerik('kolon');
			sayfa.govde = sayfa.icerik('govde');
			sayfa.ayak  = sayfa.icerik('ayak');
			sayfa.durum.yenile(true);
		},
		durum  : {
			katman : _nesne('durum',true),
			yenile : function(durum){
				if(durum == false){
					this.katman.innerHTML = 'Yükleniyor ...';
					this._durum = false;
				}
				else{
					this.katman.innerHTML = '';
					this._durum = true;
				}
			},
			kontrol : function(){
				return this._durum;
			}
		},
		icerik : function(no){
			var icerik = {
				katman : _nesne(no,true),
				yenile : function(html){
					icerik.katman.innerHTML = html;
				}
			}
			return icerik;
		}
	};
	sayfa.basla();
	return sayfa;
}

// Form
// ---------------------------------------------
function Form(isim){

	var mform = {
		_alan   : Object,
		_takvim : [],
		
		basla  : function(isim){
			mform.form = document.forms[isim];
		},
		hedef  : function(hedef){
			mform.form.target = hedef;
		},
		gonder : function(hedef){
			mform.form.action = hedef;
			mform.form.submit();
		},
		alan   : function(isim,zorla){
			//if(!mform._alan[isim] || zorla == true) mform._alan[isim] = Alan(mform,isim);
			mform._alan[isim] = Alan(mform,isim);
			return mform._alan[isim];
		},
		takvim : function(isim,baslik,zaman){
			var takvim = {
				ac     : true,
				div    : _nesne(isim,true),
				tercih : 1,
				baslik : true,
				cikart : function(isim,baslik,zaman){
					if(!baslik) baslik = '';
					var icerik = '';
					var zaman = zaman ? zaman : parseInt(takvim.div.innerHTML);
					
					icerik += '<span id="t_'+isim+'"></span>';
					icerik += '<input type="text" name="'+isim+'" style="width:56px" title="'+baslik+'"/>';
					icerik += '<img id="r_'+isim+'" src="sablon/resim/takvim.gif" style="vertical-align:top; cursor:pointer; '+(IE ? 'margin-top:1px;' : '' )+'"/>';
					
					takvim.div.className = 'tarih_cerceve';
					takvim.div.innerHTML = icerik;
					takvim.alan = mform.alan(isim);
					takvim.alan.input.readOnly = true;
					takvim.resim = _nesne('r_'+isim,true);
					takvim.resim.onclick = function(){ if(takvim.ac) takvim.nesne.ac(); else takvim.nesne.kapat(); }
					takvim.nesne = _nesne('t_'+isim,true);
					takvim.nesne.className = 'takvim';
					takvim.nesne.diger  = function(){ for(i in mform._takvim) { if(i != isim) { _katla('t_'+i,'none'); mform._takvim[i].ac = true; } } }
					takvim.nesne.ac     = function(){ this.diger(); _katla(this.id,'block'); takvim.kaldir(this.id,false); takvim.ac = false; }
					takvim.nesne.kapat  = function(){ this.diger(); _katla(this.id,'none'); takvim.kaldir(this.id,true); takvim.ac = true; }
					takvim.nesne.yenile = function(zaman,kapat){ takvim.yenile(zaman); if(kapat !== false) this.kapat(); }
					takvim.nesne.deger  = function(deger,kapat){ var deger = takvim.alan.deger(deger); if(kapat !== false) this.kapat(); return deger; }
					mform._takvim[isim] = this;
					takvim.yenile(zaman,baslik);					
				},
				deger  : function(deger){
					return takvim.alan.deger(deger);
				},
				yenile : function(zaman,baslik){
					var xhr;
					xhr = new XHR('index.php');
					xhr.talep('modul=servis&metot=takvim&no='+takvim.nesne.id+'&zaman='+zaman);
					xhr.islem = function(){
						takvim.nesne.innerHTML = cevap = xhr.cevap();						
						if(baslik) takvim.alan.deger(baslik);
						else xhr.deger(cevap);
					}
				},
				kaldir : function(no,gizlen){
					var nesne = _nesne(no,true);
					var a, t, arr, tag, elm, p, p1, p2;
					arr = ['applet','iframe','select'];
					if(takvim.tercih === 1){
						p   = _konum(nesne);
						p1  = {
							'x':[p.x,nesne.offsetWidth + p.x],
							'y':[p.y,nesne.offsetHeight + p.y]
						}
					}
					for(a=arr.length; a>0;){
						tag = document.getElementsByTagName(arr[--a]);
	
						for(t=tag.length; t>0;){
							elm = tag[--t];
	
							if(!gizlen && takvim.tercih === 0){
								if(!elm._sakla) elm._sakla = _stil(elm,'visibility');
								elm.style.visibility = 'hidden';
							} else {
								p   = _konum(elm);
								p2  = {
									'x':[p.x,elm.offsetWidth + p.x],
									'y':[p.y,elm.offsetHeight + p.y]
								}
	
								if(gizlen || (p2.x[0] > p1.x[1]) || (p2.x[1] < p1.x[0]) || (p2.y[0] > p1.y[1]) || (p2.y[1] < p1.y[0])) {
									if(!elm._sakla) elm._sakla = _stil(elm,'visibility');
									elm.style.visibility = elm._sakla;
								} else {
									if(!elm._sakla) elm._sakla = _stil(elm,'visibility');
									elm.style.visibility = 'hidden';
								}
							}
						}
					}
				}
			}
	
			takvim.cikart(isim,baslik,zaman);
			return takvim;
		}		
	}

	// Cikart
	mform.basla(isim);
	return mform;
}

// Alan
// ---------------------------------------------
function Alan(mform,isim){

	var alan = {
		mform  : mform,
		basla  : function(isim){
			alan.input = alan.mform.form.elements[isim];
		},
		deger : function(deger){
			if(deger){
				alan.input.value = deger;
				alan.degisti();
			}
			else return alan.input.value;
		},
		degisti : function(){
			return true;
		},
		odaklan : function(){
			alan.input.focus();
		},
		etiket  : function(){
			if(!alan.input) return;
			var i, elm;
			var num = new Array;
			var arr = new Array;
			var tag = alan.mform.form.getElementsByTagName('label');

			for(i=0; i<alan.input.length; i++){
				num[i] = alan.input[i].id;
			}

			for(i=0; i<tag.length; i++){
				elm = tag[i];
				elm.deger = IE ? elm.getAttribute('htmlFor') : elm.getAttribute('for');
				if(_icinde(elm.deger, num)){
					elm.alan = alan.input;
					arr[i] = elm;
				}
			}

			for(i=0; i<arr.length; i++){
				if(!arr[i]) continue;
				elm = arr[i];
				elm.className   = _nesne(elm.deger,true).checked ? 'eaktif' : 'enormal';
				elm.onmouseover = function(){ this.className = 'eaktif'; }
				elm.onmouseout  = function(){ try{ if(!_nesne(this.deger,true).checked) this.className = 'enormal'; } catch(e){ alert(1); } }

				if(alan.input[0].type == 'radio'){
					elm.arr = arr;
					elm.onclick = function(){
						for(var i=0; i<this.arr.length; i++){
							if(!arr[i]) continue;
							this.arr[i].className = 'enormal';
						}
						this.className = 'eaktif';
					}
				}
			}
		}	
	}
	
	// Cikart
	alan.basla(isim);
	return alan;
}