function canBeValidate(id){
	return jQuery('#'+id+':visible').length == 1;
}

function updateDayOptions(dayID, monthID, yearID){
	iDay = jQuery('#'+dayID).val();
	iMonth = jQuery('#'+monthID).val();
	iYear = jQuery('#'+yearID).val();
	jQuery('#'+dayID).empty();
	maxDays = 32 - new Date(iYear, iMonth-1, 32).getDate();
	for(i=1; i<=maxDays; i++){
		jQuery('#'+dayID).append('<option value="'+i+'">'+i+'</value>');
	}
	jQuery('#'+dayID).val(Math.min(maxDays, iDay));
}

function changeVisible(node, visible){
	element = jQuery(node);
	if(visible){
   		element.show("slow");
   	}else{
   		element.hide("slow");
   	}
}

function setNodeVisibility(node, visible, all, context){
	changeVisible(node, all);
	var childs = node.childNodes;
	for(var i=0; i<childs.length; i++){
		var child = childs[i];
		var jChild = jQuery(child);
		if(jChild.hasClass('visibilityTarget')){
			var targetChilds = child.childNodes;
			for(var j=0; j<targetChilds.length; j++){
				var targetChild = targetChilds[j];
				var jTargetChild = jQuery(targetChild);
				if(jTargetChild.hasClass('visibilityContext')){
					changeVisible(jTargetChild, all && visible && context);
				}
			}
			changeVisible(jChild, all && visible);
		}else if(jChild.hasClass('visibilityController')){
			setVisibilityController(child, visible);
		}else if(jChild.hasClass('visibilityHandler')){
			var handler = child;
			var controller = null;
			while(controller == null){
				var handlerChilds = handler.childNodes;
				for(var j=0; j<handlerChilds.length; j++){
					var handlerChild = handlerChilds[j];
					var jHandlerChild = jQuery(handlerChild);
					if(jHandlerChild.hasClass('visibilityController')){
						controller = handlerChild;
						break;
					}else if(jHandlerChild.hasClass('visibilityHandler')){
						handler = handlerChild;
						break;
					}
				}
			}
			setVisibilityController(controller, visible);
		}
	}
}

function setVisibilityController(nodeController, visible){
	var inputs = nodeController.getElementsByTagName('input');
	for(var i=0; i<inputs.length; i++){
		var input = inputs[i];
		if(input.type == 'checkbox'){
			input.checked = visible;
		}
	}
}

function updateVisibility(checkbox){
	var checked = checkbox.checked;
	var currentVisibilityNode = checkbox.parentNode;
	while(!jQuery(currentVisibilityNode).hasClass('visibilityElement')){
		currentVisibilityNode = currentVisibilityNode.parentNode;
	}
	var index = 0;
	if(jQuery(currentVisibilityNode).hasClass('showNext')){
		var visibilityChilds = currentVisibilityNode.parentNode.childNodes;
		var visibilityElements = new Array();
		var index = 0;
		var currentIndex = 0;
		for(var i=0; i<visibilityChilds.length; i++){
			var visibilityChild = visibilityChilds[i];
			if(jQuery(visibilityChild).hasClass('visibilityElement')){
				if(visibilityChild == currentVisibilityNode){
					currentIndex = index;
				}
				visibilityElements[index++] = visibilityChild;
			}
		}
		for(var i=0; i<currentIndex; i++){
			setNodeVisibility(visibilityElements[i], true, true, !(i==0 && currentIndex==1 && !checked));
		}
		setNodeVisibility(visibilityElements[currentIndex], checked, true, currentIndex!=0);
		for(var i=currentIndex+1; i<visibilityElements.length; i++){
			setNodeVisibility(visibilityElements[i], false, i==currentIndex+1 && checked, false);
		}
	}else{
		setNodeVisibility(currentVisibilityNode, checked, true, true);
	}
}

function getRadioIndex(radio){
	var visibilityControllers = radio.parentNode.parentNode.childNodes;
	var radioIndex = 0;
	for(var i=0; i<visibilityControllers.length; i++){
		var visibilityController = visibilityControllers[i];
		if(jQuery(visibilityController).hasClass('visibilityController')){
			var controllerChilds = visibilityController.childNodes;
			for(var j=0; j<controllerChilds.length; j++){
				if(controllerChilds[j] == radio){
					return radioIndex;
				}
			}
			radioIndex++;
		}
	}
	return -1;
}

function updateGroupVisibility(radio){
	var checked = radio.checked;
	if(!checked){return;}
	var index = getRadioIndex(radio);
	var currentVisibilityNode = radio.parentNode;
	while(!jQuery(currentVisibilityNode).hasClass('visibilityElement')){
		currentVisibilityNode = currentVisibilityNode.parentNode;
	}
	var childs = currentVisibilityNode.childNodes;
	for(var i=0; i<childs.length; i++){
		var child = childs[i];
		var jChild = jQuery(child);
		if(jChild.hasClass('visibilityTarget')){
			var targetChilds = child.childNodes;
			var targetIndex = 0;
			for(var j=0; j<targetChilds.length; j++){
				var targetChild = targetChilds[j];
				var jTargetChild = jQuery(targetChild);
				if(jTargetChild.hasClass('visibilityTargetElement')){
					changeVisible(jTargetChild, targetIndex==index);
					targetIndex++;
				}
			}
		}
	}
}

function updatePeriodAges(periodControl){
	var value = 0;
	var jPeriodControl = jQuery(periodControl);
	if(periodControl.tagName == 'SELECT'){
		value = jPeriodControl.val();
	}else{
		value = jPeriodControl.text();
	}
	value = parseInt(value);
    var childs = periodControl.parentNode.childNodes;
    var start = false;
    for(var i=0; i<childs.length; i++){
    	var child = childs[i];
		var jChild = jQuery(child);
    	if(child == periodControl){
    		start = true;
    	}else if(start && jChild.hasClass('periodYearText')){
    	    var text = ' lat';
    	    if(value==1){
    	        text = ' rok';
    	    }else if(value<5){
    	        text = ' lata';
    	    }
    		jChild.text(text);
    		return;
    	}
    }
}

jQuery(function(){
	jQuery(document).ready(function(){
        //jQuery(".Phone").mask("( 99 ) 999 - 99 - 99");
        //jQuery(".Mobile").mask("999 - 999 - 999");
        //jQuery(".PostCode").mask("99 - 999");
        //jQuery(".NIP").mask("999 - 999 - 99 - 99");
        //jQuery(".PESEL").mask("99999999999");
		jQuery(".visibilityController :checkbox").click(function(){
			updateVisibility(this);
		});
		jQuery(".visibilityController input:radio").click(function(){
			updateGroupVisibility(this);
		});
		jQuery(".visibilityController input:radio").each(function(){
			updateGroupVisibility(this);
		});
		jQuery(".visibilityActualize .visibilityController :checkbox").each(function(){
			updateVisibility(this);
		});
		jQuery(".periodNumberInput").change(function(){
			updatePeriodAges(this);
		});
		jQuery(".periodNumberInput").each(function(){
			updatePeriodAges(this);
		});
		jQuery(".periodNumberText").each(function(){
			updatePeriodAges(this);
		});
		jQuery(".jScroll #tableWrapper2 #scrolltab2").scrollFollow({
            container: 'tableWrapper2'
        });
        jQuery("#scrolltab tr").hover(function(){
        	jQuery(this).addClass("highlight");
        }, function(){
        	jQuery(this).removeClass("highlight");
        });
        jQuery(".jToggleController").click(function() { 
			jQuery(this).next(".jToggleTarget").toggle("normal");
		});
	});
});
