var ajax_url = project_url + "/ajax.php";
var isHistory = false;

function monthChanged(month_id, day_id) {
	var day_len = [31,29,31,30,31,30,31,31,30,31,30,31];
	var month_id = $("#"+month_id).val() - 1;
	
	var day_comp = document.getElementById(day_id);
	
	var len = day_comp.options.length;
	for(var i=1;i<len;i++) {
		day_comp.options[1] = null;
	}
	
	for(var i=1;i<=day_len[month_id];i++) {
		day_comp.options[i] = new Option(i, i); 
	}
}

function onCountryChange(country_id, city_id, city_text_id) {
	var selObj = document.getElementById(country_id);
    var country = selObj[selObj.selectedIndex].value;
    if(country == default_country) {
    	$("#"+city_text_id).hide();
    	$("#"+city_id).show();
    } else {
    	$("#"+city_text_id).show();
    	$("#"+city_id).hide();
    }
}

function resetFormElements(obj_name) {
	var obj = this[obj_name];
	for(var i=0; i<obj.length; i++) {
		var field_name = obj[i][0];
		var field_type = obj[i][1];
		var field_extra = obj[i][2];
		
		if(field_type == "CHK") {
			document.getElementById(obj_name+"_"+field_name).checked = false;
		} else if(field_type == "RTA") {
			tinyMCE.get(obj_name+"_"+field_name).setContent("");
		} else if(field_type == "SEL") {
			document.getElementById(obj_name+"_"+field_name).selectedIndex = 0;
		} else {
			$("#"+obj_name+"_"+field_name).val("");
		}
	
	}
}

function generateSingleQuery(obj_name) {
	
	var query = "";
	var obj = this[obj_name];
	for(var i=0; i<obj.length; i++) {
		var field_name = obj[i][0];
		var field_type = obj[i][1];
		var field_extra = obj[i][2];
		query += generateSubQuery(obj_name, field_name, field_type, field_extra);
	}
	
	return query;
}

function generateMultiQuery(obj_name) {
	var query = "";
	var obj = this[obj_name];
	
	var len = $("#"+obj_name+"s div[@id^=all_"+obj_name+"]").length - 1; //-1 for hidden first div
	
	var c = 1;
	for(var i=1; i<=len; i++) {
	
		var op_status = $("#"+obj_name+"_op_status_"+i).val();
		var id = $("#"+obj_name+"_id_"+i).val();
		
		var is_operation = false;
		
		if(op_status == "OLD") {
			if(isVisible(obj_name+"_"+i)) {
				//Update
				query += addParameter(obj_name+"_operation_"+c, "UPDATE");
				is_operation = true;
			} else {
				//Delete
				query += addParameter(obj_name+"_operation_"+c, "DELETE");
				is_operation = true;
			}
		} else if(op_status == "NEW") {
			if(isVisible(obj_name+"_"+i)) {
				//Add
				query += addParameter(obj_name+"_operation_"+c, "ADD");
				is_operation = true;
			}
		}
		
		if(is_operation) {
		
			query += addParameter(obj_name+"_id_"+c, id);
			query += addParameter(obj_name+"_display_id_"+c, i);
				
			for(var j=0; j<obj.length; j++) {
				var field_name = obj[j][0];
				var field_type = obj[j][1];
				var field_extra = obj[j][2];
				query += generateSubQuery(obj_name, field_name+"_"+i, field_type, field_extra, "_"+i);
			}
			
			c++;
			
		}
	}
	
	query += addParameter(obj_name+"_len", (c-1));
	
	return query;
	
}

