var hashFormItems = {};

function init_form_controls(){
	if(document.forms && document.forms.length>0){
		for(var i=0; i<document.forms.length; i++){
			var strFormName = document.forms[i].name;
			if(hashFormItems[strFormName]){
				for(var strFormItems in hashFormItems[strFormName]){
					if(document.forms[strFormName][strFormItems]){
						
						if(document.forms[strFormName][strFormItems].length && document.forms[strFormName][strFormItems][0].name){
							for(var strFormProperty in hashFormItems[strFormName][strFormItems]){
								document.forms[strFormName][strFormItems][0].setAttribute(strFormProperty,hashFormItems[strFormName][strFormItems][strFormProperty]);									
							}
						}
						else{
							for(var strFormProperty in hashFormItems[strFormName][strFormItems]){
								document.forms[strFormName][strFormItems].setAttribute(strFormProperty,hashFormItems[strFormName][strFormItems][strFormProperty]);
							}
						}

					}					
				}
			}
		}
	}
}

function check_form(domForm){
	if(domForm){
		for(var i=0;i<domForm.elements.length;i++){
			var form_item = domForm.elements[i];
			var form_attributes = form_item.attributes;
			var form_value = form_item.value;
			var form_length = form_value.length;
			var form_disabled = form_item.disabled;
			var item_not_required = false;
			if(form_attributes.getNamedItem("notreq")){
				item_not_required = true;
			}
			
			if(form_attributes.getNamedItem("atleast")){
				var checked_count = 0;
				for(var iii=0; iii<domForm[form_item.name].length; iii++){
					if(domForm[form_item.name][iii].checked){
						checked_count++;
					}
				}
				if(checked_count == 0){
					alert(form_attributes.getNamedItem("atleast").value);
					return false;
				}
			}
			if(form_attributes.getNamedItem("cantbe") && !form_disabled ){
				if(form_attributes.getNamedItem("cantbe").value == form_value){
					if(form_attributes.getNamedItem("cantbe_msg")){
						alert(form_attributes.getNamedItem("cantbe_msg").value);
					}
					return false;
				}
			}
			if(form_attributes.getNamedItem("crosscheck") && !form_disabled ){
				var crossObject = oForm[form_attributes.getNamedItem("crosscheck").value];
				if(crossObject.value != form_value){
					if(form_attributes.getNamedItem("crosscheck_msg")){
						alert(form_attributes.getNamedItem("crosscheck_msg").value);
					}
					form_item.value = "";
					crossObject.value = "";
					form_item.focus();
					return false;
				}
			}
			if(form_attributes.getNamedItem("regex") && !form_disabled){
				var check_me = true;
				if(item_not_required && form_length == 0){ check_me = false; }
				if(check_me){
					var oPattern = form_attributes.getNamedItem("regex").value;
					var oReg = new RegExp(oPattern,"gim");
					var oRegResult = oReg.test(form_value);
					if(!oRegResult){
						if(form_attributes.getNamedItem("regex_error")){alert(form_attributes.getNamedItem("regex_error").value);}
						form_item.value = "";
						form_item.focus();
						return false;
					}
				}
			}
			if(form_attributes.getNamedItem("notempty") && !form_disabled){
				if(form_length == 0){
					alert(form_attributes.getNamedItem("notempty").value);
					form_item.focus();
					return false;
				}	
			}
			if(form_attributes.getNamedItem("minlength") && !form_disabled){
				if(form_length<form_attributes.getNamedItem("minlength").value){
					if(form_attributes.getNamedItem("minlength_error")){
						alert(form_attributes.getNamedItem("minlength_error").value + " : " + form_attributes.getNamedItem("minlength").value);
					}
					form_item.focus();
					return false;
				}
			}
			if(form_attributes.getNamedItem("maxchar") && !form_disabled){
				if(form_length>form_attributes.getNamedItem("maxchar").value){
					if(form_attributes.getNamedItem("maxchar_error")){
						alert(form_attributes.getNamedItem("maxchar_error").value + " : " + form_attributes.getNamedItem("maxchar").value);
					}
					form_item.value = "";
					for(var q=0;q<form_attributes.getNamedItem("maxchar").value;q++){ form_item.value+= form_value.charAt(q); }
					form_item.focus();
					return false;
				}
			}
			if(form_attributes.getNamedItem("number") && !form_disabled){
				var check_me = true;
				if(item_not_required && form_length == 0){ check_me = false; }
				if(check_me){
					if(isNaN(form_value)){
						alert(form_attributes.getNamedItem("number").value);
						form_item.value = "";
						form_item.focus();
						return false;
					}
				}
			}
		}
		return true;
	}
	else{
		return false;
	}
}

