///////////////////////////////////////////////////////////////
//                                                           //
//  JS-Validator v0.1                                        //
//  By Alex Ovseyenko (alex@mixtline.com)                    //
//  Free to use and change!                                  //
//                                                           //
///////////////////////////////////////////////////////////////
function trim(s){
	return s.toString().replace(/^\s+/,'').replace(/\s+$/,'')
}
function vl(fn){
	return trim(document.forms[fname||'kform'].elements[fn].value)
}
function vres(v,m){return v?false:'\n'+m}
function notEmpty(){
	var v=true
	var m=''
	for(var i=0;i<arguments.length;i++){
		var f=arguments[i]
		
		if(vl(f)==''){
			v=false
			m+=flds[f]+"\n"
		}
	}
	return vres(v,'You must fill out the fields:\n'+m)
}
function notEmpty1(){
	var v=false
	var m=''
	for(var i=0;i<arguments.length;i++){
		var f=arguments[i]
		v=v&&vl(f)!=''
		m+=flds[f]+"\n"
	}
	return vres(v,'You must fill out one of the fields:\n'+m)
}
function isNumeric(){
	var v=true
	var m=''
	for(var i=0;i<arguments.length;i++){
		var f=arguments[i]
		if (isNaN(vl(f))){
			v=false
			m+=flds[f]+"\n"
		}
	}
	return vres(v,'Next fields must contain only digits:\n'+m)
}
function isEmail(){
	var v=true
	var m=''
	for(var i=0;i<arguments.length;i++){
		var f=arguments[i]
		if(f && f && (trim(f)!="")&&
			(!trim(f).match(/^[A-Za-z0-9][-\w]*(\.[A-Za-z0-9][-\w]*)*@[A-Za-z0-9][-\w]*(\.[A-Za-z0-9][-\w]*)*\.[a-zA-Z]{2,4}$/))
		){
			v=false
		}
	}
	return v
}
function isUrl(){
	var v=true
	var m=''
	for(var i=0;i<arguments.length;i++){
		var f=arguments[i]
		if ((vl(f)!="")&&
			(!vl(f).match(/^[A-Za-z0-9][-\w]*(\.[A-Za-z0-9][-\w]*)*\.[a-zA-Z]{2,6}$/))
		){
			v=false
			m+=flds[f]+"\n"
		}
	}
	return vres(v,'Next fields must contains web address:\n'+m)
}
function eqPass(p1,p2){
	return vres(vl(p1)==vl(p2),'Fields "Password" and "Confirm password" must be same!')
}
function onlyLetter(){
	var v=true
	var m=''
	for(var i=0;i<arguments.length;i++){
		var f=arguments[i]
		if ((vl(f)!="")&&(vl(f).match(/[^A-Za-z0-9]/))){
			v=false
			m+=flds[f]+"\n"
		}
	}
	return vres(v,'Next fields must contains only letters:\n'+m)
}
function limitedChar(){
	var v=true
	var m=''
	for(var i=0;i<arguments.length;i++){
		var f=arguments[i]
		if ((vl(f)!="")&&(vl(f).match(/[^-A-Za-z0-9_ ]/))){
			v=false
			m+=flds[f]+"\n"
		}
	}
	return vres(v,'Next fields must contains only letters or digits:\n'+m)
}
function oneLang(){
	var v=true
	var m=''
	for(var i=0;i<arguments.length;i++){
		var f=arguments[i]
		if (
			(vl(f)!="")&&
			(vl(f).match(/[A-Za-z]/))
		){
			v=false
			m+=flds[f]+"\n"
		}
	}
	return vres(v,'Next fields must contains only letters:\n'+m)
}
function minLength(len){
	var v=true
	var m=''
	for(var i=1;i<arguments.length;i++){
		var f=arguments[i]
		if ((vl(f)!="")&&(vl(f).length<len)){
			v=false
			m+=flds[f]+"\n"
		}
	}
	return vres(v,'You must type not less that '+len+' characters for next fields:\n'+m)
}
function valid(){
	var v=true
	var m=''
	for(var i=0;i<arguments.length;i++){
		var f=arguments[i]
		if(f){
			v=false
			m+=f
		}
	}
//	if(!v) alert(m)
	if(!v) err(m)
	return v
}

function validateDelete(f, wantdelete) {
  if (validateChecked(f, wantdelete, 'remove')) return confirm("You are about to "+wantdelete+" selected items.\nDo you really want to continue?")
}

function validateChecked(f, wantdelete, action, minN, maxN) {
  if (!action) action = 'remove';
  var p = f && f.getElementsByTagName? f.getElementsByTagName('INPUT') : document.getElementsByTagName('INPUT')
  var t = false
  var n = 0
  for (i=0; i<p.length; i++) {
    o = p[i]
    if (o.type == 'checkbox' && o.checked) {
      t = true
      if (minN || maxN) {
        n++
      } else {
        break
      }
    }
  }
  if (!t) {
    alert('Please select the '+wantdelete+' you would like to '+action)
    return false
  }
  if ((minN || maxN) && (n < minN || n > maxN)) {
    if (minN == maxN || minN == 0) {
      alert('You can select only '+maxN+' '+wantdelete)
    } else {
      alert('You must select from '+minN+' to '+maxN+' '+wantdelete)
    }
    return false
  }
  return true
}