function generateSubQuery(obj_name, field_name, field_type, field_extra, row) {
	if(field_type == "CHK") {
		return addParameter( obj_name+"_"+field_name, ((document.getElementById(obj_name+"_"+field_name).checked) ? "YES" : "NO") );
	} else if(field_type == "URL") {
		return addParameter(obj_name+"_"+field_name, escape($("#"+obj_name+"_"+field_name).val()));
	} else if(field_type == "CTY") {
		if(row != null) {
			var country_field_name = field_extra[0] + row;
			var city_text_field_name = field_extra[1] + row;
		} else {
			var country_field_name = field_extra[0];
			var city_text_field_name = field_extra[1];
		}
		var city = ($("#"+obj_name+"_"+country_field_name).val() == default_country) ? $("#"+obj_name+"_"+field_name).val() : $("#"+obj_name+"_"+city_text_field_name).val();
		return addParameter(obj_name+"_"+field_name, encodeURIComponent(city));
	} else if(field_type == "BTW") {
		if(row != null) {
			var start_field_name = field_extra[0] + row;
			var end_field_name = field_extra[1] + row;
		} else {
			var start_field_name = field_extra[0];
			var end_field_name = field_extra[1];
		}
		if($("#"+obj_name+"_"+start_field_name).val() == "" && $("#"+obj_name+"_"+end_field_name).val() == "") {
			var val = "";
		} else {
			var val = $("#"+obj_name+"_"+start_field_name).val() + "," + $("#"+obj_name+"_"+end_field_name).val();
		}
		return addParameter(obj_name+"_"+field_name, encodeURIComponent(val));
	} else if(field_type == "RTA") {
		return addParameter(obj_name+"_"+field_name, encodeURIComponent(tinyMCE.get(obj_name+"_"+field_name).getContent()));
	} else if(field_type == "TXA") {
		return addParameter(obj_name+"_"+field_name, encodeURIComponent(convertText2Html($("#"+obj_name+"_"+field_name).val())));
	} else {
		return addParameter(obj_name+"_"+field_name, encodeURIComponent($("#"+obj_name+"_"+field_name).val()));
	}
}

function setDefaultValue(obj_name, field_name, field_type) {
	if(field_type == "CHK") {
		$("#"+obj_name+"_"+field_name).val("off");
	} else {
		$("#"+obj_name+"_"+field_name).val("");
	}
}

function addObject2Gui(obj_name) {
	
	var obj_zero = $("#all_"+obj_name+"_0").html();
	var len = $("#"+obj_name+"s div[@id^=all_"+obj_name+"]").length - 1 //-1 for hidden first div;
	
	var next_id = len + 1;
	var obj_new = "<div id=\"all_"+obj_name+"_" + next_id + "\">"+obj_zero.replace(/_0/g, "_"+next_id)+"</div>";
	
	$("#"+obj_name+"s").append(obj_new);
	
	//hatalari temizle
	$("#all_"+obj_name+"_" + next_id +" .form_error").remove();
	
	$("#"+obj_name+"_id_"+next_id).val("-1");
	$("#"+obj_name+"_op_status_"+next_id).val("NEW");
	
	var obj = this[obj_name];
	for(var i=0; i<obj.length; i++) {
		var field_name = obj[i][0];
		var field_type = obj[i][1];
		setDefaultValue(obj_name, field_name+"_"+next_id, field_type);
	}
	
}

function addParameter(name, value) {
	return name + "=" + value + "&";
}

//For CV form
function showFormError(field_id, error_message) {
	
	var temp_obj = document.getElementById(field_id);
	if(temp_obj != null && temp_obj.type != null && temp_obj.type == "hidden") {
		field_id = field_id.replace("_id", "");
	}
	
	$("#"+field_id).focus();
	/*
	$("#"+field_id).parent().append("<span id=\""+field_id+"_error1\" class=\"form_error\"></span>");
	$("#"+field_id+"_error1").html(error_message);
	*/
	$("#"+field_id).parent().parent().parent().parent().parent().append("<div class=\"form_error\"><div class=\"alert-background\"></div><div class=\"alert-content\">"+error_message+"</div></div>");
	//$("#row_"+field_id).append("<div class=\"form_error\"><div class=\"alert-background\"></div><div class=\"alert-content\">"+error_message+"</div></div>");
	//$("#row_"+field_id).parents('table:first').append("<div class=\"form_error\"><div class=\"alert-background\"></div><div class=\"alert-content\">"+error_message+"</div></div>");
	//alert($("#"+field_id).parent().parent().parent().parent().parent().html());
	
}

function hasError(str) {
	if(str.charAt(0) == '#') {
		return true;
	} else {
		return false;
	}
}


