/**
* Funkcije za rad s formama
*
* @package hipForms
* @version 1.0b
* @author hipnaba <hipnaba@punkass.com>
*/

var _mjeseci = new Array('Mjesec', 'Siječanj', 'Veljača', 'Ožujak', 'Travanj', 'Svibanj', 'Lipanj', 'Srpanj', 'Kolovoz', 'Rujan', 'Listopad', 'Studeni', 'Prosinac');
var _sati = new Array('hh:mm', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00', '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00', '24:00');

function hipValidate(obj) {
	var form = obj.submit ? obj : getForm(obj);
	var ok = true;
	var i, j;
	var el, els, reg;
	var error = 'Došlo je do slijedećih grešaka:\n';

	for(i=0; i<validationRules.length; ++i) {
		ok = true;
		
		if(el = form.elements[validationRules[i][0]]) {
			switch(validationRules[i][2]) {
				case 'not_empty':
					if(el.value.length < 3 || el.value == '   ') {
						ok = false;
					}
					break;
				case 'email':
					if(!el.value.match(/[a-zA-Z0-9\-\_\.]*\@[a-zA-Z0-9]*\.[a-zA-Z0-9]*/) && el.value.length > 2) {
						//ok = false;
					}
					break;
			}
			if(validationRules[i][2].charAt(0) == '!') {
				if(el.value == validationRules[i][2].substr(1)) {
					ok = false;
				}
			}
			
		if(validationRules[i][2].charAt(0) == '>') {
			var number = new Number(el.value);
			if(number.valueOf() ==number.toString()) {
				var number2 = new Number (validationRules[i][2].substr(1));
				if(number <= number2) {
					ok = false;
				}
			}
			else {
					ok = false;
			}
		}
		
		
			reg = new RegExp(validationRules[i][1]);
			if(!ok && !error.match(reg)) {
				error += validationRules[i][1] + '\n';
			}
		}
		else if(validationRules[i][0].charAt(validationRules[i][0].length - 1) == '*') {
			name = validationRules[i][0].substr(0, validationRules[i][0].lastIndexOf('_') + 1);
			els = new Array();
			for(j=1; j<10; ++j) {
				if(el = form.elements[name + j]) {
					els[els.length] = el;
				}
			}
			
			if(els.length) {
				switch(validationRules[i][2]) {
					case 'at_least_one_check':
						var have_one = false;
						for(j=0; j<els.length; ++j) {
							if(els[j].checked == true) {
								have_one = true;
							}
						}
						
						if(!have_one) {
							error += validationRules[i][1] + '\n';
							ok = false;
						}
						break;
				}
			}
		}
	}
	
	
	
	if(error.length < 36) {
		form.submit();
	}
	else {
		alert(error);
	}
}

function switchObject(form, obj_name, action) {
	if(!form.submit) form = getForm(form);
	
	form.elements[obj_name].disabled = (action == 'on') ? false : true;
}

function getForm(obj) {
	while(obj) {
		if(obj.submit) break;
		obj = obj.parentNode;
	}
	
	return obj;
}

function makeCombo(name, values, extra, selected) {
	var combo = '<select name="' + name + '" ' + extra + '>';
	var i;
	
	if(typeof values == 'string') {
		if(values.indexOf('-')) {
			values = values.split('-');
			
			for(i=values[0]; i<=values[1]; ++i) {
				combo += '<option value="' + i + '">' + i + '</option>';
			}
		}
	}
	else if(values.join){
		if(!values[0].join) {
			for(i=0; i<values.length; ++i) {
				combo += '<option value="' + i + '"';
				if(typeof selected == 'number' && selected == i) {
					combo += ' selected';
				}
				combo += '>' + values[i] + '</option>';	
			}
		}
	}
	
	combo += '</select>\n';
	
	return combo;
}

function addToCombo(form, combo_name, value, text, selected) {
	if(!form.submit) form = getForm(form);

	option = new Node('input');
	option.value = value;
	option.text = text;
	option.selected = selected;
	
	form.elements[combo_name].addNode(option);
}