function nav(strURL){
	if(strURL.length>0){
		window.location.href = strURL;
	}
}

function $(object_id){
	return document.getElementById(object_id);
}

function eu(string){
	return encodeURIComponent(string);
}

function deu(string){
	return decodeURIComponent(string);
}

function reg_test( reg_test_pattern , reg_test_string ){
	var reg_test_object = new RegExp( reg_test_pattern , "gim" );
	return reg_test_object.test( reg_test_string );
}

function AJAX(url,query_string,call_back_function,call_back_function_params){
	var self = this;
	this.xmlHttp = false;
	this.url = url;
	this.qs = query_string;
	this.callback = call_back_function;
	this.callbackparams = call_back_function_params;

	if(window.XMLHttpRequest){
		this.xmlHttp = new XMLHttpRequest();
		if(this.xmlHttp.overrideMimeType){
			this.xmlHttp.overrideMimeType('text/xml');
		}
	}
	else if(window.ActiveXObject){
		try {
			this.xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e){
			try {
				this.xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e){
			}
		}
	}
	
	if(!this.xmlHttp){
		alert("Tarayıcınız AJAX desteklemiyor!");
		return false;
	}
	
	$('canvas').className = "opacityon";

	this.xmlHttp.open("POST",this.url,true);
	this.xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	this.xmlHttp.setRequestHeader("Content-length", this.qs.length);
	this.xmlHttp.setRequestHeader("Connection", "Close");
	this.xmlHttp.send(this.qs);
	this.fetch();
}

AJAX.prototype.fetch = function (){
	var self = this;
	this.xmlHttp.onreadystatechange = function(){
		if(self.xmlHttp.readyState == 4) {
				if(self.xmlHttp.status == 200) {
					$('canvas').className = "opacityoff";
					var xmlDOMsend = self.xmlHttp;
					var trigger;
					try{ xmlDOMsend.normalize(); }
					catch(e){}

					var xml_dom = xmlDOMsend.responseXML;
					var xml_root = xml_dom.getElementsByTagName('root').item(0);
					var xml_error = xml_root.getElementsByTagName('errors').item(0);
					var xml_error_connection = xml_error.getElementsByTagName('connection').item(0).firstChild.data;
					var xml_error_message = xml_error.getElementsByTagName('message').item(0).firstChild.data;
					if(xml_error_connection == "true"){
						var xml_error_post = xml_error.getElementsByTagName('post').item(0).firstChild.data;
						if(xml_error_post == "true"){
							var xml_error_query = xml_error.getElementsByTagName('query').item(0).firstChild.data;
							if(xml_error_query == "true"){
								if(self.callbackparams != null){
									var extra_params = "(xmlDOMsend";
									for(var i in self.callbackparams){
										extra_params+= ",'" + self.callbackparams[i] + "'";
									}
									extra_params+= ");";
									trigger = eval(self.callback + extra_params);
								}
								else{
									trigger = eval(self.callback + "(xmlDOMsend);");
								}
							}
							else{
								alert(xml_error_message);
								return false;
							}
						}
						else{
							alert(xml_error_message);
							return false;
						}
					}
					else{
						alert(xml_error_message);
						return false;
					}


				}
				else{
					alert("ajax error");
					return false;
				}
		}
	}
}

function clear_combo_box(select_object){
	var combo_size = select_object.options.length;
	for(var i=0; i<combo_size; i++){
		select_object.removeChild(select_object.options[0]);
	}
}