function showErrorsAlert(str) {
	var error_str = "<ul>";
	var line_arr = str.split('$$');
	for ( key in line_arr ) {
		var line = line_arr[key];
		if(line != null && line != undefined && line != "") {
		   	var split_arr = line.split("##");
			error_str += "<li>" + split_arr[1] + "</li>";
		}
	}
	error_str += "</ul>";
	showError(error_str);
}


//For CV form
function showErrors(str) {

	$(".form_error").remove();
	
	var line_arr = str.split('$$');
	
	for ( key in line_arr ) {
		var line = line_arr[key];
	   	var split_arr = line.split("##");
	   	var field_name = split_arr[0].substring(1, split_arr[0].length);
		var error_message = split_arr[1];
		var error_display_id = 0;
		if(split_arr[2] != null) {
			var error_display_id = split_arr[2];
			showFormError(field_name+ "_" + error_display_id, error_message);
		} else {
			showFormError(field_name, error_message);
		}
			   
	}
}

function getError(str) {
	var split_arr = str.split("##");
	var error_code = new Number(split_arr[0].substring(1, split_arr[0].length));
	var error_message = split_arr[1];
	var error_display_id = 0;
	if(split_arr[2] != null) {
		var error_display_id = split_arr[2];
	}
	
	var ret = new Object();
	ret.code = error_code;
	ret.message = error_message;
	ret.display_id = error_display_id;
	
	return ret;
}



function setMultiQuery2Old(obj_name) {
	var query = "";
	var obj = this[obj_name];
	
	var len = $("#"+obj_name+"s div[@id^=all_"+obj_name+"]").length - 1; //-1 for hidden first div
	
	var c = 1;
	for(var i=1; i<=len; i++) {
	
		var op_status = $("#"+obj_name+"_op_status_"+i).val();
		var id = $("#"+obj_name+"_id_"+i).val();
		
		if(op_status == "NEW") {
			if(isVisible(obj_name+"_"+i)) {
				$("#"+obj_name+"_op_status_"+i).val("OLD");
			}
		}
	}
	
}




/******* MISC ********/

function showAlert(str) {
	if(str != undefined) {
		$("#alert_message").html(str);
	}
	$("#alert_box").removeClass("*");
	$("#alert_box").hide();
	$("#alert_box").fadeIn(800);
}

function showMessage(str) {
	Boxy.alert(str, null, {title: alert_information_title, modal:false});
	//showAlert(str);
	//$("#alert_box").addClass("message_box");
}

function showError(str) {
	Boxy.alert(str, null, {title: alert_error_title});
	//showAlert(str);
	//$("#alert_box").addClass("error_box");
}

//For single form pages

function hideFormPageErrors() {
	$(".hata").remove();
}

function showFormPageError(display_id, str) {
	if(display_id != null && display_id != undefined && display_id != "") {
		var display_html = "<tr class=\"hata\"><td colspan=\"2\"><div class=\"hata-olustu\"></div>"+str+"</td></tr>";
		$("#"+display_id).after(display_html);
	}
}

function showFormPageErrors(str) {
	
	hideFormPageErrors();
	
	var line_arr = str.split('$$');
	
	for ( key in line_arr ) {
		var line = line_arr[key];
	   	var split_arr = line.split("##");
	   	var field_name = split_arr[0].substring(1, split_arr[0].length);
		var error_message = split_arr[1];
		var error_display_id = 0;
		if(split_arr[2] != null) {
			var error_display_id = split_arr[2];
			showFormPageError("row_"+field_name+ "_" + error_display_id, error_message);
		} else {
			showFormPageError("row_"+field_name, error_message);
		}
	}
	
}

function addAutoComplete(name_field, id_field, action, has_detail) {
	var options = {
		minChars: 2,
		max: 20,
		scrollHeight: 200
	}
	$("#"+name_field).autocomplete(ajax_url + "?action=" + action + "&", options);
	if(id_field != "") {
		$("#"+name_field).result(function(event, data, formatted) {
			$("#"+id_field).val(data[1]);
		})
	}
	
	if(has_detail != null && has_detail) {
		str = "<a title=\""+autobox_icon_alt+"\" onclick=\"return showAutoCompleteBox('"+name_field+"','"+id_field+"','"+action+"')\" ><img alt=\""+autobox_icon_alt+"\" style=\"margin-left:8px;position:absolute;\" src=\"" + project_url + "/images/autobox.png\" /></a>";
		$("#"+name_field).parent().append(str);
	}
}

