/**
 * AJAX-Request
 *
 * @author  Florian Preusner
 * @param   url
 * @param   target
 * @param   method      default: GET
 * @param   no_cache    default: true
 * @uses    jQuery
 */
function ajaxRequest(url, target, method, no_cache) {

  /*
   * No-Cache Zeitstempel
   * Wichtig für IE-Versionen
   */
  timestamp = new Date();
  timestamp = timestamp.getTime();
  pre_get   = (url.search(/\?/) != -1) ? "&" : "?";

  no_cache = (no_cache == null || no_cache == true) ? pre_get + "no_cache=" + timestamp : "";

  /*
   * Methode wird gesetzt
   */
  method = (method) ? method : "GET";

	$.ajax({

    type: 			method,
		url:        url,// + no_cache   @aufgabe testing
    cache:      false,
		dataType: 	"html",
		success:    function(html) {

      if(target) {

        $(target).html(html);
      }
		}
  });
}

/**
 * Formular Post via Ajax
 *
 * @author Florian Preusner
 * @param  form
 * @param  route
 * @param  target
 * @uses   jQuery
 */
function ajaxFormPost(form, route, target) {

  $.post(route, $(form).serialize(), function(data) {

    $(target).html(data);
  });
}

/**
 * Periodical Updater
 *
 * @author Florian Preusner
 * @param  url
 * @param  time
 * @uses   jQuery
 */
function pUpdater(element, url, time) {

  $(element).load(url, function() {

    setTimeout("pUpdater('" + element + "', '" + url + "', " + time + ")", time);
  });
}


function uniqid (prefix, more_entropy) {
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +    revised by: Kankrelune (http://www.webfaktory.info/)
    // %        note 1: Uses an internal counter (in php_js global) to avoid collision
    // *     example 1: uniqid();
    // *     returns 1: 'a30285b160c14'
    // *     example 2: uniqid('foo');
    // *     returns 2: 'fooa30285b1cd361'
    // *     example 3: uniqid('bar', true);
    // *     returns 3: 'bara20285b23dfd1.31879087'
    if (typeof prefix == 'undefined') {
        prefix = "";
    }

    var retId;
    var formatSeed = function (seed, reqWidth) {
        seed = parseInt(seed,10).toString(16); // to hex str
        if (reqWidth < seed.length) { // so long we split
            return seed.slice(seed.length - reqWidth);
        }
        if (reqWidth > seed.length) { // so short we pad
            return Array(1 + (reqWidth - seed.length)).join('0')+seed;
        }
        return seed;
    };

    // BEGIN REDUNDANT
    if (!this.php_js) {
        this.php_js = {};
    }
    // END REDUNDANT
    if (!this.php_js.uniqidSeed) { // init seed with big random int
        this.php_js.uniqidSeed = Math.floor(Math.random() * 0x75bcd15);
    }
    this.php_js.uniqidSeed++;

    retId  = prefix; // start with prefix, add current milliseconds hex string
    retId += formatSeed(parseInt(new Date().getTime()/1000,10),8);
    retId += formatSeed(this.php_js.uniqidSeed,5); // add seed hex string

    if (more_entropy) {
        // for more entropy we add a float lower to 10
        retId += (Math.random()*10).toFixed(8).toString();
    }

    return retId;
}
