function PageClass() {
}

PageClass.prototype.validate = function(formId) {

	var result = true;
	if($('#feedBackName').val().length == 0) {
		$('#feedBackName').parent().addClass('formSelected');
		result = false
	} else {
		$('#feedBackName').parent().removeClass('formSelected');
	}

	if($('#feedBackEmail').val().length == 0) {
		$('#feedBackEmail').parent().addClass('formSelected');
		result = false
	} else if(!$('#feedBackEmail').val().match(/^[a-zA-Z0-9\-\._]+@[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,6}/)) {
		$('#feedBackEmail').parent().addClass('formSelected');
		result = false
	} else {
		$('#feedBackEmail').parent().removeClass('formSelected');
	}

	if($('#feedBackPhone').val().length == 0) {
		$('#feedBackPhone').parent().addClass('formSelected');
		result = false
	} else {
		$('#feedBackPhone').parent().removeClass('formSelected');
	}

	if($('#feedBackText').val().length == 0) {
		$('#feedBackText').parent().addClass('textareaSelected');
		result = false
	} else {
		$('#feedBackText').parent().removeClass('textareaSelected');
	}
	return result;
}


PageClass.prototype.productTab = function(tab) {
	var link = $(tab);
	$$('.tabs a[id^=link-]').each(function(el){
		el.className = (el.id == tab ? 'selected' : '');
	});
	tab = tab.replace('link-', 'tabs-');
	$$('.tabs-in div[id^=tabs-]').each(function(el){
		el.className = (el.id == tab ? '' : 'hide');
	});
}

PageClass.prototype.calculate = function(){
	var sum = 0;
	var localSumm = 0;
	$$('input[name=calc_shape]').each(function(el) {
		if(el.checked) {
			$('design-b').innerHTML = Page.pricePrepare(el.value);
			localSumm = parseFloat(el.value);
		}
	});
// 	alert(el.value);
	if($('calc_shape_2').checked) {
		$('calc_size').style.display = 'none';
		$('calc_diam').style.display = 'block';
		if ($('calc_diam').value) {
			localSumm *= parseFloat($('calc_diam').value);
		}
	} else {
		$('calc_size').style.display = 'block';
		$('calc_diam').style.display = 'none';
		if ($('calc_size').value) {
			localSumm *= parseFloat($('calc_size').value);
		}
	}
	if ($('calc_depth').value) {
		localSumm *= parseFloat($('calc_depth').value);
	}
	sum += Math.round(localSumm);
	$('design-b').innerHTML = this.pricePrepare(Math.round(localSumm/100)*100);
	
/*
	localSumm = this.checkField('calc_headlamp');
	if ($('calc_headlamp_count').value) {
		localSumm *= parseFloat($('calc_headlamp_count').value);
	}
	sum += Math.round(localSumm);
	$('light-b').innerHTML = this.pricePrepare(localSumm, 1);
*/	
	if($('calc_skimmer_3').checked && $('calc_skimmer_1').checked) {
		localSumm = $('calc_skimmer_1_3').value
		sum += Math.round(localSumm);
		$('skimm-b').innerHTML = this.pricePrepare(localSumm, 1);
	} else	if($('calc_skimmer_3').checked && $('calc_skimmer_2').checked) {
		localSumm = $('calc_skimmer_2_3').value
		sum += Math.round(localSumm);
		$('skimm-b').innerHTML = this.pricePrepare(localSumm, 1);
	} else {
	  sum += this.checkField('calc_skimmer', 'skimm-b', 1);
	}

	sum += this.checkField('calc_headlamp', 'light-b', 1);
	sum += this.checkField('calc_ladder', 'scale-b', 1);
	sum += this.checkField('calc_filter', 'filtr-b', 1);
	sum += this.checkField('calc_hole', 'filtrs-b', 1);
	sum += this.checkField('calc_ion', 'autochlor-b', 1);
	sum += this.checkField('calc_undertow', 'proud-b', 1);
	sum += this.checkField('calc_hole', 'filtrs-b', 1);
	
	
	
	localSumm = 0;
	localSumm += this.checkField('calc_earth');
	localSumm += this.checkField('calc_electro');
	$('warm-b').innerHTML = this.pricePrepare(localSumm, 1);
	sum += localSumm;
	
	sum += parseInt($('calc_other').value);
	$('calc_final').innerHTML = this.pricePrepare(sum, 0);
}

PageClass.prototype.checkField = function(name, result, plus){
	var sum = 0;
	$$('input[name^=' + name + ']').each(function(el){
		if (el.checked) {
			sum += el.value - 0;
		}
	});
	if (result && $(result)) {
		$(result).innerHTML = Page.pricePrepare(sum, plus);
	}
	return parseInt(sum);
}


PageClass.prototype.pricePrepare = function(price, plus){
	var reg = /([0-9]+)([0-9]{3})(,[0-9]{2})?/;
	return (plus ? '+ ' : '') + new String(price).replace(reg, '$1 $2$3') + ' Kč';
}

//////////////////////////////////////////////////////////////////////

function ValidatorClass() {
}