function showAutoCompleteBox(name_field, id_field, action) {
	$.ajax({
		url: ajax_url + "?action=" + action + "&limit=5000",
		cache: false,
		success: function(html){
			var str = "<select  ondblclick=\"autoBoxDoubleClick('"+name_field+"', '"+id_field+"')\" style=\"width:350px\" size=\"10\" id=\"autobox_"+name_field+"\"> ";
			var items = html.split('\n');
			for ( key in items ) {
				var item = items[key];
				if(item != null && item.length > 0) {
					var part = item.split("|");
					str += "<option value=\""+part[1]+"\">"+part[0]+"</option>";
				}
			}
			str += "</select>";
			Boxy.alert(str, null, {title: alert_autobox_title, modal:false, afterHide: function() {
				var selObj = document.getElementById("autobox_"+name_field);
				if(selObj.selectedIndex > -1) {
					$("#"+name_field).val(selObj.options[selObj.selectedIndex].text);
					$("#"+id_field).val(selObj[selObj.selectedIndex].value);
				}
			}});
		}
	});
	return false;
}

function autoBoxDoubleClick(name_field, id_field) {
	var selObj = document.getElementById("autobox_"+name_field);
	if(selObj.selectedIndex > -1) {
		$("#"+name_field).val(selObj.options[selObj.selectedIndex].text);
		$("#"+id_field).val(selObj[selObj.selectedIndex].value);
		Boxy.get(selObj).hide();
	}
}

function addMultiAutoComplete(name_field, id_field, action) {
	
	if($("#"+id_field).val() != null) {
		var name_arr = $("#"+name_field).val().split(',');
		var id_arr = $("#"+id_field).val().split(',');
		$("#"+name_field).val("");
		$("#"+id_field).val("");
		for ( var i = 0; i<id_arr.length; i++) {
			if(name_arr[i] != "" && id_arr[i] != "") {
				//alert(name_field + " : " + name_arr[i] + " - " + id_arr[i]);
				addTag2MultiAutoComplete(name_field, id_field, name_arr[i], id_arr[i]);
			}
		}
		generateNameFromAutoComplete(name_field);
	}
	
	var options = {
		minChars: 2,
		max: 20,
		scrollHeight: 200
	}
	$("#"+name_field).autocomplete(ajax_url + "?action=" + action + "&", options);
	if(id_field != "") {
		$("#"+name_field).result(function(event, data, formatted) {
			addTag2MultiAutoComplete(name_field, id_field, data[0], data[1]);
			$("#"+name_field).val("");
			generateNameFromAutoComplete(name_field);
		})
	}
}

function addTag2MultiAutoComplete(name_field, id_field, name, id) {
	//alert(name  + " "+ id);
	if($("#"+name_field+"_tags").val() == null) {
		$("#"+name_field).parent().append("<div class=\"multi_tag\" id=\""+name_field+"_tags\"></div>");
	}
	
	$("#"+name_field+"_tags").append("<span id=\""+name_field+"_tag_" + id + "\" class=\"multi_tag_span\"><a onclick=\"removeTagFromMultiAutoComplete('" + name_field+ "', '"+name_field+"_tag_" + id+"', '"+id_field+"', '"+id+"');\">X</a> "+name+"</span>");
	
	var val = $("#"+id_field).val();
	if(val.length > 0) {
		$("#"+id_field).val(val + "," + id);
	} else {
		$("#"+id_field).val(id);
	}
}

function removeTagFromMultiAutoComplete(name_field, tag_field, id_field, id) {
	$("#"+tag_field).remove();
	var val = $("#"+id_field).val();
	
	if(val != null) {
		var str = "";
		var id_arr = val.split(',');
		for ( key in id_arr ) {
			if(id_arr[key] != id) {
				if(str.length > 0) {
					str += "," + id_arr[key];
				} else {
					str = id_arr[key];
				}
			}
		}
		$("#"+id_field).val(str);
		generateNameFromAutoComplete(name_field);
	}
	
}

