function checkForm(formid) {

	var errorfound = false;
	var labels = $(formid).getElements("label");
	
	
	var spans = $(formid).getElements("div.hint span");
	for(var i=0;i<spans.length;i++) {
		spans[i].destroy();
	}
	var pass = true;
	
	var firstInput = null;
	
    for(var i=0;i<labels.length;i++) {
    	var input = labels[i].nextSibling.nextSibling;
    	var span = null;
    	
    	if(input) { 
	    	if(input.nodeName=="SPAN") {
	    		span = input;

	    		input = input.nextSibling;
	    	}
	    	
			if(span) {
				span.className = span.className.replace('required', '');
			}
	    	input.className = input.className.replace('required', '');
	    	
	    	parent = input.getParent();
	    	parent.className = parent.className.replace('required', '');
	    	
	    	
	    	if(labels[i].className.test(/required/)&& input.className.test(/yesnoRadio/)) {
	    		var yesnoRadios = input.getElementsByTagName("INPUT");
	    		var yesnoPass = false;
	    		for(var j;j<yesnoRadios.length;j++) {
	    			if(yesnoRadios[j].checked) {
	    				yesnoPass=true;
	    			}
	    		}
	    		if(!yesnoPass) {
		    	//	pass = false;
		    	//	input.className = input.className+" required";
		    	}
	    	}
	    	else 
	    	{
			    if(labels[i].className.test(/required/)&& (input.value=='' || (input.value=='on'&&!input.checked))) {	
			    	
			    	if(input.className.test(/categories/)) {
			    		var ul = input.getParent().getElements("ul.textboxlist-bits");
			    		var editable_input = ul[0].getElements("input.textboxlist-bit-editable-input");
			    		editable_input[0].focus();
			    		ul[0].className+=" required";
			    	} else {
			    		input.className = input.className+" required";
			    		if(span) {
			    			span.className = span.className+' required' ;
			    		}
			    		
			    	}
			    	
			    	input.getParent().className += ' required';
			    		
		            if(!errorfound) {
		            	var pos = labels[i].getPosition();
		            	window.scrollTo(0, pos.y);
		            	errorfound = true;
		            	firstInput = input;
		            }
		            pass = false;
			    }
			}
		}
	}
	if(!pass && firstInput) {
		firstInput.focus();
	}
	
	return pass;
}


function initOverLabels () {
  if (!document.getElementById) return;      

  var labels, id, field;

  // Set focus and blur handlers to hide and show 
  // labels with 'overlabel' class names.
  labels = document.getElementsByTagName('label');
  for (var i = 0; i < labels.length; i++) {

    if (labels[i].className.test(/overlabel/)&&!labels[i].className.test(/overlabel-apply/)) {

      // Skip labels that do not have a named association
      // with another field.
      id = labels[i].htmlFor || labels[i].getAttribute('for');
      if (!id || !(field = document.getElementById(id))) {
        continue;
      } 

      // Change the applied class to hover the label 
      // over the form field.
      if(!labels[i].className.test(/overlabel-apply/))
	      labels[i].className = labels[i].className.replace('overlabel', 'overlabel-apply');

      // Hide any fields having an initial value.
      if (field.value !== '') {
        hideLabel(field.getAttribute('id'), true);
      }

      // Set handlers to show and hide labels.
      field.addEvent('focus', function (evt) {
	  	hideLabel(this.getAttribute('id'), true);
      });
      
      field.addEvent('click', function (evt) {
        hideLabel(this.getAttribute('id'), true);
      });
      
      field.addEvent('blur', function (evt) {
      	if(this.value==='')
          hideLabel(this.getAttribute('id'), false);
      });

      // Handle clicks to label elements (for Safari).
      labels[i].addEvent('click', function (evt) {
        var id, field;
        id = this.getAttribute('for');
        if(this.getParent().getElements(".textboxlist-bit-editable-input")[0]) {
        	var ul = this.getParent().getParent().getElements("ul.textboxlist-bits")[0];
	    	ul.getElements("input.textboxlist-bit-editable-input")[0].focus();
        	
        	document.getElementById(id).focus();
        } else {
	        if (id && (field = document.getElementById(id))) {
    	      field.focus();
        	}
        }
        Event.stop(evt);
      });

    }
  }
};

function hideLabel (field_id, hide) {
  var field_for;
  var labels = document.getElementsByTagName('label');
  for (var i = 0; i < labels.length; i++) {
    field_for = labels[i].htmlFor || labels[i].getAttribute('for');
    if (field_for == field_id) {
      labels[i].style.textIndent = (hide) ? '-10000px' :'0px';
      return true;
    }
  }
}


