var FormLib_MessageRequired='Položka {caption} je povinná.';
var FormLib_MessageValidate='Položka {caption} neodpovídá zadanému formátu';
var FormLib_MessageDateMin='Zadané datum {caption} je nižší než limit';
var FormLib_MessageDateMax='Zadané datum {caption} je větší než limit';
var FormLib_MessagePasswordVerify='Kontrola hesla {caption} neodpovídá zadanému heslu, nebo heslo je kratší než 6 znaků a neobsahuje alespoň 1 cislici.'
var FormLib_MessagePasswordLength='Heslo "{caption}" je příliš krátké.';


var FormLib_DateFormat = 'd.m.y';
var FormLib_DateFormatSplit = '.';

function FormLib_Date(Element){
	var v = window.open('/calendar.php?item='+Element.id+'&date='+Element.getAttribute('valuehidden'),'select_date','toolbar=0,location=0,directories=0,menuBar=0,scrollbars=0,resizable=0,width=130,height=150,left=100,top=30');
	v.focus();	
}


function FormLib_CheckForm(Form){
	/* zpracujem jednotlive polozky formulare */
	for(var I=0;I<Form.elements.length;I++) {
		var Element = Form.elements[I];
		/* overime pozadovanost polozky */
		if(Element.getAttribute('required')=='1'){
			/* rozdilne zpracovani ruznych form. elementu */
			switch(Element.type){
			case 'text':
			case 'textarea':
			case 'password':
			case 'select-one':
			case 'file':
				var Value=Element.value;
				if(Value.length==0 || Value.replace(' ','')==''){
					FormLib_Alert(Element,'required', true);
					return false;
				}	
			break;
			case 'checkbox':
				/* jedna se o jeden checkbox */
				if(Element.length==undefined){
					if(Element.checked==false){
						FormLib_Alert(Element	,'required', true);
						return false;
					}	
				}
				else { /* jedna se o vicerozmerny checkbox */
					var checked=false;
					for(var J=0;J<Element.length;j++){
						if(Element[j].checked==true) checked=true;	
					}
					if(checked==false){
						FormLib_Alert(Element	,'required', true);
						return false;
					}
				}
			break;
			}
		}/* overeni pozadovanosti */
		/* pokud se jedna o heslo, proverim jeho schodu */
		if(Element.type=='password' && Element.getAttribute('verify')=='1'){
			var VerifyElement = document.getElementById(Element.name+'_verify');
			if(VerifyElement.value!=Element.value){
				FormLib_Alert(Element,'passwordverify',true);
				return false;
			}
			
		}
		/* overeni min. delky */
		if(Element.type=='password'){
			var MinLength=Element.getAttribute('minlength');
			if(parseInt(MinLength)!='NaN' && Element.value.length<parseInt(MinLength)){
				FormLib_Alert(Element,'passwordlength',true);
				return false;
			}
		}
		/* overime format
		/* kontrola validity dat */
		if(Element.getAttribute('validate')!='' && Element.getAttribute('validate')!=null){
			var Value=Element.value;
			if(Value.length!=0 && Value.replace(' ','')!=''){
				switch(Element.getAttribute('validate')){
				case 'number':
					var reg = new RegExp('^[0-9\.,\+\-]+$', 'i');
				break;
				case 'alnum':
					var reg = new RegExp('^[a-z0-9]+$', 'i');
				break;
				case 'withnumberandchar':
					var reg = new RegExp('([a-z]+[0-9]+|[0-9]+[a-z]+)', 'i');
				break;
				case 'withnumber':
					var reg = new RegExp('[0-9]+');
				break;
				case 'withchar':
					var reg = new RegExp('[a-z]+', 'i');
				break;
				case 'email':
					var reg = new RegExp('^([_a-zA-Z0-9\.\-]+)@([_a-zA-Z0-9\.\-]+)\.([a-zA-Z]{2,4})$','i');
				break;
				case 'link':
					var reg = new RegExp('^(http|ftp|irc|mms|https):\/\/[a-z0-9]+([-_\.]?[a-z0-9])*(\.[a-z]{2,4})?(\/{1}[-_~&=\?\.a-z0-9%]*)*$','i');
				break;
				case 'time':
					var reg = new RegExp('^(([10][0-9])|(2[0-3])):[0-5][0-9]$', 'i');
				break;
				}
				if(!reg.test(Value)){
					FormLib_Alert(Element,'validate', true);
					return false;
				}
			}
		}
		
	}
	/* vse proslo v poradku, tak si musim preformatovat datum zpet */
	for(var I=0;I<Form.elements.length;I++) {
		if(Form.elements[I].getAttribute('valuehidden')!=null)	{
			Form.elements[I].value = Form.elements[I].getAttribute('valuehidden');
		}
	}
	return true;
}

