Plappadu = new Object;

Plappadu.Environment = new Object;

Plappadu.Environment.showPublicTimeline = true;

Plappadu.Environment.showAlienProfile = false;
Plappadu.Environment.showAlienProfileNick = "";

Plappadu.Environment.activationRequest = false;
Plappadu.Environment.activationRequestUserId = "";
Plappadu.Environment.activationRequestActivationKey = "";

Plappadu.Environment.actServerEnv = $wwwhome;

Plappadu.Environment.showAlienProfile = false;
Plappadu.Environment.showHome = false;
Plappadu.Environment.showMyFollowers = false;
Plappadu.Environment.showMyFriends = false;
Plappadu.Environment.showAlienFriends = false;
Plappadu.Environment.showAlienFollowers = false;


Plappadu.Environment.User = {
  isLoggedIn: false,
  hasMobile: false,
  hasMobileActivated: false,
  isAtHome: false,
  id: null,
  nickname: null,
  name: null,
  firstName: null,
  lastName: null,
  email: null,
  mobilePhone: null,
  created: null,
  avatarId: null,
  locale: null,
  status: null,
  newsletter: null,
  postNaviState: null,
  postNaviPage: null
}

Plappadu.Environment.Alien = {
  postNaviState: null,
  postNaviPage: null
}




Plappadu.log = function($toLog) {
  if (typeof(console) != "object") {
    return;
  } else {
    console.log($toLog);
    return;
  }
}

Plappadu.Global = new Object;

Plappadu.Global.newestPosting = 0;
Plappadu.Global.getNewPostingsInterval = 10000;
Plappadu.Global.doRefresh = true;

Plappadu.Utils = new Object;

Plappadu.Utils.Function = {
  bind: function() {
    var args = Plappadu.Utils.Array.toArray(arguments).slice(2);
    var method = arguments[0];
    var object = arguments[1];
    return function() {
      var curArgs = Plappadu.Utils.Array.toArray(arguments);
      var temp = curArgs.concat(args);
      return method.apply(object, temp);
    }
  }
};

Plappadu.Utils.Array = {
  toArray: function(object){
    var res = [];
    if(object.length){
      for(var i=0; i<object.length; i++) {
        res.push(object[i]);
      }
    }
    return res;
  }
};

Plappadu.Utils.Browser = {
  ua: navigator.userAgent.toLowerCase()
};


Plappadu.Utils.Browser.isOpera = (Plappadu.Utils.Browser.ua.indexOf('opera') > -1);
Plappadu.Utils.Browser.isSafari = (Plappadu.Utils.Browser.ua.indexOf('safari') > -1);
Plappadu.Utils.Browser.isGecko = (!Plappadu.Utils.Browser.isOpera && !Plappadu.Utils.Browser.isSafari && Plappadu.Utils.Browser.ua.indexOf('gecko') > -1);
Plappadu.Utils.Browser.isIE = (!Plappadu.Utils.Browser.isOpera && Plappadu.Utils.Browser.ua.indexOf('msie') > -1);
Plappadu.Utils.Browser.isIE7 = (Plappadu.Utils.Browser.isIE && Plappadu.Utils.Browser.ua.indexOf('msie 7') > -1);
Plappadu.Utils.Browser.isIE6 = (Plappadu.Utils.Browser.isIE && Plappadu.Utils.Browser.ua.indexOf('msie 6') > -1);
Plappadu.Utils.Browser.isMac = (Plappadu.Utils.Browser.ua.indexOf('mac') > -1);