function refill_combo_box(xmlblock,select_object,match_value){
	var dom0_option = document.createElement("option");
	select_object.appendChild(dom0_option);
	dom0_option.value = 0;
	dom0_option.text = "???";

	for(var kk=0; kk<xmlblock.item(0).childNodes.length; kk++){
		var combo_option_value = xmlblock.item(0).childNodes[kk].attributes.getNamedItem('id').value;
		var compo_option_text = xmlblock.item(0).childNodes[kk].firstChild.data;
		var dom_option = document.createElement("option");
		select_object.appendChild(dom_option);
		dom_option.value = combo_option_value;
		dom_option.text = compo_option_text;
		if(match_value){
			if(match_value == combo_option_value){
				dom_option.selected = true;
			}
		}
	}
	try{select_object.onchange();}
	catch(e){
	}
}

function set_digits(number_val,digits){
	var to_str = new String(number_val);
	if(!arguments[1]){ digits = 2; }
	if(to_str.length == digits){ return number_val; }
	var str_addition = "";
	for(var iqq = to_str.length; iqq<digits; iqq++){ str_addition+= "0"; }
	return str_addition + number_val;
	
}

var feb_days = 28;
var month_day_array = {
	"1" : 31 , "2" :  feb_days , "3" : 31 , "4" : 30 , "5" : 31 , "6" : 30
	,"7" : 31 , "8" : 31 , "9" : 30 , "10" : 31 , "11" : 30 , "12" : 31
}

function fix_month_days(form_element_name){
	var form_element_day = $(form_element_name+"_day");
	var form_elemnet_day_pr_value = form_element_day.value;
	var form_element_month = $(form_element_name+"_month");
	var form_element_year = $(form_element_name+"_year");
	feb_days = 28;
	if(form_element_year.value % 4 == 0){ feb_days = 29; }
	month_day_array['2'] = feb_days;
	clear_combo_box(form_element_day);
	
	var days_new_limit = month_day_array[new Number(form_element_month.value)];

	for(var i=1; i<(days_new_limit+1); i++){
		var new_option = document.createElement("option");
		form_element_day.appendChild(new_option);
		var f_val = set_digits(i);
		new_option.value = f_val;
		new_option.text = f_val;
		if(form_elemnet_day_pr_value == f_val){ new_option.selected = true; }
	}
}


function vf_REPLACE( strNeedle , strNewValue , strString ){
	var vfroPattern = new RegExp( strNeedle , "gim" );
	return strString.replace( vfroPattern , strNewValue );
}

// ---------------------------------------------------------------------------------------------------------------------------------------------------
function DynamicFormCanvas(current_dom){
	var self = this;
	this.current_dom = current_dom;
	this.parent_dom = current_dom.parentNode;
	this.paragraph = document.createElement("P");
	this.parent_dom.appendChild(this.paragraph);
	
	this.paragraph.className = "dynfc";
	this.paragraph.title = "Listeden çıkarmak için çift tıklayın! (double click)";
	this.paragraph.ondblclick = function(){
		if(confirm("Eminmisiniz?")){
			self.parent_dom.removeChild(self.paragraph);
		}
	}
	this.paragraph.kill = function(){
		self.parent_dom.removeChild(self.paragraph);
	}
}
DynamicFormCanvas.prototype.add_element = "";
DynamicFormCanvas.prototype.print = function(){
	var return_text = "";
	switch(this.add_element.form_type){
		// -------------------------------------------------------------------------------------
		case "input_text" :
			return_text+= this.add_element.add_something_before + "<input type=\"text\" name=\"" + this.add_element.form_name + "\" "
			+ "size=\"" + this.add_element.form_size + "\" "
			+ "value=\"" + this.add_element.form_value + "\" "
			+ this.add_element.form_constraints;
			if(this.add_element.cssName.length>0){
				return_text+= " class=\"" + this.add_element.cssName + "\"";
			}
			return_text+= "/>" + this.add_element.add_something_after;
			this.paragraph.innerHTML+= return_text;
		break;
		// -------------------------------------------------------------------------------------

		// -------------------------------------------------------------------------------------
		case "simple_text" :
			return_text+= this.add_element.add_something_before + "<input type=\"hidden\" name=\""
			+ this.add_element.form_name + "\" value=\""
			+ this.add_element.form_value + "\">"
			+ this.add_element.form_text
			+ this.add_element.add_something_after;
			this.paragraph.innerHTML+= return_text;
		break;
		// -------------------------------------------------------------------------------------

	}

}
function DynamicFormCanvasInputText(){
	this.form_type = "input_text";
}