/* zobrazeni alertu */
function FormLib_Alert( Element, Type, Focus){
	/* zjistim si caption polozky */
	labels = document.getElementsByTagName("label");
	var Caption = 'NEPOJMENOVANA';
	if(document.getElementById(Element.id).getAttribute('label')!='') Caption		= document.getElementById(Element.id).getAttribute('label');
 	
//	var Caption = document.getElementById(Element.id+'-caption');
//	var Caption = Caption.innerText==undefined?Caption.textContent:Caption.innerText;
	
	switch(Type){
	case 'passwordlength':
		alert(FormLib_MessagePasswordLength.replace('{caption}',Caption));
	break;
	case 'required':
		alert(FormLib_MessageRequired.replace('{caption}',Caption));
		if(Focus==true) Element.focus();
		//Element.style.backgroundColor='#cc0000';
	break;
	case 'validate':
		alert(FormLib_MessageValidate.replace('{caption}',Caption));
		if(Focus==true) Element.focus();
	break;
	case 'datemin':
		alert(FormLib_MessageDateMin.replace('{caption}', Caption));
	break;
	case 'datemax':
		alert(FormLib_MessageDateMax.replace('{caption}', Caption));
	break;
	case 'passwordverify':
		alert(FormLib_MessagePasswordVerify.replace('{caption}', Caption));
	break;
	}
}

/* zajisteni preformatovani data */
function FormLib_FormatDate(Element){
	var ISODate = new RegExp('[0-9]{4}-[0-9]{2}-[0-9]{2}','i');
	/* sestaveni informaci o zobrazenem formatu data */
	var Format = FormLib_DateFormat.split(FormLib_DateFormatSplit);
	/* editace uzivatelem, editace systemem */
	
	if(ISODate.test(Element.value)){
		var Date = Element.value.split('-');
		Element.value='';
		var prefix = '';
		for(var I = 0;I<Format.length;I++){
			if(Format[I]=='d') Element.value+=prefix+Date[2].replace(/^0/,'');
			else if(Format[I]=='dd') Element.value+=prefix+Date[2];
			else if(Format[I]=='m') Element.value+=prefix+Date[1].replace(/^0/,'');
			else if(Format[I]=='mm') Element.value+=prefix+Date[1];
			else Element.value+=prefix+Date[0];
			prefix = FormLib_DateFormatSplit;
		}
	}
	var Date = Element.value.split(FormLib_DateFormatSplit);
	/* naplnim si pracovni hodnoty */
	for(var I = 0;I<Format.length;I++){
		if(Format[I]=='d' || Format[I]=='dd') var Day=Date[I].length<2?'0'+Date[I]:Date[I];
		else if(Format[I]=='m' || Format[I]=='mm') var Month=Date[I].length<2?'0'+Date[I]:Date[I];
		else if(Format[I]=='y') var Year=Date[I];
	}
	var Date = Year+'-'+Month+'-'+Day;
	/* overim limity */
	if(Element.getAttribute('datemin')!='' && Element.getAttribute('datemin')!=null){
		if(Element.getAttribute('datemin')>Date){
			FormLib_Alert(Element, 'datemin',false);
			Element.value=Element.getAttribute('datemin');
			FormLib_FormatDate(Element,'system');
			return false;
		}
	}
	if(Element.getAttribute('datemax')!='' && Element.getAttribute('datemax')!=null){
		if(Element.getAttribute('datemax')<Date){
			FormLib_Alert(Element, 'datemax',false);
			Element.value=Element.getAttribute('datemax');
			FormLib_FormatDate(Element,'system');
			return false;
		}
	}
	/* nastavim hidden hodnotu */
	Element.setAttribute('valuehidden',Date);
}