///////////////////////////
// config
var validate_input_normal_class = "text_field";
var validate_input_error_class = "text_field_error";
///////////////////////////

function validate_show_error(obj,msg)
	{validate_error_handle(obj,'show_error',msg);}

function validate_hide_error(obj)
	{validate_error_handle(obj,'onchange_hide');}


function validate_error_handle(obj,type,msg)
	{	
	switch(type)
		{case "show_error":
			if (obj.tagName.toLowerCase() == "textarea" || (obj.type && (obj.type.toLowerCase() == "text" || obj.type.toLowerCase() == "password")))
				{obj.className = validate_input_error_class;
				
				//existing onchange
				var existing_action = String(obj.getAttribute("onchange"));
				var sp_att_exists = obj.getAttribute("onchange-save");
				if (existing_action != null && sp_att_exists == null)
					{////////////////
					//IE6/7 ugly fix
					var ie_fix = false;
					var ie_junk_remove_str_arr = ['function anonymous()','function onchange()']; 
					
					for (var i = 0;i < ie_junk_remove_str_arr.length;i++)
						{if (existing_action.indexOf(ie_junk_remove_str_arr[i]) == 0)
							{existing_action = existing_action.substr(ie_junk_remove_str_arr[i].length + 3);
							ie_fix = true;
							}
						}
					if (ie_fix) {existing_action = existing_action.substr(0, existing_action.length - 2);}
					////////////////
					obj.setAttribute("onchange-save",existing_action);
					}
				
				//existing onkeyup
				var existing_action = String(obj.getAttribute("onkeyup"));
				var sp_att_exists = obj.getAttribute("onkeyup-save");
				if (existing_action != null && sp_att_exists == null)
					{////////////////
					//IE6/7 ugly fix
					var ie_fix = false;
					var ie_junk_remove_str_arr = ['function anonymous()','function onkeyup()']; 
					
					for (var i = 0;i < ie_junk_remove_str_arr.length;i++)
						{if (existing_action.indexOf(ie_junk_remove_str_arr[i]) == 0)
							{existing_action = existing_action.substr(ie_junk_remove_str_arr[i].length + 3);
							ie_fix = true;
							}
						}
					if (ie_fix) {existing_action = existing_action.substr(0, existing_action.length - 2);}
					////////////////
					obj.setAttribute("onkeyup-save",existing_action);
					}
				
				obj.onchange = function() {validate_error_handle(this,'onchange_hide');}
				obj.onkeyup = function() {validate_error_handle(this,'onkeyup_hide');}
				}
			popupbox_alert(msg,"document.forms[0]['" + obj.name + "'].focus();");
		break;
		case "onchange_hide": case "onkeyup_hide":
			obj.className = validate_input_normal_class;
			
			var existing_action = "";
			switch(type)
				{case "onchange_hide":
					existing_action = String(obj.getAttribute("onchange-save"));
					if (existing_action == null) {obj.onchange = null;}
					else {eval(existing_action);}
				break;
				case "onkeyup_hide":
					existing_action = String(obj.getAttribute("onkeyup-save")); 
					if (existing_action == null) {obj.onkeyup = null;}
					else {eval(existing_action);}
				break; 
				}
		break;
		}
	}

function validate_get_objects(optional_block_id)
	{
	//vsi elementi v nekem bloku
	if (optional_block_id)
		{var elem = document.getElementById(optional_block_id).getElementsByTagName('*');}
	//vsi elementi v formi, ce ni dolocen block
	else
		{var elem = document.forms[0].getElementsByTagName('*');}
	
	
	var output = [];
	var existing_radio = []; //za preprecitev podvajanja
	
	for (var i = 0;i < elem.length;i++)
		{var tmp_elem = elem[i];
		switch(tmp_elem.tagName.toLowerCase())
			{case "input": case "select": case "textarea":
				var tmp_type = tmp_elem.type;
				
				if (tmp_type && tmp_type != "button")
					{////////////////////////
					// radio element
					if (tmp_type == "radio")
						{
						//preveri ce ta ze obstaja
						var ok = false;
						for (var j = 0;j < existing_radio.length;j++)
							{if (tmp_elem.name == existing_radio[j])
								{ok = true;
								break;
								}
							}
						
						if (!ok) 
							{existing_radio[existing_radio.length] = tmp_elem.name;
							output[output.length] = tmp_elem;
							}
						}
					////////////////////////
					// ostali elementi
					else
						{output[output.length] = tmp_elem;}
					////////////////////////
					}
			break;
			}
		}
	return output;
	}

