/**
 * cyInfo v. 0.1.0
 * Info generates toggleable infos from a icon/text-combination.
 * 
 * Usage: $('.info').cyInfo();
 */
 
(function($) { 
  $.fn.extend({  
    cyInfo: function(options) {
      
     /* alle instanzen durchlaufen und initialisieren */
	 return this.each(function() {
	   if($(this).find('.icon').length > 0 && $(this).find('.text').length > 0) {
		 var instance = $(this);
		   
		 $(instance).find('.text').toggle();
		   
		 $(instance).find('.icon').click(function() {
		   $(instance).find('.text').toggle(500);
		 });
	   }
	 });
    } 
  }); 
})(jQuery);


/* url, an die die request geschickt werden sollen */
var serviceURL = 'http://svwwwt01-10.swd.swd-ag.de/formmaker/services/validation.php';

/* bild als marker für laufenden request */
var errorMarkerImage   = ['./images/error.png', 'Enthält Fehler.', 'Enthält Fehler.'];
var requestMarkerImage = ['./images/loading.gif', 'Lade...', 'Lade...'];
var successMarkerImage = ['./images/ok.png', 'Enthält keine Fehler.', 'Enthält keine Fehler.'];

/* anzahl der fehler */
var errors = 0;

(function($) { 
  $.fn.extend({  
    cyFieldCheck: function(options) {
      
      /* alle instanzen durchlaufen und initialisieren */
	  return this.each(function() {
          
        function check() {
          data.value = $(curObj).attr('value');
          $(curObj).addClass('pending');
          $.post(serviceURL, data, function(returnData) {
            if(returnData.valid) {
              
              /* input */
              $(curObj).removeClass('error pending');
              $(curObj).addClass('success');
              
              /* label */
              $('label[for=\''+ $(curObj).attr('id') +'\']').removeClass('error');
              
              /* message */
              var results = $(curObj).closest('.cy-field').find('p.error-'+ $(curObj).attr('id'));
              errors -= results.length;
              results.remove();
              
              /* tabs? */
              if($(curObj).closest('.ui-tabs').length > 0) {
                var tabname = $(curObj).closest('.ui-tabs-panel').attr('id');
                $(curObj).closest('.ui-tabs').find('a[href=#'+ tabname +']').removeClass('error');
              }
              
            } else {
              
              /* kein upload feld */
              if($(curObj).attr('type') != 'file') {
                
                /* input */
                $(curObj).removeClass('success pending');
                $(curObj).addClass('error');
                
                /* label */
                $('label[for=\''+ $(curObj).attr('id') +'\']').addClass('error');
                
                /* message */
                if($('.error-'+ $(curObj).attr('id')).length > 0) {
                  $(curObj).closest('.cy-field').find('p.error-'+ $(curObj).attr('id')).remove();
                }
                $(curObj).closest('.cy-field').append('<p class="error-message error-'+ $(curObj).attr('id') +'">'+ returnData.message +'</p>');
		$(curObj).closest('.cy-field').trigger('errorAppended');                

                /* tabs? */
                if($(curObj).closest('.ui-tabs').length > 0) {
                  var tabname = $(curObj).closest('.ui-tabs-panel').attr('id');
                  $(curObj).closest('.ui-tabs').find('a[href=#'+ tabname +']').addClass('error');
                }
                
                errors++;
              }
            }
          }, 'json');
        }
        
        var curObj = this;
        
        var data = new Object();
        for(var i in options) {
        
        	
          data['method_'+ i]  = options[i].method;
          data['message_'+ i] = options[i].msg;
          
          if(options[i].params) {
            for(var j in options[i].params) {
              data['params_'+ i +'_'+ j] = addslashes(options[i].params[j]);
            }
          }
        }
        
        if($(this).closest('.cy-date').length > 0) {
          $(this).change(function() {
            check();
          });
        } else {
          $(this).blur(function() {
            check();
          });
        }
      });
    }
  });
})(jQuery);

$(function() {
  $('input[type=radio]').change(function() {
    
    /* input */
    $(this).removeClass('error pending');
    $(this).addClass('success');
    
    /* label */
    $('label[for=\''+ $(this).attr('id') +'\']').removeClass('error');
    
    /* message */
    var results = $(this).closest('.cy-field').find('p.error-'+ $(this).attr('name'));
    errors -= results.length;
    results.remove();
    
    /* tabs? */
    if($(this).closest('.ui-tabs').length > 0) {
      var tabname = $(this).closest('.ui-tabs-panel').attr('id');
      $(this).closest('.ui-tabs').find('a[href=#'+ tabname +']').removeClass('error');
    }
  });
  
  $('input[type=checkbox]').change(function() {
    
    /* input */
    $(this).removeClass('error pending');
    $(this).addClass('success');
    
    /* label */
    $('label[for=\''+ $(this).attr('id') +'\']').removeClass('error');
    
    /* message */
    var results = $(this).closest('.cy-field').find('p.error-'+ $(this).attr('name'));
    errors -= results.length;
    results.remove();
    
    /* tabs? */
    if($(this).closest('.ui-tabs').length > 0) {
      var tabname = $(this).closest('.ui-tabs-panel').attr('id');
      $(this).closest('.ui-tabs').find('a[href=#'+ tabname +']').removeClass('error');
    }
  });

  $('.tabs ul').removeClass('anchors');
  $('.tabs h5').addClass('hidden');
  $('.tabs').tabs();
  
  $('.accordion').accordion({
    autoHeight: false
  });
  
  $('.notice').cyInfo();
});

function getYear(add) {
  var date = new Date();
  return date.getYear() + 1900 + add;
}

function addslashes(str) {
  return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\u0000/g, "\\0");
}

function getParameterByName(name) {   
  name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); 
  
  var regexS = "[\\?&]" + name + "=([^&#]*)";   
  var regex = new RegExp(regexS);   
  var results = regex.exec(window.location.href);   
  
  if(results == null) {
    return "";
  } else  {
    return decodeURIComponent(results[1].replace(/\+/g, " ")); 
  } 
}