// ------------------------------------------------------------------
// These functions use the same 'format' strings as the
// java.text.SimpleDateFormat class, with minor exceptions.
// The format string consists of the following abbreviations:
//
// Field        | Full Form          | Short Form
// -------------+--------------------+-----------------------
// Year         | yyyy (4 digits)    | yy (2 digits), y (2 or 4 digits)
// Month        | MMM (name or abbr.)| MM (2 digits), M (1 or 2 digits)
//              | NNN (abbr.)        |
// Day of Month | dd (2 digits)      | d (1 or 2 digits)
// Day of Week  | EE (name)          | E (abbr)
// Hour (1-12)  | hh (2 digits)      | h (1 or 2 digits)
// Hour (0-23)  | HH (2 digits)      | H (1 or 2 digits)
// Hour (0-11)  | KK (2 digits)      | K (1 or 2 digits)
// Hour (1-24)  | kk (2 digits)      | k (1 or 2 digits)
// Minute       | mm (2 digits)      | m (1 or 2 digits)
// Second       | ss (2 digits)      | s (1 or 2 digits)
// AM/PM        | a                  |

// Millisec		| l


// NOTE THE DIFFERENCE BETWEEN MM and mm! Month=MM, not mm!
// Examples:
//  "MMM d, y" matches: January 01, 2000
//                      Dec 1, 1900
//                      Nov 20, 00
//  "M/d/yy"   matches: 01/20/00
//                      9/2/00
//  "MMM dd, yyyy hh:mm:ssa" matches: "January 01, 2000 12:30:45AM"
// ------------------------------------------------------------------

/**
 * @class Algemeine Datum Functionen Singleton
 * @constructor
 */


Plappadu.Utils.Date = new function(){
	this.MONTH_NAMES = ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember','Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'];
	this.DAY_NAMES 	 = ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','So','Mo','Di','Mi','Do','Fr','Sa'];

/**
 * Formatiert zahlt
 *
 * @param {Int} x Zahl zu formatieren
 * @return {String} Wenn wenige als
 * @private
 */
	this._LZ = function (x) {return(x<0||x>9?"":"0")+x};


/**
 * formatDate (date_object, format)
 * Returns a date in the output format specified.
 * The format string uses the same abbreviations as in getDateFromFormat()
 *
 * @param {Object} date Object zu formatiren
 * @param {String} format String mit Format
 * @return {String} formatirete Date
 */
	this.formatDate = function (date,format) {
		format=format+"";
		var result="";
		var i_format=0;
		var c="";
		var token="";
		var y=date.getYear()+"";
		var M=date.getMonth()+1;
		var d=date.getDate();
		var E=date.getDay();
		var H=date.getHours();
		var m=date.getMinutes();
		var s=date.getSeconds();
		var l=date.getMilliseconds() + "";

		var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
		// Convert real date parts into formatted versions
		var value=new Object();
		if (y.length < 4) {y=""+(y-0+1900);}
		value["y"]=""+y;
		value["yyyy"]=y;
		value["yy"]=y.substring(2,4);
		value["M"]=M;
		value["MM"]=this._LZ(M);
		value["MMM"]=this.MONTH_NAMES[M-1];
		value["NNN"]=this.MONTH_NAMES[M+11];
		value["d"]=d;
		value["dd"]=this._LZ(d);
		value["E"]=this.DAY_NAMES[E+7];
		value["EE"]=this.DAY_NAMES[E];
		value["H"]=H;
		value["HH"]=this._LZ(H);
//		value["l"] = (l/1000 + "").substr(2);
		value["l"] = l;
		while(value["l"].length < 3){
			value["l"] = "0" + value["l"];
		}

		if (H==0){value["h"]=12;}
		else if (H>12){value["h"]=H-12;}
		else {value["h"]=H;}
		value["hh"]=this._LZ(value["h"]);
		if (H>11){value["K"]=H-12;} else {value["K"]=H;}
		value["k"]=H+1;
		value["KK"]=this._LZ(value["K"]);
		value["kk"]=this._LZ(value["k"]);
		if (H > 11) { value["a"]="PM"; }
		else { value["a"]="AM"; }
		value["m"]=m;
		value["mm"]=this._LZ(m);
		value["s"]=s;
		value["ss"]=this._LZ(s);
		while (i_format < format.length) {
			c=format.charAt(i_format);
			token="";
			while ((format.charAt(i_format)==c) && (i_format < format.length)) {
				token += format.charAt(i_format++);
				}
			if (value[token] != null) { result=result + value[token]; }
			else { result=result + token; }
			}
		return result;
	};

};