function generateNameFromAutoComplete(name_field) {
	if($("#"+name_field+"_name").val() != undefined) {
		var str = "";
		$("#"+name_field+"_tags span").each(function(){
			var val = $(this).text();
			val = val.substr(2, val.length);
			str += val + ",";
	    });
	    $("#"+name_field+"_name").val(str);
    }
}

function setSelectedsInMultiCombobox(combo_id, ids) {

	var id_arr = ids.split(',');
	
	var combo = document.getElementById(combo_id);
	
	var len = combo.options.length;
	for(var i=0;i<len;i++) {
		if(isIn(id_arr, combo.options[i].value)) {
			combo.options[i].selected = true;
		}
	}
	
	//$("#"+combo_id).asmSelect();
	
}

function setSelectedMultiCombobox(combo_id, is_selected) {

	var combo = document.getElementById(combo_id);
	
	var len = combo.options.length;
	for(var i=0;i<len;i++) {
		combo.options[i].selected = is_selected;
	}
	
}

function isIn(arr, item) {
	for(var i = 0; i<arr.length; i++) {
		if(arr[i] == item) {
			return true;
		}
	}
	return false;
}

function setVisible(display_str, visible) {
	var display_id = document.getElementById(display_str);
	if(visible) {
		display_id.style.display = "";
	} else {
		display_id.style.display = "none";
	}	
	return false;
}

function toogleVisible(display_str) {
	var display_id = document.getElementById(display_str);
	if(display_id.style.display == "none") {
		display_id.style.display = "";
	} else {
		display_id.style.display = "none";
	}	
	return false;
}

function toogleVisibleWithEffect(display_str) {
	var display_id = document.getElementById(display_str);
	if(display_id.style.display == "none") {
		$("#"+display_str).show();
	} else {
		$("#"+display_str).hide();
	}	
	return false;
}

function isVisible(display_str) {
	var display_id = document.getElementById(display_str);
	return !(display_id.style.display == "none");
}

function formatLanguage(message, texts) {
	for(var i=0; i<texts.length; i++) {
		message = message.replace("{"+(i+1)+"}", texts[i]);
	}
	return message;
}

function addTextClear(display_id) {
	eval("temp_"+display_id+" = '" + $("#"+display_id).val() + "';");
	$("#"+display_id).attr("onfocus", "if(this.value == " + "temp_" + display_id + ")  this.value = '';");
	$("#"+display_id).attr("onblur", "if(this.value == '') this.value = temp_" + display_id + ";");
}

function convertText2Html(text) {

	text = text.replace(/\n/g, '<br/>');
	text = text.replace(/<br\/>/gim, '\n');
	text=text.replace(/(ftp|http|https|file):\/\/[\S]+(\b|$)/gim,"<a href='$&'>$&</a>");
	text=text.replace(/([^\/])(www[\S]+(\b|$))/gim,"$1<a href='http://$2'>$2</a>");
	text=text.replace(/\n/gim, '<br/>');		
	return text;
}

function openHTMLBox(title, message) {
	var dialog = new Boxy(message, {title: title, modal:false});
}

function getTarget(event) {

	var e = event ? event : window.event;
	
	var target;
	if(e.target) {
		target = e.target
	} else {
		target = e.srcElement;
	}
	
	return target;
}

function getURLParam(name){
	var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
	return (results == null) ? "" : results[1];
}

/*********************/


function control_login() {
	if(!is_authenticated) {
		Boxy.confirm(user_login_required, function() { window.location = project_url + "/signin_redirect?url="+encodeURIComponent(location.href); }, {title: alert_information_title});
		return false;
	} else {
		return true;
	}
}

function setCookie(c_name,value,expiredays)
{
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	//exdate.setMinutes(exdate.getMinutes()+2);
	
	document.cookie=c_name+ "=" +escape(value)+
	((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

function getCookie(c_name)
{
	if (document.cookie.length>0)
	  {
	  c_start=document.cookie.indexOf(c_name + "=");
	  if (c_start!=-1)
	    {
	    c_start=c_start + c_name.length+1;
	    c_end=document.cookie.indexOf(";",c_start);
	    if (c_end==-1) c_end=document.cookie.length;
	    return unescape(document.cookie.substring(c_start,c_end));
	    }
	  }
	return "";
}