function DynamicFormCanvasSimpleText(){
	this.form_type = "simple_text";
}

DynamicFormCanvasInputText.prototype.form_name = "";
DynamicFormCanvasInputText.prototype.form_value = "";
DynamicFormCanvasInputText.prototype.form_size = "20";
DynamicFormCanvasInputText.prototype.cssName = "";
DynamicFormCanvasInputText.prototype.form_constraints = "";
DynamicFormCanvasInputText.prototype.add_something_before = "";
DynamicFormCanvasInputText.prototype.add_something_after = "";

DynamicFormCanvasSimpleText.prototype.form_name = "";
DynamicFormCanvasSimpleText.prototype.form_value = "";
DynamicFormCanvasSimpleText.prototype.form_text = "";
DynamicFormCanvasSimpleText.prototype.add_something_before = "";
DynamicFormCanvasSimpleText.prototype.add_something_after = "";

// ---------------------------------------------------------------------------------------------------------------------------------------------------

// ---------------------------------------------------------------------------------------------------------------------------------------------------
function build_single_combo( needle_name , needle_value , target_combo_name , ajaxcommand ){
	var send_string = "action=" + eu( ajaxcommand ) + "&" + needle_name + "=" + eu( needle_value );
	var ajaxcall = new AJAX( "/xmlhttp-handler.php" , send_string , "result_single_combo" , Array( target_combo_name ) );
}

function result_single_combo( xmlDOM , form_select_name ){
	var xml_dom = xmlDOM.responseXML;
	var xml_root = xml_dom.getElementsByTagName('root').item(0);
	var xml_return_rows = xml_root.getElementsByTagName('rows');
	var xml_error = xml_root.getElementsByTagName('errors').item(0);
	var xml_error_message = xml_error.getElementsByTagName('message').item(0).firstChild.data;
	var target_combo_box = false;
	for(var i=0; i<document.forms.length; i++){
		var form_object = document.forms[i];
		if(form_object[form_select_name]){
			target_combo_box = form_object[form_select_name];
		}
	}
	if(target_combo_box){
		if(xml_return_rows.item(0).childNodes.length == 0){
			alert(xml_error_message);
		}
		clear_combo_box(target_combo_box);
		refill_combo_box(xml_return_rows,target_combo_box);
	}
}

function result_single_combo_hook( xmlDOM , form_select_name ){
	var xml_dom = xmlDOM.responseXML;
	var xml_root = xml_dom.getElementsByTagName('root').item(0);
	var xml_return_rows = xml_root.getElementsByTagName('rows');
	var xml_error = xml_root.getElementsByTagName('errors').item(0);
	var xml_error_message = xml_error.getElementsByTagName('message').item(0).firstChild.data;
	var xml_new_id = xml_root.getElementsByTagName('newid').item(0).firstChild.data;
	var target_combo_box = false;
	for(var i=0; i<document.forms.length; i++){
		var form_object = document.forms[i];
		if(form_object[form_select_name]){
			target_combo_box = form_object[form_select_name];
		}
	}
	if(target_combo_box){
		if(xml_return_rows.item(0).childNodes.length == 0){
			alert(xml_error_message);
		}
		clear_combo_box(target_combo_box);
		refill_combo_box(xml_return_rows,target_combo_box,xml_new_id);
	}
}

// ---------------------------------------------------------------------------------------------------------------------------------------------------