// uyeol.js

function regKontrol( pattern, value) {
   r = new RegExp( pattern);
   retval = r.test( value );
   return retval;
}
var denetimler=[
	{alan:'u_user', tip: 'text', oruntu: "^"+"[a-z0-9_\\.\\-\\@]{2,64}"+"$", uyari:"Lütfen Kullanıcı adınızı kontrol ediniz.\nKullanıcı adında türkçe karakter ve büyük harf kullanılamaz."},
	{alan:'u_sifre', tip: 'password', oruntu:"^"+"[a-zA-Z0-9.!\\+%*_]{4,16}"+"$", uyari:"Lütfen şifrenizi kontrol ediniz.\nŞifrede türkçe karakter ve '.!+%*_' dışında karakter kullanmayınız.\nŞifre min. 4 - max. 16 karakterden oluşabilir."},
	{alan:'u_sifre_tekrar', tip: 'password', oruntu: "=u_sifre", uyari:"Girdiğiniz şifreler birbirini tutmamaktadır."},
	{alan:'u_mail', tip: 'text', oruntu: "^"+"([a-zA-Z0-9]+[a-zA-Z0-9_\\.\\-]*)"+"@"+"([a-zA-Z0-9_\\-]+)"+"[\\.]"+"([a-zA-Z0-9_\\.\\-]+)"+"$", uyari:"Lütfen e-posta adresinizi kontrol ediniz."}
];

function formKontrol( form ) {
	var hatalar="";
	var ilkhata=-1;
	for( var i=0; i< denetimler.length; i++) {
		if( form[denetimler[i].alan] && form[denetimler[i].alan].type == denetimler[i].tip) { 
			var kapali=form[denetimler[i].alan].disabled;
			form[denetimler[i].alan].disabled=false;
			switch( denetimler[i].tip) {
			case 'text':
			case 'textarea':
			case 'password':
				if( denetimler[i].oruntu.charAt(0) == '=') {
					if( form[denetimler[i].alan].value != form[denetimler[i].oruntu.substr(1)].value) {
						if( hatalar =="")
							ilkhata=i;
						hatalar += denetimler[i].uyari+"\n";
					}
				}
				else if( denetimler[i].oruntu.charAt(0) == '|') {
					// BURADA INVALID IDENTIFIER + HATASI ALIYORUZ
					// TELNO REGEXPINDE SORUN OLMALI!
					if( form[denetimler[i].alan].value != "" && !regKontrol(denetimler[i].oruntu.substr(1),form[denetimler[i].alan].value)) {
						if( hatalar =="")
							ilkhata=i;
						hatalar += denetimler[i].uyari+"\n";
					}
				}
				else {
					if( !regKontrol( denetimler[i].oruntu, form[denetimler[i].alan].value)) {
						if( hatalar =="")
							ilkhata=i;
						hatalar += denetimler[i].uyari+"\n";
					}
				}
				break;
			case 'select-one':
				var secilen=form[denetimler[i].alan].selectedIndex;
				if( denetimler[i].oruntu.charAt(0) == '>') {
					if( secilen < 0+denetimler[i].oruntu.substr(1)) {
						if( hatalar =="")
							ilkhata=i;
						hatalar += denetimler[i].uyari+"\n";
					}
				}
				var kodu=form[denetimler[i].alan].options[secilen].value;
				var deger=form[denetimler[i].alan].options[secilen].text;
				/*
				if( kodu=='X_') { // diger girilmis demektir 
					if( deger=='diğer' || deger=='diger' || !regKontrol( '^'+'[a-zA-Z0-9 ğüşıöçĞÜŞİÖÇ]+'+'$', deger)) {
						if( hatalar =="")
							ilkhata=i;
						hatalar += "Diğer yer seçimine giriş yapmalısınız\n";
					}
				}
				*/
				break;
			}
			form[denetimler[i].alan].disabled=kapali;
		}
	}
	if ( form.m_evtel.value =="" && form.m_istel.value =="" && form.m_ceptel.value =="") {
		if( hatalar == "")
			ilkhata=14;	// evtel sirasi
		hatalar += "İletişim için lütfen bir telefon numarası giriniz.";
	}	

	if( ilkhata>=0) {
		alert( ""+ilkhata+":"+hatalar);
		return false;
	}
	for( var i=0; i<form.elements.length; i++)
		if( form.elements[i].type=='select-one' && form.elements[i].options[form.elements[i].selectedIndex].value=='X_')
				form.elements[i].options[form.elements[i].selectedIndex].value=form.elements[i].options[form.elements[i].selectedIndex].text;
	return true;
}

/*
 * yerler monuleri islevleri
 */