ValidatorClass.prototype.validateField = function(value, type, params) {
  switch(type) {
    // Value is empty
    case 'empty':
      if(value == '' || value == 0) {
        return false;
      }
      break;
    // Value is integer
    // @param1: if > 0 value hvae to be positive, if < 0 - negative
    case 'int':
      if(new Number(value) != value) {
        return false;
      }
      if(typeof params[1] != 'undefined' && params[1] == 1 && value < 0) {
        return false;
      }
      if(typeof params[1] != 'undefined' && params[1] == -1 && value > 0) {
        return false;
      }
      break;
    // Value string length
    // @param1: min length
    // @param2: max length
    case 'strlen':
      value = new String(value);
      if(typeof params[1] != 'undefined' && typeof params[2] != 'undefined') {
        if(value.length < params[1] || value.length > params[2]) {
          return false;
        }
      } else if(typeof params[1] != 'undefined') {
        if(value.length < params[1]) {
          return false;
        }
      }
      break;
    // Checkbox 
    case 'checkbox':
      if(!value) {
        return false;
      }
      break;
    // AccountNumber
    case 'account':
      var reg = /^([0-9]+-)?[0-9]+\/[0-9]{4}$/;
      if(!reg.test(value)) {
        return false;
      }
      break;
    // AccountNumber
    case 'account-short':
      //var reg = /^[0-9]+\/[0-9]{4}$/;
      var reg = /^([0-9]+-)?[0-9]+$/;
      if(!reg.test(value)) {
        return false;
      }
      break;
    // Value is email
    case 'email':
      var reg = /^[a-zA-Z0-9\.\-]+@[a-zA-Z0-9\.\-]+\.[a-z]{2,5}$/;
      if(!reg.test(value)) {
        return false;
      }
      break;
    // Default - like an empty
    default:
      if(!value) {
        return false;
      }
      break;
  }
  return true;
}

ValidatorClass.prototype.validateGetFunctions = function(alt) {
  var functions = new Array();
  var fs = alt.split('|');
  for(var i=0; i<fs.length; i++) {
    functions.push(fs[i].split(':'));
  }
  return functions
}

ValidatorClass.prototype.validateForm = function(formId, elementId) {
  if(!elementId) {
    elementId = false;
  };
  var functions;
  var haveErrors = false;
  var localError = false;
  var focusMoved = false;
  var els = $(formId).getElementsByTagName('select');
  for(var i=0; i<els.length; i++) {
    if(els[i].style.display == 'none' || els[i].parentNode.style.display == 'none') continue;
    if(els[i].id) els[i].alt = 'empty'; else continue;
    if(els[i].alt.length > 0 && (!elementId || els[i].id == elementId) && !els[i].disabled) {
      if(functions = this.validateGetFunctions(els[i].alt)) {
        localError = false;
        for(var j=0; j<functions.length; j++) {
          if(!this.validateField(els[i].value, functions[j][0], functions[j])) {
            if(els[i].className.indexOf('inputError') == -1) {
              els[i].className = els[i].className + 'inputError';
            }
            if($(els[i].id + '_label')) {
              $(els[i].id + '_label').className = $(els[i].id + '_label').className + 'inputError';
            }
            localError = haveErrors = true;
            els[i].onblur = function() {Validator.validateForm(formId, this.id)}
/*
            if(!focusMoved) {
              els[i].focus();
              focusMoved = true;
            }
*/
            break;
          }
        }
        if(!localError) {
          els[i].className = els[i].className.replace('inputError', '');
          if($(els[i].id + '_label')) {
            $(els[i].id + '_label').className = $(els[i].id + '_label').className.replace('inputError', '');
          }
        }
      }
    }
  }
  var els = $(formId).getElementsByTagName('input');
  for(var i=0; i<els.length; i++) {
    if(els[i].alt.length > 0 && (!elementId || els[i].id == elementId) && !els[i].disabled) {
      if(els[i].value == 'Jméno a příjmení') els[i].value = '';
      if(els[i].value == 'Celá adresa') els[i].value = '';
      if(els[i].value == 'E-mail') els[i].value = '';
      if(els[i].value == 'Telefon') els[i].value = '';
      if(els[i].parentNode.style.display == 'none') continue;
      if(functions = this.validateGetFunctions(els[i].alt)) {
        localError = false;
        for(var j=0; j<functions.length; j++) {
          if(!this.validateField(els[i].value, functions[j][0], functions[j])) {
            if(els[i].className.indexOf('inputError') == -1) {
              els[i].className = els[i].className + ' inputError';
            }
            if($(els[i].id + '_label')) {
              $(els[i].id + '_label').className = $(els[i].id + '_label').className + ' inputError';
            }
            localError = haveErrors = true;
            els[i].onblur = function() {Validator.validateForm(formId, this.id)}
            if(!focusMoved) {
              els[i].focus();
              focusMoved = true;
            }
            break;
          }
        }
        if(!localError) {
          els[i].className = els[i].className.replace('inputError', '');
          if($(els[i].id + '_label')) {
            $(els[i].id + '_label').className = $(els[i].id + '_label').className.replace('inputError', '');
          }
        }
      }
    }
  }
  return !haveErrors;
}

var Validator = new ValidatorClass();
var Page = new PageClass();
