var ajax_base_url = "";

function engine_set_base_url(url)
{
	ajax_base_url = url;
}

function engine_check_unique(id)
{
	showdiv('ajax_icon_'+id);
	var val = document.getElementById(id).value;
	$.ajax({
		type: "POST",
		url: "index.php",
		data: "action_type=ajax&action=check_unique&id="+id+"&value="+val,
		success: function(msg)
		{
			msg = ajax_retrieve_messages(msg);
			if(msg[0] != "unique")
			{
				document.getElementById("ajax_message_"+id).innerHTML = msg[0];
			}
			else if(msg[0] == "unique")
			{
				document.getElementById("ajax_message_"+id).innerHTML = "";
			}
			hidediv('ajax_icon_'+id);
		}
	});	
}

function check_uncheck_all(id, checks)
{
	var checked_status = id.checked;
	$("."+checks).each(function()
	{
		this.checked = checked_status;
	});
}

function delete_confirmation(txt)
{
	if(confirm(txt))
		return true;
	else
		return false;
}

function message_box_hide(id)
{
	setTimeout(function() {message_box_hide_do(id);}, 2000);
}

function message_box_hide_do(id)
{
	$('#'+id).fadeOut(2000);
}

function engine_dialog()
{
	$("#dialog").show();
	$("#dialog").dialog("open");

	return false;
}

function engine_check_form_fields(fields)
{
	if(fields == "none")
		return true;

	var pass = true;
	fields = fields.split("|");
	for(var i = 0; i < fields.length; i++)
	{
		if(f == '')
			continue;
			
		var p = true;
			
		var f = fields[i];
		f = f.split(",");
		
		if(f[1] == 'varchar')
		{
			if(document.getElementById(f[0]).value == '')
			{
				p = false;
				$('#l'+f[0]).addClass("field-error");
			}
			else
			{
				p = true;
				$('#l'+f[0]).removeClass("field-error");
			}
		}
		else if(f[1] == 'select')
		{
			if(document.getElementById(f[0]).value == '')
			{
				p = false;
				$('#l'+f[0]).addClass("field-error");
			}
			else
			{
				p = true;
				$('#l'+f[0]).removeClass("field-error");
			}
		}
			
		if(p == false)
			pass = false;
	}

	return pass;
}

function textCounter(field, maxlimit) 
{
	if (maxlimit == 0) 
		document.getElementById('charstxt').innerHTML = ' (' + (field.value.length) + ')';
	else if (field.value.length > maxlimit > 0)
		field.value = field.value.substring(0, maxlimit);
	else 
		document.getElementById('chars').innerHTML = ' (' + (maxlimit - field.value.length) + ')';
}

function genSEF(from,to) 
{ 
	var str = deLocalize(from.value);
	str = str.toLowerCase();
	str = str.replace(/[^a-z 0-9]+/g,'');
	str = str.replace(/\s+/g, "-");		
	to.value = str;
}
		
function deLocalize( inStr ) 
{
    var outStr = inStr;
    outStr = outStr.replace(/[ćĆ]/g, 'c');
    outStr = outStr.replace(/[čČ]/g, 'c');
    outStr = outStr.replace(/[šŠ]/g, 's');
    outStr = outStr.replace(/[žŽ]/g, 'z');
    outStr = outStr.replace(/[đĐ]/g, 'dj');
    return outStr;
}
		
function spaces_restrict(x) 
{
	if (window.event)
		var key = window.event.keyCode;
	else if (x)
		key = x.which;
	else
		return true;
	var keychar = String.fromCharCode(key);
	keychar.toLowerCase();
	if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) )
		return true;
	else if ((("abcdefghijklmnopqrstuvwxyz0123456789,").indexOf(keychar) > -1))
		return true;
	else
		return false;
}

function restrict_alphanumeric(field)
{
	var v = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
	var w = "";
	for(i=0; i < field.value.length; i++)
	{
		x = field.value.charAt(i);
		if(v.indexOf(x,0) != -1)
			w += x;
	}
	field.value = w;
}

function restrict_numeric(field)
{
	var v = "0123456789.,";
	var w = "";
	for(i=0; i < field.value.length; i++)
	{
		x = field.value.charAt(i);
		if(v.indexOf(x,0) != -1)
			w += x;
	}
	field.value = w;
}

function restrict_alpha(field)
{
	var v = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var w = "";
	for(i=0; i < field.value.length; i++)
	{
		x = field.value.charAt(i);
		if(v.indexOf(x,0) != -1)
			w += x;
	}
	field.value = w;
}