function validate_replace_checkboxes(optional_block_id)
	{
	//vsi elementi v nekem bloku
	if (optional_block_id)
		{var elem = document.getElementById(optional_block_id).getElementsByTagName('input');}
	//vsi elementi v formi, ce ni dolocen block
	else
		{var elem = document.forms[0].getElementsByTagName('input');}
	
	for (var i = 0;i < elem.length;i++)
		{if (elem[i].type == "checkbox")
			{var elem_name = elem[i].name;
			var elem_value = elem[i].checked ? elem[i].value : "0";
			elem[i].removeAttribute("name");
			
			var new_hidden_elem = document.createElement('input');
			new_hidden_elem.type = "hidden";
			new_hidden_elem.name = elem_name;
			new_hidden_elem.value = elem_value;
			
			var parent_elem = elem[i].parentNode;
			parent_elem.appendChild(new_hidden_elem);			
			}
		}
	}

function validate_replace_disabled(optional_block_id)
	{
	////////////////////////////////
	// inputs

	//vsi elementi v nekem bloku
	if (optional_block_id)
		{var elem = document.getElementById(optional_block_id).getElementsByTagName('input');}
	//vsi elementi v formi, ce ni dolocen block
	else
		{var elem = document.forms[0].getElementsByTagName('input');}
	
	for (var i = 0;i < elem.length;i++)
		{if (elem[i].disabled && elem[i].type == "text")
			{var elem_name = elem[i].name;
			var elem_value = elem[i].value;
			elem[i].removeAttribute("name");
			
			var new_hidden_elem = document.createElement('input');
			new_hidden_elem.type = "hidden";
			new_hidden_elem.name = elem_name;
			new_hidden_elem.value = elem_value;
			
			var parent_elem = elem[i].parentNode;
			parent_elem.appendChild(new_hidden_elem);			
			}
		}
	// inputs
	////////////////////////////////
	// selects
	
	//vsi elementi v nekem bloku
	if (optional_block_id)
		{var elem = document.getElementById(optional_block_id).getElementsByTagName('select');}
	//vsi elementi v formi, ce ni dolocen block
	else
		{var elem = document.forms[0].getElementsByTagName('select');}
	
	for (var i = 0;i < elem.length;i++)
		{if (elem[i].disabled)
			{var elem_name = elem[i].name;
			var elem_value = elem[i].value;
			elem[i].removeAttribute("name");
			
			var new_hidden_elem = document.createElement('input');
			new_hidden_elem.type = "hidden";
			new_hidden_elem.name = elem_name;
			new_hidden_elem.value = elem_value;
			
			var parent_elem = elem[i].parentNode;
			parent_elem.appendChild(new_hidden_elem);			
			}
		}
	// selects
	////////////////////////////////
	}

////////////////////////////////////////////////
// input
function validate_input(input_value)
	{if (!input_value) {return 0;}
	
	var ok = false;
	for (var i = 0;i <= input_value.length;i++)
		{var tmp = input_value.substr(i,1);
		
		if (tmp != " ")
			{ok = true;}
		}
	if (!ok) {return false;}
	
	return true;
	}
// input
////////////////////////////////////////////////
//alfanumericni znaki
function validate_alphanumeric(input_value)
	{
	if (!input_value) {return false;}

	var regex=/^[0-9A-Za-z]+$/;
	if(regex.test(input_value)){return true;}
	else {return false;}
	}
