/* 16.1.2006 10:25:29 - vrati hodnotu objektu */
function getValue(field_id){
  var field = getObject(field_id);
  if(!isNull(field)){
    if(field.trim != "undefined"){
      //field.value = trim(field.value);
    }
    return field.value;
  }
  return null;  
}

/* 16.1.2006 10:25:29 - vrati hodnotu objektu */
function getValueNoTrim(field_id){
  var field = getObject(field_id);
  if(!isNull(field)){
    return field.value;
  }
  return null;  
}

function isUrl(s) {
  if(!isBlank(s)){
  	var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
	  return regexp.test(s);
	}	
	return false;	
}


function isField(field){
  return isObject(getObject(field));
}

function isObject(a) {
    return (a && typeof a == 'object') || isFunction(a);
}

function isNumber(a) {
    return typeof a == 'number' && isFinite(a);
}

function isFieldBlank(field_id){
  return isBlank(getValue(field_id));
}

function isBlank(value){
  if(value != null){
    return value.length == 0;   
  }
  return true;
}

function isZip(field_id){
  var value = getValue(field_id);
  if(value != null){
    var spr=/[0-9]{5}/;     
    return spr.test(value);
  }
  return false;
}

function isPhone(field_id){
  var value = getValue(field_id);
  if(value != null){
    var spr=/[0-9\.\+\/\-]{8,}/;     
    return spr.test(value);
  }
  return false;
}

function equalTo(field1_id, field2_id){
  
  var value1 = trim(getValue(field1_id));
  var value2 = trim(getValue(field2_id));
       
  if(value1 != null && value2 != null){
    return (value1.toString() == value2.toString());
  }
  return false;
}

function isEmail(field_id){
  var value = getValue(field_id);
  if(value != null){
    var spr=/[_a-zA-Z0-9\.\-]+@[_a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4}/;     
    return spr.test(value);
  }
  return false;
}

function selectField(field_id){
  var field = getObject(field_id);
  if(!isNull(field)){
    if(field.focus && !fieldSelected){
      field.focus();
      fieldSelected = true;
    }
  }
  return true;  
}

Validator = function(){  

  // Vraci pointer na objekt
  this.getField = function(field_id){
    return document.getElementById(field_id);
  }
  
  // Kontroluje, jestli je v predanem select ID vybrana alespon jedna option
  this.isOptionSelected = function(select_id){
    var field = this.getField(select_id);
    //return (field.selectedIndex != -1 && parseInt(field.options[field.selectedIndex].value) > 0);
    return (field.selectedIndex != -1);
  }
  
  this.isBlank = function(value) {
    value = trim(value);    
    if(value != null){
      return value.length == 0;   
    }
    return true;
  }
  
  this.isUrl = function(s) {
  if(!this.isBlank(s)){
  	var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
	  return regexp.test(s);
	}	
	return false;	
}

  this.isEmail = function(email){
    if(email != null){
      var spr=/[_a-zA-Z0-9\.\-]+@[_a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4}/;     
      return spr.test(email);
    }
    return false;
  }
  
  this.equalTo = function(field1_id, field2_id){
  
  var value1 = trim(this.getValue(field1_id));
  var value2 = trim(this.getValue(field2_id));
       
  if(value1 != null && value2 != null){
    return (value1.toString() == value2.toString());
  }
  return false;
}

  this.focus = function(input_id){  
    this.getField(input_id).focus();
  }
  
  this.getValue = function(input_id){  
    var field = this.getField(input_id);    
    if(field.options != undefined){
      return field.options[field.selectedIndex].value;
    }else{
      return field.value;
    }
  }
  
  this.isEmpty = function(field_id){    
    return(this.isBlank(this.getValue(field_id)));
  }
  
}
