Array.prototype.findMe = function(filter){
    var found = [];
    for (var index = 0; index < this.length; ++index) {
        var item = this[index];
        item = new String(item);
        
        if(item.match(filter)){
            found.push(item);
        }
    }
return found;
}

$j.fn.checkChilds = function(){
    var availableInputs = $j(this).find('input[class*="powermail-checkboxjs"]');
    var pos = null;
    if(availableInputs.length > 0){
        var classString = $j(availableInputs[0]).attr('class');
        if(classString){
            var classArr = classString.split(' ');
            var identifier = classArr.findMe(/powermail-checkboxjs/);
            if(identifier.length > 0){
                    identifier = identifier[0];
                    var tmpPos = identifier.split('-');
                    if(tmpPos.length > 0){
                        pos = tmpPos[3];
                        if($j(availableInputs[pos-2]).attr('checked')){
                            //console.log(pos);
                            //console.log(availableInputs[pos-1]);
                            $j(availableInputs[pos-1]).trigger('click');
                        }
                    }
            }
        }
    }
};


$j(document).ready(function () {
   var checkBox = $j("input[class*='powermail-checkboxjs']");
   $j.each(checkBox,function(index,elm){		
		
		//fetch parent to fetch container
		var parent = $j(elm).parents('fieldset:first');
		
		if(parent.length > 0 ) parent = parent[0];
		
		//read structur powermail-checkboxjs
		var classArr = $j(elm).attr("class").split(" ");
		var classCheck = classArr[classArr.length-1].split("-");
		if (classCheck.length == 2)
			classCheck.push("1");
		//if (classCheck.length == 3)
			//classCheck.push("0");
		
		//read id structur
		var idArr = $j(elm).attr("id").split("_");
		if (idArr[0] != "check")
			idArr.unshift("check");
		if (idArr.length == 2)
			idArr.push("0");
		
		
		//fetch container
		var allContainer = $j(parent).nextAll('fieldset');
		$j.each(allContainer,function(index,elm) {
			var container = allContainer[index];
                        
			//if( (elm.checked && elm.type == "checkbox") || (elm.checked && elm.type == "radio" && idArr[2] == classCheck[3]-1 ) ){
                       if( (elm.checked && elm.type == "checkbox") || (elm.checked && elm.type == "radio" && idArr[2] == classCheck[2]-1 ) ){
			 if (index < classCheck[2]) {
                                    //console.log(container);
                                    //console.log(idArr);
                                    //console.log('show');
					$j(container).show();
					var inputs = $j(container).find('input');
					$j.each(inputs,function(i,inp){
						switch(inp.getProperty('type')){
							case 'radio':
							case 'checkbox':
								inp.addClass("validate-one-required");
								break;
							
							default: inp.addClass("required");
						}
					});
					$j(container).find('textarea').addClass("required");

				}
			}else{
				if (index < classCheck[2]) {
                                     //console.log(container);
                                    // console.log(idArr);
                                     //console.log(classCheck);
                                        //console.log('hide');
                                       
					$j(container).hide();
					var inputs = $j(container).find('input');
					$j.each(inputs,function(i,inp){
						switch(inp.getProperty('type')){
							case 'radio':
							case 'checkbox':
								inp.removeClass("validate-one-required");
								break;
							
							default: inp.removeClass("required");
						}
					});
					$j(container).find('textarea').removeClass("required");

				}
			}
		});
		
		//bind on click-event
               $j(elm).bind('click',allContainer,function(ev){
			var allContainer = ev.data;
                                //console.log(this.checked && this.type == 'radio');
                                //console.log('idArr\n'+idArr);
                                //console.log('classCheck\n'+classCheck);

                                //if( (this.checked && this.type == "checkbox") || (this.checked && this.type == "radio" && idArr[2] == classCheck[3]-1 ) ){
				if( (this.checked && this.type == "checkbox") || (this.checked && this.type == "radio" && idArr[2] == classCheck[2]-1 ) ){

                                        $j.each(allContainer,function(index,elm) {
						var container = allContainer[index];
						if (index < classCheck[2]) {
							$j(container).show();
							var inputs = $j(container).find('input');
							$j.each(inputs,function(i,inp){
								switch(inp.getProperty('type')){
									case 'radio':
									case 'checkbox':
										inp.addClass("validate-one-required");
										break;
									
									default: inp.addClass("required");
								}
							});
							$j(container).find('textarea').addClass("required");
						}
					});
				}else{
					$j.each(allContainer,function(index,elm) {
						var container = allContainer[index];

						/*
                                                var clCheck = $j(container).find("input[class*='powermail-checkboxjs']");
						if (clCheck.length > 0) {
							var clArr = $j(clCheck[0]).attr("class").split(" ");
							var clCheck = clArr[clArr.length-1].split("-");
							if (clCheck.length == 2)
								clCheck.push("1");
							if (clCheck.length == 3)
								clCheck.push("0");
						}
						*/
						if (index < classCheck[2]) {
							$j(container).hide();
							var inputs = $j(container).find('input');
							$j.each(inputs,function(i,inp){
								switch(inp.getProperty('type')){
									case 'radio':
									case 'checkbox':
										inp.removeClass("validate-one-required");
										break;
									
									default: inp.removeClass("required");
								}
							});
							$j(container).find('textarea').removeClass("required");
							$j(container).checkChilds();
						}
                                                

					});
				}
		});
   });
   
   //select auto date ...
   var tmpDate = new Date();
   var formDay = $j('.powermail-day');
   var formMonth = $j('.powermail-month');
   var formYear = $j('.powermail-year');
   formDay.each(function(index,elm){
       $j(elm).attr('selectedIndex',tmpDate.getDate());
   });
   formMonth.each(function(index,elm){
       $j(elm).attr('selectedIndex',tmpDate.getMonth());
   });
   formYear.each(function(index,elm){
       var tmpArr = new Array();
       $j(elm).children('option').each(function(index,el){
             var tmpVal = $j(el).val();
             tmpArr[index]=tmpVal;
       });
       var actYear = tmpDate.getFullYear();
       var tmpKey = $j.inArray(actYear.toString(),tmpArr);
       $j(elm).attr('selectedIndex',tmpKey);
   });
	
	var checkBox = $j("fieldset[class*='praemie']");
	$j.each(checkBox,function(index,elm){
		var classArr = $j(elm).attr("class").split(" ");
		var classCheck = classArr[0].split("-");
		var parent = $j(elm).parent();
		var childs = $j(parent).find("input[id='check_uid"+classCheck[2]+"_0']")
		if (childs.checked && childs.type == "checkbox" ) {
			if (classCheck[1] == "special"){
				$j(elm).show();
			}else{
				$j(elm).hide();
			}
		}else{
			if (classCheck[1] == "special"){
				$j(elm).hide();
			}else{
				$j(elm).show();
			}
		}
		
		$j(childs).bind('click',elm,function(ev){
			var container = ev.data;
			if (this.checked && this.type == "checkbox") {
				if (classCheck[1] == "special"){
					$j(container).show();
				}else{
					$j(container).hide();
				}
			}else{
				if (classCheck[1] == "special") {
					$j(container).hide();
				}else{
					$j(container).show();
				}
			}
		});
		
	});
	/** datepicker **/
	var inputs = $j("input[class*='powermail-datecheck']");
	var dpConfig = {
			buttonText: 'Auswahl des Datums',
			showOn: 'button',
			buttonImage: 'typo3conf/ext/nfccommerceextra/res/css/ui-lightness/images/calendar.gif',
            buttonImageOnly: true,
            constrainInput: true,
            minDate: +1,
            dateFormat: 'dd.mm.yy',
            dayNamesShort: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
            dayNamesMin:['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
            monthNames: ['Januar','Februar','Maerz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],
            monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez']
            
	}

	$j.each(inputs,function(index,elm){
		$j(elm).datepicker(dpConfig);
		$j(elm).datepicker('option','onSelect',function(){valid.validateField(this);});				
	})
});