//alfanumericni znaki
////////////////////////////////////////////////
// date
function validate_date(input_value)
	{
	var month_day_num = [];
	month_day_num[1] = 31;
	month_day_num[3] = 31;
	month_day_num[4] = 30;
	month_day_num[5] = 31;
	month_day_num[6] = 30;
	month_day_num[7] = 31;
	month_day_num[8] = 31;
	month_day_num[9] = 30;
	month_day_num[10] = 31;
	month_day_num[11] = 30;
	month_day_num[12] = 31;	
	
	//cekiranje ali datum vsebuje le stevilke in pike
	var tmp_count = 0;
	for (var i = 0;i < input_value.length;i++)
		{ok = false;
		var tmp = input_value.substr(i,1);

		if (tmp == ".")
			{ok = true;
			tmp_count++;
			}
		
		if (tmp >= 0 && tmp <= 9)
			{ok = true;}
			
		if (!ok) {return false;}
		}
	
	if (tmp_count != 2) {return false;}
	
	//cekiranje pozicije pik in da je datum dolg 10 znakov
	if (input_value.substr(2,1) != "." || input_value.substr(5,1) != "." || input_value.length != 10)
		{return false;}
		
	//preverjanje ce ima datum pravilno st dni, mesecov
	var tmp_day = Number(input_value.substr(0,2));
	var tmp_month = Number(input_value.substr(3,2));
	var tmp_year = Number(input_value.substr(6,4));
	
	if (tmp_day == 0 || tmp_year == 0)
		{return false;}
	if (tmp_month < 1 || tmp_month > 12)
		{return false;}
	
	if (tmp_month == 2)
		{//preveri ce je leto prestopno
		var tmp_rezultat = String(tmp_year / 4);
		if (tmp_rezultat.indexOf(".") == -1)
			{//prestopno
			month_day_num[2] = 29;
			}
		else
			{//neprestopno
			month_day_num[2] = 28;
			}
		}
	
	if (tmp_day > month_day_num[tmp_month])
		{return false;}
	
	return true;
	}

function validate_date_compare(date1,date2)
	{
	var tmp = date1;
	date1 = Number(tmp.substr(6,4) + tmp.substr(3,2) + tmp.substr(0,2) + tmp.substr(11,2) + tmp.substr(14,2) + tmp.substr(17,2));
	
	tmp = date2;
	date2 = Number(tmp.substr(6,4) + tmp.substr(3,2) + tmp.substr(0,2) + tmp.substr(11,2) + tmp.substr(14,2) + tmp.substr(17,2));
	
	return date1 > date2 ? false : true;
	}
// date
////////////////////////////////////////////////
// email
function validate_email(input_value)
	{//podvojene @
	var count = 0;
	var pos = input_value.indexOf("@");
	while(pos >= 0)
		{count++;
		pos = input_value.indexOf("@",pos + 1);
		}
	if (!count || count >= 2) {return false;}
	
	//cekiranje ce so presledki
	count = 0;
	pos = input_value.indexOf(" ");
	while(pos >= 0)
		{count++;
		pos = input_value.indexOf(" ",pos + 1);
		}
	if (count) {return 0;}	
	
	//cekiranje vsebine pred in za @
	pos = input_value.indexOf("@");
	pos_po = input_value.substr(pos + 1,1);
	
	if (!pos || !pos_po) {return false;}
		
	return true;
	}
// email
////////////////////////////////////////////////
// number
function validate_number(input_value,allow_char_arr)
	{
	if (!input_value) {return false;}
	
	for (var i = 0;i < input_value.length;i++)
		{var ok = false;
		var tmp = input_value.substr(i,1);
		
		if (allow_char_arr)
			{for (var j = 0;j < allow_char_arr.length;j++)
				{if (tmp == allow_char_arr[j])
					{ok = true;
					break;
					}
				}
			}
		
		if (tmp >= 0 && tmp <= 9) {ok = true;}
		if (!ok) {return false;}
		}
	
	return true;
	}
// number
////////////////////////////////////////////////