function hidediv(id) 
{
	//safe function to hide an element with a specified id
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'none';
	}
	else {
		if (document.layers) { // Netscape 4
			document.id.display = 'none';
		}
		else { // IE 4
			document.all.id.style.display = 'none';
		}
	}
}

function showdiv(id) 
{
	//safe function to show an element with a specified id
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = '';
	}
	else {
		if (document.layers) { // Netscape 4
			document.id.display = '';
		}
		else { // IE 4
			document.all.id.style.display = '';
		}
	}
}

function field_check_text(i, len)
{
	var f = null;
	var error = "#d56900";
	var ok = "#303030";
	
	len = len || 1;
	
	f = document.getElementById(i);
	if(!f)
		return false;
		
	if(f.value.length < len)
	{
		document.getElementById('l'+i).style.color = error;
		return false;;
	}
	else
		document.getElementById('l'+i).style.color = ok;
		
	return true;
}

function field_check_select(i, val)
{
	var f = null;
	var error = "#d56900";
	var ok = "#303030";
	
	f = document.getElementById(i);
	if(!f)
		return false;
		
	if(f.value == val)
	{
		document.getElementById('l'+i).style.color = error;
		return false;;
	}
	else
		document.getElementById('l'+i).style.color = ok;
		
	return true;
}

function create_ajax_object()
{
	var xmlHttp;
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
		// Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e)
			{
				alert("Error!");
				return false;
			}
		}
	}
	return xmlHttp;
}

function ajax_retrieve_messages(str)
{
	var i = 0;
	var counter = 0;
	var msgs = [];
	
	counter = str.indexOf('[<ajax_message>', counter)
	while(counter >= 0)
	{
		var start_m = counter;
		var end_m = str.indexOf('</ajax_message>]', counter);
		var message = str.substring(start_m + 15, end_m);
		msgs[i] = message;
		i++;
		counter = str.indexOf('[<ajax_message>', end_m)
	}
	
	return msgs;
}

function latin2_convert(str)
{
	str = str.replace(/=/g, '*eq*');
	str = str.replace(/&/g, '*amp*');
	str = str.replace(/\n/g, '*br*');
	str = str.replace(/č/g, '[ch]');
	str = str.replace(/ć/g, '[cs]');
	str = str.replace(/š/g, '[s]');
	str = str.replace(/đ/g, '[d]');
	str = str.replace(/ž/g, '[z]');
	str = str.replace(/Č/g, '[CH]');
	str = str.replace(/Ć/g, '[CS]');
	str = str.replace(/Š/g, '[S]');
	str = str.replace(/Đ/g, '[D]');
	str = str.replace(/Ž/g, '[Z]');
	return str;
}

function getScrollXY() 
{
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

function findPosX(obj)
{
	obj = document.getElementById(obj);
	if(obj == null)
		return 0;

	var curleft = 0;
	if(obj.offsetParent)
		while(1) 
		{
			curleft += obj.offsetLeft;
			if(!obj.offsetParent)
				break;
			obj = obj.offsetParent;
		}
	else if(obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	obj = document.getElementById(obj);
	if(obj == null)
		return 0;
		
	var curtop = 0;
	if(obj.offsetParent)
		while(1)
		{
			curtop += obj.offsetTop;
			if(!obj.offsetParent)
				break;
			obj = obj.offsetParent;
		}
	else if(obj.y)
		curtop += obj.y;
	return curtop;
}


var scroll_delay_timer;
var scroll_direction = 0;
var last_y_scroller_value = -100;

function scroll_window_to(id)
{
	var scrolls = getScrollXY();
	var y_scroll = scrolls[1];
	var scroll_to = findPosY(id);
	
	var move = 20;
	
	if(scroll_direction == 0)
	{
		if(scroll_to < y_scroll)
		{
			scroll_direction = -1;
		}
		else if(scroll_to > y_scroll)
		{
			scroll_direction = 1;
		}
	}

	if(scroll_direction == 1)
	{	
		if(scroll_to <= y_scroll)
		{
			scroll_direction = 0;
		}
	}
	else if(scroll_direction == -1)
	{
		if(scroll_to >= y_scroll)
		{
			scroll_direction = 0;
		}
	}	
	
	if((scroll_direction == 0) || (last_y_scroller_value == y_scroll))
	{
		clearTimeout(scroll_delay_timer);
		last_y_scroller_value = -100;
	}
	else
	{
		last_y_scroller_value = y_scroll;
		window.scrollBy(0,move * scroll_direction); // horizontal and vertical scroll increments
  	scroll_delay_timer = setTimeout(function() {scroll_window_to(id);},10); // scrolls every 100 milliseconds
  }
}