function showHint(element) {
	// hide all other hints
	$$('div.hint').each(function(el) {
		el.fade(0);
	});
	hint = element.getParent().getElements('.hint')[0];
	hint.setStyle('display', 'inline');
	hint.fade(1);
}

function hideHint(element) {
	hint = element.getParent().getElements('.hint')[0];
	hint.fade(0);
}



addImg = function(thumb) {
	$('result_thumbs').setStyle('display', 'block');
	//$('result_thumbs').adopt( new Element('img', {src: thumb, width: 114, height: 76}) );
	
	var tr = new Element('tr', {class:'img_add', id:'tr_'+thumb.replace(/[^A-Za-z0-9]/g, '_')});
	var td1 = new Element('td', {});
	var img = new Element('img', {src: thumb, width: 114, height: 76});
	td1.adopt(img);
	var td2 = new Element('td', {});
	var input = new Element('textarea', {id:'inp_'+thumb.replace(/[^A-Za-z0-9]/g, '_'), 
		name:"image_descriptions[]", title: 'Add description' });
	var input2 = new Element('input', {id:'inpsrc_'+thumb.replace(/[^A-Za-z0-9]/g, '_'), 
		name:"image_src[]", value: thumb, styles:{display:'none'} });	
	td2.adopt(input); td2.adopt(input2); 
	var a = new Element('a', {class:'thumb_delete', html:'Delete', href:'#', id:'del_'+thumb.replace(/[^A-Za-z0-9]/g, '_')});
	a.addEvent('click', function(evt) {
		Event.stop(evt);
		$(this.id.replace('del_', 'tr_')).destroy();
	});
	var td3 = new Element('td', {});
	td3.adopt(a);
	tr.adopt(td1); tr.adopt(td2); tr.adopt(td3); 
	$('result_thumbs').adopt( tr );
	
	(function(){ $('result_thumbs').scrollTo(100000,0); }).delay(300);
	//new Sortables($('result_thumbs'));
}

function focusOnFirstEmptyField(id) {
	var inputs = $(id).getElements('input, textarea, select');
	
	for(var i=0;i<inputs.length;i++) {
		if(inputs[i].value==""&&inputs[i].className!="textboxlist-bit-editable-input") { 
			if(inputs[i].className.test(/categories/)) {
	    		var ul = inputs[i].getParent().getElements("ul.textboxlist-bits")[0];
	    		ul.getElements("input.textboxlist-bit-editable-input")[0].focus();
	    	} else {
	    		inputs[i].focus();
	    	}
			break; 
		}
	}
}

window.addEvent("domready", function() {
	$$('ul.switch_tabs a').each(function(el) {
		el.addEvent("click", function(evt) {
			$$('div.block_hide').each(function(el){
				el.setStyle('display', 'none');
			})
			$(this.id.replace(/switch_/, 'div_')).setStyle('display', 'block');
			$$('ul.switch_tabs a').each(function(el) {
				el.className = '';
			});		
			evt.target.className = 'selected';
			Event.stop(evt);
		});
	});
});

function updateIds(replacements, multiple_base, multiple_number) {
	replacements.each(function(el) {

		if(el.id)
			el.id = el.id.replace(multiple_base+'_blank', multiple_base+'_'+multiple_number);
		if(el.htmlFor)
			el.htmlFor = el.htmlFor.replace(multiple_base+'_blank', multiple_base+'_'+multiple_number);
		if(el.name) {
			el.name = el.name.replace('[0]', '['+multiple_number+']')
		}
			
		updateIds(el.getChildren(), multiple_base, multiple_number);
	});
}

function addMultiple(multiple) {
	
	var latest = 0;
	for(var i=0;i<100;i++) {
		if($('_'+multiple+'_'+i))
			latest = i;
	}
	
	var copy = $('_'+multiple+'_blank').clone(true, true);
	copy.id = '_'+multiple+'_'+(latest+1);
	copy.fade('hide');
	copy.setStyle('display', 'block');
	updateIds(copy.getChildren(), multiple, latest+1);
	
	copy.inject('_'+multiple+'_'+latest,'after');
	copy.fade('in');

	if($('a_multiple_delete_'+multiple+'_'+(latest+1)))
	$('a_multiple_delete_'+multiple+'_'+(latest+1)).addEvent('click', function(evt) {
		deleteMultiple(multiple, latest+1);
		Event.stop(evt);
	});
	
	initNewMultiple(multiple, latest+1);
}

function deleteMultiple(multiple, num) {
	new Fx.Tween($('_'+multiple+'_'+num),{ onComplete: function(el){ el.dispose(); } }).start('opacity', 1, 0);
	//$('_'+multiple+'_'+num).dispose();
}