function monuKodu( monu) {
	if( monu.slice( -4) == 'ulke')
		return 'ulke';
	if( monu.slice( -6) == 'eyalet')
		return 'eyalet';
	if( monu.slice( -2) == 'il')
		return 'il';
	if( monu.slice( -4) == 'ilce')
		return 'ilce';
	return 'semt';
}
function monuTemizle( monu,goster) {
	var el=document.frmAbone.elements;
// var msg= monu+' > '+goster+' GELDIM';
	for( var i=0; i<el.length; i++) {
// msg += ' :'+i+'-'+el[i].name;
		if( el[i].name == monu) {
			el[i].options.length=1;
			// el[i].style.visibility = (monuKodu( el[i].name) == goster ? "visible" : "hidden");
			if( monuKodu( el[i].name) == goster) {
				el[i].disabled=false;
				el[i].options[0].text=goster+" seçiniz";
				/**
				if( goster=='il' && monuKodu(el[i-1].name) == 'eyalet' && el[i-1].length==1)
					el[i-1].options[0].text='Uygulanamaz';
				**/
				return el[i];
			}
			el[i].options[0].text="Diğer seçime bağlı...";
			el[i].disabled=true;
// msg += ' XXX'+' > '+el[i].style.visibility ;
		}
	}
// alert( msg);
	return null;
}
function monuBossaEkle( monu, deger, yazi) {
	var el=document.frmAbone.elements;
	for( var i=0; i<el.length; i++) {
		if( el[i].name == monu) {
			if( el[i].options.length==1) {
				el[i].disabled=false;
				// alert('eklendi'+yazi);
				el[i].options[el[i].options.length]=new Option( yazi,deger,false,true);
				el[i].selectedIndex=el[i].length-1;
				el[i].disabled=true;
			}
			return el[i];
		}
	}
// alert( msg);
	return null;
}
function monuSecimi( monu) {
	var el=document.frmAbone.elements;
	for( var i=0; i<el.length; i++) {
		if( el[i].name == monu) {
			return el[i].selectedIndex;
		}
	}
	return 0;
}
function monuBak( monu, grup, s, sec) {
// alert( 'GRUP:'+monu+'  SECILEN:'+sec);
	if( s==null && monu.slice( -4) == 'ulke') {
		var f=document.frmAbone;
		var sel=f.elements[f.elements.length - 1];
		var secili=0;
		for( var i=0; i<YER_MONUSU.secenekler.length; i++) {
			sel.options[sel.options.length]=new Option( YER_MONUSU.secenekler[i].baslik,YER_MONUSU.secenekler[i].kod, sec==YER_MONUSU.secenekler[i].kod || sec==YER_MONUSU.secenekler[i].baslik);
			if (sec==YER_MONUSU.secenekler[i].kod || sec==YER_MONUSU.secenekler[i].baslik) {
				if( sec != '')
					secili++;
				sel.selectedIndex=sel.options.length-1;
			}
		}
		if( secili==0 && sec != '') {
// alert( 'diger geldi:'+sec);
			if( sel.options[sel.options.length-1].value=='X_') {
				sel.options[sel.options.length-1].text=sec;
				sel.selectedIndex=sel.options.length-1;
			}
		}
		return;
	}
	var ga=grup.split(':');
	var nerde=YER_MONUSU;
	var i=0;
	for( ; i<ga.length; i++) {
		if( monu == ga[i])
			break;
		// burada sozkonusu menude secilen yere uyumlu nerde degiskeni atamasi yapilmali
		secim=monuSecimi( ga[i]);
// alert( "önceden seçilen "+ga[i]+" : "+secim+'   bakilan alan:'+nerde.alan);
		if( secim > 0) { // bir yer secilmis demektir
			if( monuKodu( ga[i]) == nerde.alan)
				nerde=nerde.secenekler[secim-1].monu; // en basta yer seciniz optionu var o nedenle 1 eksigi
		}
	}
	var kodu=monuKodu( monu);
	var basla=i;
	var bitir=i+1;
	if( s) { // yeni yer secildi
		var secim=s.selectedIndex;
		if( s.options[secim].value=='X_') {
			var diger=window.prompt(s.options[0].text,s.options[secim].text);
			if( diger && diger != '')
				s.options[secim].text=diger;
		}
		if( secim>0 && nerde.alan == kodu)
			nerde=nerde.secenekler[secim-1].monu;
		basla=i+1;
		bitir=ga.length;
	}

	for( var j=basla; j<bitir; j++) {
		var sel=monuTemizle( ga[j], nerde?nerde.alan:'');
		if( sel) { // monu ici doldurulacak
			var secili=0;
			for( var i=0; i<nerde.secenekler.length; i++) {
				sel.options[sel.options.length]=new Option( nerde.secenekler[i].baslik,nerde.secenekler[i].kod,sec==nerde.secenekler[i].kod || sec==nerde.secenekler[i].baslik);
				if( sec==nerde.secenekler[i].kod || sec==nerde.secenekler[i].baslik) {
					if( sec!='')
						secili++;
					sel.selectedIndex=sel.options.length-1;
				}
			}
			// bir onceki monu bos ise uygulanamaz secenegini ekleyip aktif yapmaliyiz
			if( secili==0 && sec != '') {
// alert( 'diger2 geldi:'+sec);
				if( sel.options[sel.options.length-1].value=='X_') {
					sel.options[sel.options.length-1].text=sec;
					sel.selectedIndex=sel.options.length-1;
				}
			}
			monuBossaEkle( ga[j-1], '', 'Uygulanamaz');
		}
	}
}
