function str_replace(sSearch, sReplace, sData)
{
try
{
if(typeof sData == "number")
{
return sData;
}

return sData.split(sSearch).join(sReplace);
}
catch(e)
{
return "";
}
}

function str_ireplace(sSearch, sReplace, sData)
{
var sNeedle = sSearch.toLowerCase();
var sHayStack = sData.toLowerCase();

var aData = sHayStack.split(sNeedle);

var uiIndex = aData[0].length += sSearch.length;
var sReturn = sData.substr(0, aData[0].length);

for(var i=1;i<aData.length;i++)
{
sReturn += sReplace;
sReturn += sData.substr(uiIndex, aData[i].length);
uiIndex += aData[i].length + sSearch.length;
}

return sReturn;
}

function str_ireplace_paling(sSearch, sReplaceFront, sReplaceBack, sData)
{
var sNeedle = sSearch.toLowerCase();
var sHayStack = sData.toLowerCase();

var aData = sHayStack.split(sNeedle);

var uiIndex = aData[0].length += sSearch.length;
var sReturn = sData.substr(0, aData[0].length);

for(var i=1;i<aData.length;i++)
{
sReturn += sReplaceFront;
sReturn += sData.substr(uiIndex-sSearch.length, sSearch.length);
sReturn += sReplaceBack;
sReturn += sData.substr(uiIndex, aData[i].length);

uiIndex += aData[i].length + sSearch.length;
}

return sReturn;
}

function str_ireplace_paling_recursive(sSearch, sReplaceFront, sReplaceBack, sData)
{
var sReturn = sData;
var aSearch = sSearch.split(" ");

do
{
sSearch = aSearch.shift();

} while(sSearch.length == 0 && aSearch.length != 0)

if((aSearch.join(" ").length > 0 || sSearch.length > 0) && sData.length >= sSearch.length)
{
var sNeedle = sSearch.toLowerCase();
var sHayStack = sData.toLowerCase();

var aData = sHayStack.split(sNeedle);

var uiIndex = aData[0].length += sSearch.length;
sReturn = str_ireplace_paling_recursive(aSearch.join(" "), sReplaceFront, sReplaceBack, sData.substr(0, aData[0].length));

for(var i=1;i<aData.length;i++)
{
sReturn += sReplaceFront;
sReturn += sData.substr(uiIndex-sSearch.length, sSearch.length);
sReturn += sReplaceBack;
sReturn += str_ireplace_paling_recursive(aSearch.join(" "), sReplaceFront, sReplaceBack, sData.substr(uiIndex, aData[i].length));

uiIndex += aData[i].length + sSearch.length;
}
}

return sReturn;
}

function is_null(mObject)
{
return (typeof mObject === "undefined" || mObject == null);
}

function trim(sString)
{
return sString.replace(/^\s+/, "").replace(/\s+$/, "");
}

function browserRelated(ff,ie)
{
var n = navigator.userAgent.toLowerCase();

if ((n.indexOf("msie") != -1) && (n.indexOf("opera") == -1))
{
return ie;
}

return ff;
}

function selectValue(oSelect)
{
return oSelect.options[oSelect.selectedIndex].value;
}

function relocate(sHref)
{
window.location.href = sHref;
}
var swfobject=function(){var b="undefined",Q="object",n="Shockwave Flash",p="ShockwaveFlash.ShockwaveFlash",P="application/x-shockwave-flash",m="SWFObjectExprInst",j=window,K=document,T=navigator,o=[],N=[],i=[],d=[],J,Z=null,M=null,l=null,e=false,A=false;var h=function(){var v=typeof K.getElementById!=b&&typeof K.getElementsByTagName!=b&&typeof K.createElement!=b,AC=[0,0,0],x=null;if(typeof T.plugins!=b&&typeof T.plugins[n]==Q){x=T.plugins[n].description;if(x&&!(typeof T.mimeTypes!=b&&T.mimeTypes[P]&&!T.mimeTypes[P].enabledPlugin)){x=x.replace(/^.*\s+(\S+\s+\S+$)/,"$1");AC[0]=parseInt(x.replace(/^(.*)\..*$/,"$1"),10);AC[1]=parseInt(x.replace(/^.*\.(.*)\s.*$/,"$1"),10);AC[2]=/r/.test(x)?parseInt(x.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof j.ActiveXObject!=b){var y=null,AB=false;try{y=new ActiveXObject(p+".7")}catch(t){try{y=new ActiveXObject(p+".6");AC=[6,0,21];y.AllowScriptAccess="always"}catch(t){if(AC[0]==6){AB=true}}if(!AB){try{y=new ActiveXObject(p)}catch(t){}}}if(!AB&&y){try{x=y.GetVariable("$version");if(x){x=x.split(" ")[1].split(",");AC=[parseInt(x[0],10),parseInt(x[1],10),parseInt(x[2],10)]}}catch(t){}}}}var a=T.userAgent.toLowerCase(),r=T.platform.toLowerCase(),AA=/webkit/.test(a)?parseFloat(a.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,q=false,z=r?/win/.test(r):/win/.test(a),w=r?/mac/.test(r):/mac/.test(a);/*@cc_on q=true;@if(@_win32)z=true;@elif(@_mac)w=true;@end@*/return{w3cdom:v,pv:AC,webkit:AA,ie:q,win:z,mac:w}}();var L=function(){if(!h.w3cdom){return}f(H);if(h.ie&&h.win){try{K.write("<script id=__ie_ondomload defer=true src=//:><\/script>");J=C("__ie_ondomload");if(J){I(J,"onreadystatechange",S)}}catch(q){}}if(h.webkit&&typeof K.readyState!=b){Z=setInterval(function(){if(/loaded|complete/.test(K.readyState)){E()}},10)}if(typeof K.addEventListener!=b){K.addEventListener("DOMContentLoaded",E,null)}R(E)}();function S(){if(J.readyState=="complete"){J.parentNode.removeChild(J);E()}}function E(){if(e){return}if(h.ie&&h.win){var v=a("span");try{var u=K.getElementsByTagName("body")[0].appendChild(v);u.parentNode.removeChild(u)}catch(w){return}}e=true;if(Z){clearInterval(Z);Z=null}var q=o.length;for(var r=0;r<q;r++){o[r]()}}function f(q){if(e){q()}else{o[o.length]=q}}function R(r){if(typeof j.addEventListener!=b){j.addEventListener("load",r,false)}else{if(typeof K.addEventListener!=b){K.addEventListener("load",r,false)}else{if(typeof j.attachEvent!=b){I(j,"onload",r)}else{if(typeof j.onload=="function"){var q=j.onload;j.onload=function(){q();r()}}else{j.onload=r}}}}}function H(){var t=N.length;for(var q=0;q<t;q++){var u=N[q].id;if(h.pv[0]>0){var r=C(u);if(r){N[q].width=r.getAttribute("width")?r.getAttribute("width"):"0";N[q].height=r.getAttribute("height")?r.getAttribute("height"):"0";if(c(N[q].swfVersion)){if(h.webkit&&h.webkit<312){Y(r)}W(u,true)}else{if(N[q].expressInstall&&!A&&c("6.0.65")&&(h.win||h.mac)){k(N[q])}else{O(r)}}}}else{W(u,true)}}}function Y(t){var q=t.getElementsByTagName(Q)[0];if(q){var w=a("embed"),y=q.attributes;if(y){var v=y.length;for(var u=0;u<v;u++){if(y[u].nodeName=="DATA"){w.setAttribute("src",y[u].nodeValue)}else{w.setAttribute(y[u].nodeName,y[u].nodeValue)}}}var x=q.childNodes;if(x){var z=x.length;for(var r=0;r<z;r++){if(x[r].nodeType==1&&x[r].nodeName=="PARAM"){w.setAttribute(x[r].getAttribute("name"),x[r].getAttribute("value"))}}}t.parentNode.replaceChild(w,t)}}function k(w){A=true;var u=C(w.id);if(u){if(w.altContentId){var y=C(w.altContentId);if(y){M=y;l=w.altContentId}}else{M=G(u)}if(!(/%$/.test(w.width))&&parseInt(w.width,10)<310){w.width="310"}if(!(/%$/.test(w.height))&&parseInt(w.height,10)<137){w.height="137"}K.title=K.title.slice(0,47)+" - Flash Player Installation";var z=h.ie&&h.win?"ActiveX":"PlugIn",q=K.title,r="MMredirectURL="+j.location+"&MMplayerType="+z+"&MMdoctitle="+q,x=w.id;if(h.ie&&h.win&&u.readyState!=4){var t=a("div");x+="SWFObjectNew";t.setAttribute("id",x);u.parentNode.insertBefore(t,u);u.style.display="none";var v=function(){u.parentNode.removeChild(u)};I(j,"onload",v)}U({data:w.expressInstall,id:m,width:w.width,height:w.height},{flashvars:r},x)}}function O(t){if(h.ie&&h.win&&t.readyState!=4){var r=a("div");t.parentNode.insertBefore(r,t);r.parentNode.replaceChild(G(t),r);t.style.display="none";var q=function(){t.parentNode.removeChild(t)};I(j,"onload",q)}else{t.parentNode.replaceChild(G(t),t)}}function G(v){var u=a("div");if(h.win&&h.ie){u.innerHTML=v.innerHTML}else{var r=v.getElementsByTagName(Q)[0];if(r){var w=r.childNodes;if(w){var q=w.length;for(var t=0;t<q;t++){if(!(w[t].nodeType==1&&w[t].nodeName=="PARAM")&&!(w[t].nodeType==8)){u.appendChild(w[t].cloneNode(true))}}}}}return u}function U(c,d,t){var q,v=C(t);if(v){if(typeof c.id==b){c.id=t}if(h.ie&&h.win){var e="";for(var f in c){if(c[f]!=Object.prototype[f]){if(f.toLowerCase()=="data"){d.movie=c[f]}else{if(f.toLowerCase()=="styleclass"){e+=' class="'+c[f]+'"'}else{if(f.toLowerCase()!="classid"){e+=" "+f+'="'+c[f]+'"'}}}}}var g="";for(var j in d){if(d[j]!=Object.prototype[j]){g+='<param name="'+j+'" value="'+d[j]+'" />'}}v.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+e+">"+g+"</object>";i[i.length]=c.id;q=C(c.id)}else{if(h.webkit&&h.webkit<312){var k=a("embed");k.setAttribute("type",P);for(var z in c){if(c[z]!=Object.prototype[z]){if(z.toLowerCase()=="data"){k.setAttribute("src",c[z])}else{if(z.toLowerCase()=="styleclass"){k.setAttribute("class",c[z])}else{if(z.toLowerCase()!="classid"){k.setAttribute(z,c[z])}}}}}for(var y in d){if(d[y]!=Object.prototype[y]){if(y.toLowerCase()!="movie"){k.setAttribute(y,d[y])}}}v.parentNode.replaceChild(k,v);q=k}else{var u=a(Q);u.setAttribute("type",P);for(var x in c){if(c[x]!=Object.prototype[x]){if(x.toLowerCase()=="styleclass"){u.setAttribute("class",c[x])}else{if(x.toLowerCase()!="classid"){u.setAttribute(x,c[x])}}}}for(var w in d){if(d[w]!=Object.prototype[w]&&w.toLowerCase()!="movie"){F(u,w,d[w])}}v.parentNode.replaceChild(u,v);q=u}}}return q}function F(t,q,r){var u=a("param");u.setAttribute("name",q);u.setAttribute("value",r);t.appendChild(u)}function X(r){var q=C(r);if(q&&(q.nodeName=="OBJECT"||q.nodeName=="EMBED")){if(h.ie&&h.win){if(q.readyState==4){B(r)}else{j.attachEvent("onload",function(){B(r)})}}else{q.parentNode.removeChild(q)}}}function B(t){var r=C(t);if(r){for(var q in r){if(typeof r[q]=="function"){r[q]=null}}r.parentNode.removeChild(r)}}function C(t){var q=null;try{q=K.getElementById(t)}catch(r){}return q}function a(q){return K.createElement(q)}function I(t,q,r){t.attachEvent(q,r);d[d.length]=[t,q,r]}function c(t){var r=h.pv,q=t.split(".");q[0]=parseInt(q[0],10);q[1]=parseInt(q[1],10)||0;q[2]=parseInt(q[2],10)||0;return(r[0]>q[0]||(r[0]==q[0]&&r[1]>q[1])||(r[0]==q[0]&&r[1]==q[1]&&r[2]>=q[2]))?true:false}function V(v,r){if(h.ie&&h.mac){return}var u=K.getElementsByTagName("head")[0],t=a("style");t.setAttribute("type","text/css");t.setAttribute("media","screen");if(!(h.ie&&h.win)&&typeof K.createTextNode!=b){t.appendChild(K.createTextNode(v+" {"+r+"}"))}u.appendChild(t);if(h.ie&&h.win&&typeof K.styleSheets!=b&&K.styleSheets.length>0){var q=K.styleSheets[K.styleSheets.length-1];if(typeof q.addRule==Q){q.addRule(v,r)}}}function W(t,q){var r=q?"visible":"hidden";if(e&&C(t)){C(t).style.visibility=r}else{V("#"+t,"visibility:"+r)}}function g(s){var r=/[\\\"<>\.;]/;var q=r.exec(s)!=null;return q?encodeURIComponent(s):s}var D=function(){if(h.ie&&h.win){window.attachEvent("onunload",function(){var w=d.length;for(var v=0;v<w;v++){d[v][0].detachEvent(d[v][1],d[v][2])}var t=i.length;for(var u=0;u<t;u++){X(i[u])}for(var r in h){h[r]=null}h=null;for(var q in swfobject){swfobject[q]=null}swfobject=null})}}();return{registerObject:function(u,q,t){if(!h.w3cdom||!u||!q){return}var r={};r.id=u;r.swfVersion=q;r.expressInstall=t?t:false;N[N.length]=r;W(u,false)},getObjectById:function(v){var q=null;if(h.w3cdom){var t=C(v);if(t){var u=t.getElementsByTagName(Q)[0];if(!u||(u&&typeof t.SetVariable!=b)){q=t}else{if(typeof u.SetVariable!=b){q=u}}}}return q},embedSWF:function(x,d,e,g,q,w,r,z,i){if(!h.w3cdom||!x||!d||!e||!g||!q){return}e+="";g+="";if(c(q)){W(d,false);var j={};if(i&&typeof i===Q){for(var v in i){if(i[v]!=Object.prototype[v]){j[v]=i[v]}}}j.data=x;j.width=e;j.height=g;var y={};if(z&&typeof z===Q){for(var u in z){if(z[u]!=Object.prototype[u]){y[u]=z[u]}}}if(r&&typeof r===Q){for(var t in r){if(r[t]!=Object.prototype[t]){if(typeof y.flashvars!=b){y.flashvars+="&"+t+"="+r[t]}else{y.flashvars=t+"="+r[t]}}}}f(function(){U(j,y,d);if(j.id==d){W(d,true)}})}else{if(w&&!A&&c("6.0.65")&&(h.win||h.mac)){A=true;W(d,false);f(function(){var a={};a.id=a.altContentId=d;a.width=e;a.height=g;a.expressInstall=w;k(a)})}}},getFlashPlayerVersion:function(){return{major:h.pv[0],minor:h.pv[1],release:h.pv[2]}},hasFlashPlayerVersion:c,createSWF:function(t,r,q){if(h.w3cdom){return U(t,r,q)}else{return undefined}},removeSWF:function(q){if(h.w3cdom){X(q)}},createCSS:function(r,q){if(h.w3cdom){V(r,q)}},addDomLoadEvent:f,addLoadEvent:R,getQueryParamValue:function(v){var u=K.location.search||K.location.hash;if(v==null){return g(u)}if(u){var t=u.substring(1).split("&");for(var r=0;r<t.length;r++){if(t[r].substring(0,t[r].indexOf("="))==v){return g(t[r].substring((t[r].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(A&&M){var q=C(m);if(q){q.parentNode.replaceChild(M,q);if(l){W(l,true);if(h.ie&&h.win){M.style.display="block"}}M=null;l=null;A=false}}}}}();









if (!this.JSON) {
JSON = {};
}
(function () {

function f(n) {
// Format integers to have at least two digits.
return n < 10 ? '0' + n : n;
}

if (typeof Date.prototype.toJSON !== 'function') {

Date.prototype.toJSON = function (key) {

return this.getUTCFullYear()   + '-' +
f(this.getUTCMonth() + 1) + '-' +
f(this.getUTCDate())      + 'T' +
f(this.getUTCHours())     + ':' +
f(this.getUTCMinutes())   + ':' +
f(this.getUTCSeconds())   + 'Z';
};

String.prototype.toJSON =
Number.prototype.toJSON =
Boolean.prototype.toJSON = function (key) {
return this.valueOf();
};
}

var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
escapeable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
gap,
indent,
meta = {    // table of character substitutions
'\b': '\\b',
'\t': '\\t',
'\n': '\\n',
'\f': '\\f',
'\r': '\\r',
'"' : '\\"',
'\\': '\\\\'
},
rep;


function quote(string) {


escapeable.lastIndex = 0;
return escapeable.test(string) ?
'"' + string.replace(escapeable, function (a) {
var c = meta[a];
if (typeof c === 'string') {
return c;
}
return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
}) + '"' :
'"' + string + '"';
}


function str(key, holder) {


var i,          // The loop counter.
k,          // The member key.
v,          // The member value.
length,
mind = gap,
partial,
value = holder[key];


if (value && typeof value === 'object' &&
typeof value.toJSON === 'function') {
value = value.toJSON(key);
}


if (typeof rep === 'function') {
value = rep.call(holder, key, value);
}


switch (typeof value) {
case 'string':
return quote(value);

case 'number':


return isFinite(value) ? String(value) : 'null';

case 'boolean':
case 'null':


return String(value);


case 'object':



if (!value) {
return 'null';
}


gap += indent;
partial = [];


if (typeof value.length === 'number' &&
!value.propertyIsEnumerable('length')) {


length = value.length;
for (i = 0; i < length; i += 1) {
partial[i] = str(i, value) || 'null';
}


v = partial.length === 0 ? '[]' :
gap ? '[\n' + gap +
partial.join(',\n' + gap) + '\n' +
mind + ']' :
'[' + partial.join(',') + ']';
gap = mind;
return v;
}


if (rep && typeof rep === 'object') {
length = rep.length;
for (i = 0; i < length; i += 1) {
k = rep[i];
if (typeof k === 'string') {
v = str(k, value);
if (v) {
partial.push(quote(k) + (gap ? ': ' : ':') + v);
}
}
}
} else {


for (k in value) {
if (Object.hasOwnProperty.call(value, k)) {
v = str(k, value);
if (v) {
partial.push(quote(k) + (gap ? ': ' : ':') + v);
}
}
}
}


v = partial.length === 0 ? '{}' :
gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
mind + '}' : '{' + partial.join(',') + '}';
gap = mind;
return v;
}
}


if (typeof JSON.stringify !== 'function') {
JSON.stringify = function (value, replacer, space) {


var i;
gap = '';
indent = '';


if (typeof space === 'number') {
for (i = 0; i < space; i += 1) {
indent += ' ';
}


} else if (typeof space === 'string') {
indent = space;
}


rep = replacer;
if (replacer && typeof replacer !== 'function' &&
(typeof replacer !== 'object' ||
typeof replacer.length !== 'number')) {
throw new Error('JSON.stringify');
}


return str('', {'': value});
};
}



//if (typeof JSON.parse !== 'function') {
JSON.parse = function (text, reviver) {


var j;

function walk(holder, key) {


var k, v, value = holder[key];
if (value && typeof value === 'object') {
for (k in value) {
if (Object.hasOwnProperty.call(value, k)) {
v = walk(value, k);
if (v !== undefined) {
value[k] = v;
} else {
delete value[k];
}
}
}
}
return reviver.call(holder, key, value);
}



cx.lastIndex = 0;
if (cx.test(text)) {
text = text.replace(cx, function (a) {
return '\\u' +
('0000' + a.charCodeAt(0).toString(16)).slice(-4);
});
}



if (/^[\],:{}\s]*$/.
test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {


j = eval('(' + text + ')');
j = Functions.recursiveDecodeURI(j);


return typeof reviver === 'function' ?
walk({'': j}, '') : j;
}


throw new SyntaxError('JSON.parse');
};
})();

var LS =
{
isIE: window.ActiveXObject ? true : false,
onReady: function(fCallBack)
{
var oWindowOnLoad = window.onload;

if (typeof window.onload != 'function')
{
window.onload = fCallBack;
}
else
{
window.onload = function()
{
if (oWindowOnLoad)
{
oWindowOnLoad();
}

fCallBack();
}
}
},

query: function(sURL, aParam, cbSuccess)
{
var aData = new Array();

if(aParam != null)
{
for(fPropery in aParam)
{
aData[aData.length] = fPropery+"="+encodeURI(aParam[fPropery]);
}
}

new Ajax.Request(sURL, {
method: "post",
parameters: aData.join("&"),
onSuccess: function(oTransport)
{
try
{
oData = JSON.parse(oTransport.responseText);
cbSuccess(oData);
}
catch(e)
{

}
},
onFailure: function(oTransport)
{
Debug.add(oTransport.responseText);
Message.setError("Ajax request ist fehlgeschlagen...");
}
});
}
};
LS.date =
{
dmY: "%d.%m.%Y",
hi_dmY: "%H:%i | %d.%m.%Y",
d_dmY_hi: "am %d.%m.%Y um %H:%i",
d_dM_dmY_: "am %d. %M %Y um %H:%i Uhr"
};
LS.img =
{
spacer: PATH_IMG+"spacer.gif"
};

LS.misc = {};
LS.view = Class.create(
{
initialize: function(oContainer)
{
this._oContainer = oContainer;
},

getContainer: function()
{
return this._oContainer;
}
});
LS.plugin = {};
LS.modify = {};
var DEF =
{
MALE: 0,
FEMALE: 1,
STUFFSITE: 1,
COLLECTION: 2,
FAVORITE: 3,

SORT_FILENAME: "dsf.filename",
SORT_FILETYPE: "dsf.fileextension",
SORT_FILESIZE: "dsf.filesize",
SORT_FILEDATE: "dsf.date_added",
SORT_FILEEXTENSION: "dsf.fileextension",
SORT_DOWNLOAD: "count_downloads",
SORT_VIEW: "count_views",
SORT_COMMENT: "",
SORT_RATING: "",
SORT_STUFFSITE_NAME: "sitename",

SORT_ASC: "asc",
SORT_DESC: "desc",

VIEW_NORMAL: 1,
VIEW_DETAILS: 2,
VIEW_ALBUM: 3,
VIEW_LIST: 4,
VIEW_PHOTOFLOW: 5,

VIEW_TYPE_IMAGE: "image",
VIEW_TYPE_VIDEO: "video",
VIEW_TYPE_AUDIO: "audio",
VIEW_TYPE_APPLICATION: "application",
VIEW_TYPE_STUFFSITE: "",
VIEW_TYPE_NETWORK: "network",

VIEW_FRIENDS_CONFIRMED: 1,
VIEW_FRIENDS_DEMAND: 2,
VIEW_FRIENDS_REQUEST: 3,
VIEW_FRIENDS_NOTICED: 4,
VIEW_FRIENDS_SEARCH: 5,
VIEW_FRIENDS_NONE: 6,

VIEW_PMS_INBOX: 6,
VIEW_PMS_OUTBOX: 7,
VIEW_STANDARD_AMOUNT: 24,
VIEW_STANDARD_AMOUNT_FRIENDS: 6,

VIEW_WIDTH_305: 1,
VIEW_WIDTH_700: 2,
VIEW_WIDTH_980: 3,

ACCESS_STATUS_PUBLIC: 1,
ACCESS_STATUS_PRIVATE: 2,
ACCESS_STATUS_PASSWORDED: 3,
ACCESS_STATUS_ALL: 0,

STUFFSITE_FROM_ME: 1,
STUFFSITE_FROM_ME_AND_FRIENDS: 2,
STUFFSITE_FROM_FRIENDS: 3,

IMAGE_RES_ALBUM: "80x60",
IMAGE_RES_SMALL: "100x175",
IMAGE_RES_NORMAL: "140x105",
IMAGE_RES_PREVIEW: "265x400",
IMAGE_RES_DETAIL: "670x800",
IMAGE_RES_DETAIL_XXL: "950x1100",

OPTION_RENDER_ONLY: 1,
OPTION_CALL_ONLY: 2,
OPTION_PERFORM_ONCE: 3,
OPTION_DO_NOTHING: 4,
OPTION_RENDER_DATA_ONLY: 5,

MENU_STUFF: 1,
MENU_COLLECTIONS: 2,
MENU_FRIENDS: 3,

LINK_USE_DIRECT: 1,
LINK_USE_WEBSITE: 2,
LINK_USE_FORUM: 3,

LINK_OPTION_STUFFSITE: 1,
LINK_OPTION_DETAILSITE: 2,
LINK_OPTION_IMAGE: 3,
LINK_OPTION_VIDEO: 4,
LINK_OPTION_AUDIO: 5,
LINK_OPTION_APPLICATION: 6,

TYPE_FRIENDS: 1,
TYPE_LEAVE_OWN_MESSAGE: 3,
TYPE_LEAVE_A_MESSAGE: 2,
TYPE_CHANGE_PROFILE_IMAGE: 4,
TYPE_CHANGE_AVATAR_IMAGE: 5,
TYPE_COMMENT_STUFFFILE: 6,
TYPE_COMMENT_STUFFSITE: 7,
TYPE_ADD_USER_TO_PRIVATE_STUFFSITE: 8,
TYPE_ADD_STUFFSITE: 9,
TYPE_ADD_FILES_TO_STUFFSITE: 11,
TYPE_MOVE_FILES_TO_STUFFSITE: 12,
TYPE_CHANGE_STATUS_OF_STUFFSITE: 10,
TYPE_ADD_COLLECTION: 13,
TYPE_ADD_FILES_TO_COLLECTION: 14,
TYPE_MOVE_FILES_TO_COLLECTION: 15,
TYPE_USER_FAVORITED_FILES: 16,
TYPE_USER_FAVORITED_STUFFSITE: 17,

POPUP_YESNO: 1
};
var EC =
{
SUCCESS : 0,
FAILED : 1,
NOT_ALL_DATA_SUBMITTED : 2,
SINGLE_ACTION : 3,
PARAMETER_OUT_OF_RANGE : 4,
CANT_RATE_YOUR_OWN_FILES : 5,
NOT_OWNER : 6,
NO_CHANGE : 7,
MESSAGE_TO_SHORT : 8,
DATA_NOT_VALID : 9,
NOT_IMPLEMENTED : 10,
NOT_ENOUGH_STORAGE_AVAILABLE : 11,
NOT_FAVORITED : 30,
FAVORITED : 31,
MIMETYPE_DID_NOT_MATCH : 50,
CONTACT_ALREADY_ADDED : 70,
CONTACT_CANT_ADD_YOURSELF : 71,
CONTACT_ALLREADY_DELETED : 72,
CONTACT_NOTICE_TO_ADD : 73,
CONTACT_REMOVE_FROM_NOTICE : 74,
CONTACT_REMOVE_FROM_CONFIRMED : 75,
CONTACT_BLOCKED : 76,
PM_UNREADED_REMOVED : 80,
EMAIL_IN_USE : 100,
EMAIL_BLACKLISTED : 101,
EMAIL_NOT_VALID : 102,
USERNAME_BLACKLISTED : 103,
USERNAME_NOT_VALID : 104,
USERNAME_IN_USE : 105,
USERNAME_TO_SHORT : 106,
USERNAME_TO_LONG : 107,
PASSWORD_TO_SHORT : 108,
LOGIN_USER_GROUP_CANT_LOGIN : 109,
STUFFSITE_PRIVATE : 130,
STUFFSITE_PASSWORDED : 131,
STUFFSITE_WRONG_URL : 132,
STUFFSITE_CAN_CORRECT_URL : 133,
STUFFFILE_WRONG_URL : 142,
STUFFFILE_CAN_CORRECT_URL : 143,
DB_INSERT_FAILED : 201,
DB_UPDATE_FAILED : 202,
DB_DELETE_FAILED : 203,
CLASS_LOCKED : 301
};
var HTML =
{
getValue: function(oObject)
{
return oObject.value;
},

setValue: function(oObject, sValue)
{
oObject.value = sValue;
},

setInnerHTML: function(oObject, sValue)
{
return oObject.innerHTML = sValue;
},

appendInnerHTML: function(oObject, sValue)
{
return oObject.innerHTML += sValue;
},

createTag: function(sTag)
{
return document.createElement(sTag);
},

createTagWithContent: function(sTag, sValue)
{
var oElement = this.createTag(sTag);
oElement.innerHTML = sValue;

return oElement;
},

createAttribute: function(sType, sValue, oElement)
{
try
{
var oAttribute = document.createAttribute(sType);
oAttribute.nodeValue = sValue;

oElement.setAttributeNode(oAttribute);
}
catch(e)
{
Debug.object(e);
}
},

changeAttribute: function(sType, sValue, oElement)
{
this.removeAttribute(sType, oElement);
this.createAttribute(sType, sValue, oElement);
},

removeAttribute: function(sType, oElement)
{
oElement.removeAttribute(sType);
},


replaceID: function (oElement, sValue)
{
oElement.id = sValue;
},
clearSelect: function(oObject)
{
while(oObject.childNodes.length > 0)
{
oObject.removeChild(oObject.childNodes[0]);
}
},

createCheckBox: function()
{
var oCheckBox;

if(LS.isIE)
{
oCheckBox = HTML.createTag("<input type=\"checkbox\">");
}
else
{
oCheckBox = HTML.createTag("input");
HTML.createAttribute("type", "checkbox", oCheckBox);
}

return oCheckBox;
},

createRadio: function()
{
var oRadio;

if(LS.isIE)
{
oRadio = HTML.createTag("<input type=\"radio\">");
}
else
{
oRadio = HTML.createTag("input");
HTML.createAttribute("type", "radio", oRadio);
}

return oRadio;
},

addOption: function(oObject, sValue, sContent, bSelected)
{
var oOption = this.createTagWithContent("option", sContent);

HTML.createAttribute("value", sValue, oOption);

if(bSelected == 1)
{
HTML.createAttribute("selected", "selected", oOption);
}

oObject.appendChild(oOption);
},

cleanContainer: function(oContainer, oAppend)
{
try
{
oAppend = Functions.exists(oAppend, null);

while(oContainer.hasChildNodes())
{
oContainer.removeChild(oContainer.childNodes[0]);
}

if(oAppend != null)
{
oContainer.appendChild(oAppend);
}
}
catch(e)
{
Debug.object(e);
}
},

getSelectedIndex: function(oObject)
{
return oObject.selectedIndex;
},

setSelectedIndex: function(oObject, uiIndex)
{
oObject.selectedIndex = uiIndex;
},

setClass: function(oObject, sClass)
{
try
{
oObject.setAttribute(browserRelated('class','className'), sClass);
}
catch(e)
{
Debug.add("FEHLER!!!\n\nObjekt: "+oObject+"\nKlasse: "+sClass);
}
},

getClass: function(oObject)
{
try
{
return oObject.getAttribute(browserRelated('class','className'));
}
catch(e)
{
Debug.add("FEHLER!!!\n\nObjekt: "+oObject+"\n");
}
}
};
var Functions =
{

getPageSize: function()
{
var xScroll, yScroll;

if (window.innerHeight && window.scrollMaxY) {
xScroll = window.innerWidth + window.scrollMaxX;
yScroll = window.innerHeight + window.scrollMaxY;
} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
xScroll = document.body.scrollWidth;
yScroll = document.body.scrollHeight;
} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
xScroll = document.body.offsetWidth;
yScroll = document.body.offsetHeight;
}

var windowWidth, windowHeight;

if (self.innerHeight) {// all except Explorer
if(document.documentElement.clientWidth){
windowWidth = document.documentElement.clientWidth;
} else {
windowWidth = self.innerWidth;
}
windowHeight = self.innerHeight;
} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
windowWidth = document.documentElement.clientWidth;
windowHeight = document.documentElement.clientHeight;
} else if (document.body) { // other Explorers
windowWidth = document.body.clientWidth;
windowHeight = document.body.clientHeight;
}

if(yScroll < windowHeight){
pageHeight = windowHeight;
} else {
pageHeight = yScroll;
}

if(xScroll < windowWidth){
pageWidth = xScroll;
} else {
pageWidth = windowWidth;
}

return [pageWidth,pageHeight];
},

aStaten: ["Alle Rechte vorbehalten (kein Download)",
"Namensnennung",
"Namensnennung, Weitergabe unter gleichen Bedingungen",
"Namensnennung, keine Bearbeitung",
"Namensnennung, nicht kommerziell",
"Namensnennung, nicht kommerziell, Weitergabe unter gleichen Bedingungen",
"Namensnennung, nicht kommerziell, keine Bearbeitung"],
_idCounter: 0,
_oTableClass: new Object(),
_oFilterFields: new Array(),

registerMaxLetterCounter: function(uiMaxLetter, oField, oCounter)
{
var idCouter = Functions.createUniqueID();
var idField = Functions.createUniqueID();

oCounter.innerHTML = (uiMaxLetter-oField.value.length);

oField.maxLength = uiMaxLetter;
oField.onkeydown = function() { return ((uiMaxLetter-oField.value.length) >= 0); };
oField.onkeyup = function() { if(oField.value.length > uiMaxLetter) { oField.value = oField.value.substr(0, uiMaxLetter); } oCounter.innerHTML = (uiMaxLetter-oField.value.length); };
},

getClassName: function(oObject)
{
for (fProperty in window)
{
if(typeof window[fProperty] === "object")
{
if(window[fProperty] === oObject)
{
return fProperty;
}
}
}

return null;
},

cloneDivDimension: function(oSource, oDestination)
{
oDestination.style.zIndex = 2;
oDestination.style.position = "absolute";
oDestination.style.height = (oSource.getHeight())+"px";
oDestination.style.width = oSource.getWidth()+"px";
},

createLink: function(aData, cOption, cUse, sSize)
{
var sContent = "";

if(cOption > 0)
{
aData["typeoption"] = cOption;
}

if(cUse > 0)
{
aData["typeuse"] = cUse;
}

switch(aData["typeoption"])
{
case DEF.LINK_OPTION_DETAILSITE:
switch(aData["typeuse"])
{
case DEF.LINK_USE_DIRECT: sContent = PATH_HTTP+"stufffile/"+aData["filename_url"]+","+aData["file_security_match"]+","+aData["sfid"]+".html"; break;
case DEF.LINK_USE_WEBSITE: sContent = "&lt;a href=&quot;"+PATH_HTTP+"stufffile/"+aData["filename_url"]+","+aData["file_security_match"]+","+aData["sfid"]+".html&quot; title=&quot;"+aData["filename"]+" - Linkedstuff.com&quot;&gt;"+aData["filename"]+"&lt;a&gt;"; break;
case DEF.LINK_USE_FORUM: sContent = "[URL=&quot;"+PATH_HTTP+"stufffile/"+aData["filename_url"]+","+aData["file_security_match"]+","+aData["sfid"]+".html&quot;]"+aData["filename"]+"[/URL]"; break;
}
break;

case DEF.LINK_OPTION_STUFFSITE:
default:
switch(aData["typeuse"])
{
case DEF.LINK_USE_DIRECT: sContent = PATH_HTTP+"stuffsite/"+aData["sitename_url"]+","+aData["site_security_match"]+","+aData["ssid"]+".html"; break;
case DEF.LINK_USE_WEBSITE: sContent = "&lt;a href=&quot;"+PATH_HTTP+"stuffsite/"+aData["sitename_url"]+","+aData["site_security_match"]+","+aData["ssid"]+".html&quot; title=&quot;"+aData["filename"]+" - Linkedstuff.com&quot;&gt;"+aData["sitename"]+"&lt;a&gt;"; break;
case DEF.LINK_USE_FORUM: sContent = "[URL=&quot;"+PATH_HTTP+"stuffsite/"+aData["sitename_url"]+","+aData["site_security_match"]+","+aData["ssid"]+".html&quot;]"+aData["sitename"]+"[/URL]"; break;
}
break;
}

aData["container"].innerHTML = sContent;
},

getClassByName: function(sClassName)
{
var aObjects = sClassName.split(".");

if(aObjects.length == 1)
{
return window[aObjects[0]];
}
else if(aObjects.length == 2)
{
aObjects[1] = str_replace("(", "", aObjects[1]);
aObjects[1] = str_replace(")", "", aObjects[1]);

return window[aObjects[0]][aObjects[1]]();
}
},

setToMiddle: function()
{
$('idMessageContainer').style.top = document.viewport.getScrollOffsets()[1]+"px";
},

setToCenter: function(oContainer)
{
var uiTop = (document.viewport.getScrollOffsets()[1]+((document.body.clientHeight-oContainer.getHeight())/2));
uiTop = (uiTop > 30) ? uiTop : 30;

oContainer.style.top = uiTop+"px";
oContainer.style.left = ((document.body.clientWidth-oContainer.getWidth())/2)+"px";
},

filterStartTimer: function(oObject, oPaginatorData)
{
var oField = this.getField(oObject);

if((oObject.value == "" || oObject.value == oField["value"]) && oPaginatorData.getParameter("filter") != "")
{
TimerAction.start(oField["timer"], 'filter', {paginator: oPaginatorData, value: ""}, 500);
}
else if(oObject.value != oPaginatorData.getParameter("filter"))
{
TimerAction.start(oField["timer"], 'filter', {paginator: oPaginatorData, value: oObject.value}, 500);
}
else
{
TimerAction.stop(oField["timer"]);
}
},

getField: function(oObject)
{
for(var i=0;i<this._oFilterFields.length;i++)
{
if(this._oFilterFields[i]["obj"] === oObject)
{
return this._oFilterFields[i];
}
}

var aInsert = new Object();
aInsert["obj"] = oObject;
aInsert["value"] = oObject.value;
aInsert["timer"] = this.createUniqueID();

this._oFilterFields[this._oFilterFields.length] = aInsert

return aInsert;
},

isStandardFilter: function(oObject)
{
var oField = this.getField(oObject);

return (oField["value"] == oObject.value);
},

clearField: function(oObject)
{
if(this.getField(oObject)["value"] == oObject.value)
{
HTML.setClass(oObject, str_replace("fcGrey", "fcBlack", HTML.getClass(oObject)));
oObject.value = "";
}
},

resetField: function(oObject)
{
var sSavedValue = this.getField(oObject)["value"];

if(oObject.value == "")
{
HTML.setClass(oObject, str_replace("fcBlack", "fcGrey", HTML.getClass(oObject)));
oObject.value = sSavedValue;
}
},

setCheckbox: function(oCheckBox, oImage, oTable, bStatus, bInit, cbFunctions)
{
var _this = this;

cbFunctions = Functions.exists(cbFunctions, new Object());
cbFunctions = Functions.keyExists("on", cbFunctions, function()
{
HTML.setClass(oTable, str_replace("Blue", "", _this._oTableClass[oTable.id])+"Green");
});

cbFunctions = Functions.keyExists("off", cbFunctions, function()
{
HTML.setClass(oTable, _this._oTableClass[oTable.id]);
});

bInit = Functions.exists(bInit, 0);

var sClass = HTML.getClass(oImage).toLowerCase();
var aClass = sClass.split(" ");

var bBig = " w18";

for(var i=0;i<aClass.length;i++)
{
if(aClass[i] == "w20")
{
bBig = "20 w20";
break;
}
}

if(bInit == 1)
{
this._oTableClass[oTable.id] = HTML.getClass(oTable);
}


if(bStatus == 1)
{
cbFunctions.on();
}
else
{
cbFunctions.off();
}

oCheckBox.checked = bStatus;

if(bInit)
{
oImage.title = (bStatus == 1 ? "aktiv" : "inaktiv");
HTML.setClass(oImage, "iconCheckbox"+(bStatus == 1 ? "On" : "Off")+"Out"+bBig+" cPointer");
}
else
{
oImage.title = (bStatus == 1 ? "aktiv" : "inaktiv");
HTML.setClass(oImage, "iconCheckbox"+(bStatus == 1 ? "On" : "Off")+"Over"+bBig+" cPointer");
}

oImage.onmouseover = function() { HTML.setClass(oImage, "iconCheckbox"+(bStatus == 1 ? "On" : "Off")+"Over"+bBig+" cPointer"); };
oImage.onmouseout = function() { HTML.setClass(oImage, "iconCheckbox"+(bStatus == 1 ? "On" : "Off")+"Out"+bBig+" cPointer"); };
oImage.onclick = function() { Functions.setCheckbox(oCheckBox, oImage, oTable, (1-bStatus), 0, cbFunctions); };
},

parseSize: function(uiSize, uiCommaDigits, bSpace)
{
var uiStep = 0;
var aSize = new Array("B", "KB", "MB", "GB", "TB");

uiCommaDigits = Functions.exists(uiCommaDigits, 2);
bSpace = Functions.exists(bSpace, 1);
uiCommaDigits = Math.pow(10, uiCommaDigits);

if(isNaN(uiSize))
{
return 0;
}

while(uiSize >= 1024)
{
uiStep++;
uiSize = uiSize/1024;
}

return Math.round(uiSize*uiCommaDigits)/uiCommaDigits+(bSpace == 1 ? "&nbsp;" : " ")+aSize[uiStep];
},

parseDigits: function(iNumber, uiComma)
{
var uiPower = Math.pow(10, uiComma);
var sNumber = new String(Math.ceil(iNumber * uiPower) / uiPower);
var aNumbers = sNumber.split(".");
var uiFiller = uiComma;

if(aNumbers.length == 2)
{
uiFiller = uiComma-aNumbers[1].length;
}
else
{
sNumber += ".";
}

for(var i=0;i<uiFiller;i++)
{
sNumber += "0";
}

return sNumber;
},

parseLength: function(uiLength)
{
var uiSeconds = uiLength % 60;
var uiMinutes = (uiLength - uiSeconds) / 60;

if(uiSeconds < 10)
{
uiSeconds = "0"+uiSeconds;
}

if(uiMinutes < 10)
{
uiMinutes = "0"+uiMinutes;
}

return uiMinutes+":"+uiSeconds;
},

parseUsername: function(oUser)
{
var sFullDetails = oUser["firstname"]+" "+oUser["lastname"]+" ("+oUser["age"]+")";

if(trim(oUser["city"]).length > 0)
{
sFullDetails += ", "+oUser["city"];
}

return trim(sFullDetails);
},

parseDateToString: function(sDate, sParseString)
{

var sTMP = DATE;
sTMP = str_replace("-", " ", sTMP);
sTMP = str_replace(":", " ", sTMP);

var aTMP = sTMP.split(" ");

var d = new Date(aTMP[0], aTMP[1]-1, aTMP[2], aTMP[3], aTMP[4], aTMP[5]);


var sTMP = sDate;
sTMP = str_replace("-", " ", sTMP);
sTMP = str_replace(":", " ", sTMP);

var aTMP = sTMP.split(" ");

var d2 = new Date(aTMP[0], aTMP[1]-1, aTMP[2], aTMP[3], aTMP[4], aTMP[5]);

var dtime = d.getTime();
var d2time = d2.getTime();
var diff = dtime - d2time;

var uiDays = Math.round(diff/86400000);
var uiHours = Math.round(diff/3600000);
var uiMinutes = Math.round(diff/60000);
var uiSeconds = Math.round(diff/1000);

if(uiDays == 1)
{
return "gestern um "+aTMP[3]+":"+aTMP[4];
}
else if(uiDays > 0 && uiDays <= 3)
{
return "vor "+uiDays+" Tagen (um "+aTMP[3]+":"+aTMP[4]+")";
}
else if(uiDays > 3)
{
return Functions.parseDate(sDate, sParseString);
}
else if(uiHours > 0 && uiHours < 24)
{
return "vor "+uiHours+" "+(uiHours == 1 ? "Stunde" : "Stunden");
}
else if(uiMinutes > 0 && uiMinutes < 60)
{
return "vor "+uiMinutes+" "+(uiMinutes == 1 ? "Minute" : "Minuten");
}
else
{
return "vor "+(uiSeconds < 0 ? 0 : uiSeconds)+" "+(uiSeconds == 1 ? "Sekunde" : "Sekunden");
}
},

parseDate: function(sDate, sReturn)
{
var aMonth = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];

sReturn = str_replace("%Y", sDate.substr(0,4), sReturn);
sReturn = str_replace("%y", sDate.substr(2,2), sReturn);
sReturn = str_replace("%m", sDate.substr(5,2), sReturn);
sReturn = str_replace("%M", aMonth[parseInt(sDate.substr(5,2))-1], sReturn);
sReturn = str_replace("%d", sDate.substr(8,2), sReturn);
sReturn = str_replace("%H", sDate.substr(11,2), sReturn);
sReturn = str_replace("%i", sDate.substr(14,2), sReturn);
sReturn = str_replace("%s", sDate.substr(17,2), sReturn);

return sReturn;
},

parseUser: function(oUser, bBold)
{
var sBoldClass = " fB f12";

if(bBold == 0)
{
sBoldClass = " f11";
}
var sRealName = [{span: {content: " "}}, {span: {cls: "fcGrey"+sBoldClass, content: "("+trim(oUser["firstname"]+" "+oUser["lastname"])+")"}}];

if(trim(oUser["firstname"]+" "+oUser["lastname"]).length == 0)
{
sRealName = {};
}

return [{a: {cls: sBoldClass, href: oUser["link"], content: oUser["username"]+" "}}, sRealName];
},

toStuffSite: function(sSitenameURL, sSecurityMatch, uiSSID)
{
Functions.relocate(PATH_HTTP+"stuffsite/"+sSitenameURL+","+sSecurityMatch+","+uiSSID+".html");
},

toggle: function(oDiv, oImage)
{
oImage = Functions.exists(oImage, null);

var sArrowUp = "iconButtonArrowUp cPointer";
var sArrowUpFade = "iconButtonArrowUpFade cPointer";
var sArrowDown = "iconButtonArrowDown cPointer";
var sArrowDownFade = "iconButtonArrowDownFade cPointer";

if(oDiv.style.display == "none")
{
EventRegistry.SlideDown(oDiv, {duration: 0.5});

if(oImage != null)
{
oImage.onmouseover = function() { HTML.setClass(oImage, sArrowUp); };
oImage.onmouseout = function() { HTML.setClass(oImage, sArrowUpFade); };

HTML.setClass(oImage, sArrowUp);
}
}
else
{
EventRegistry.SlideUp(oDiv, {duration: 0.5});

if(oImage != null)
{
oImage.onmouseover = function() { HTML.setClass(oImage, sArrowDown); };
oImage.onmouseout = function() { HTML.setClass(oImage, sArrowDownFade); };

HTML.setClass(oImage, sArrowDown);
}
}
},


toggleNode: function(oDiv, aImage, aClasses)
{
oImage = Functions.exists(oImage, null);

if(oDiv.style.display == "none")
{
EventRegistry.SlideDown(oDiv, {duration: 0.3});

for(var i=0;i<aImage.length;i++)
{
HTML.setClass(aImage[i], aClasses[i][1]);
}

return 1;
}
else
{
EventRegistry.SlideUp(oDiv, {duration: 0.3});

for(var i=0;i<aImage.length;i++)
{
HTML.setClass(aImage[i], aClasses[i][0]);
}

return 0;
}
},

hide: function(oObject)
{
oObject.style.display = "none";
},

show: function(oObject)
{
oObject.style.display = "";
},

enable: function(oObject)
{
oObject.enable();
},

disable: function(oObject)
{
oObject.disable();
},

truncate: function(sValue, sReplace, uiCut)
{
if(sValue.length > (uiCut + sReplace.length + 1))
{
sValue = sValue.substr(0, uiCut)+sReplace;
}

return sValue;
},

decodeEntities: function(sString)
{
sString = str_replace("&amp;", "&", sString);
sString = str_replace("&lt;", "<", sString);
sString = str_replace("&gt;", ">", sString);
sString = str_replace("&quot;", "\"", sString);
sString = str_replace("&nbsp;", " ", sString);
sString = str_replace("&auml;", "ä", sString);
sString = str_replace("&Auml;", "Ä", sString);
sString = str_replace("&ouml;", "ö", sString);
sString = str_replace("&Ouml;", "Ö", sString);
sString = str_replace("&uuml;", "ü", sString);
sString = str_replace("&Uuml;", "Ü", sString);
sString = str_replace("&szlig;", "ß", sString);

return sString;
},

encodeEntities: function(sString)
{
sString = str_replace("&", "&amp;", sString);
sString = str_replace("<", "&lt;", sString);
sString = str_replace(">", "&gt;", sString);
sString = str_replace("\"", "&quot;", sString);
sString = str_replace(" ", "&nbsp;", sString);
sString = str_replace("ä", "&auml;", sString);
sString = str_replace("Ä", "&Auml;", sString);
sString = str_replace("ö", "&ouml;", sString);
sString = str_replace("Ö", "&Ouml;", sString);
sString = str_replace("ü", "&uuml;", sString);
sString = str_replace("Ü", "&Uuml;", sString);
sString = str_replace("ß", "&szlig;", sString);

return sString;
},

stringShorter: function(sString, uiMaxLength, bOnEnd)
{
bOnEnd = Functions.exists(bOnEnd, 0);
sString = this.decodeEntities(sString);

var uiFront = Math.round(uiMaxLength/2)-1;
var uiBack = Math.round(uiMaxLength/2)-2;

var sReturn = "";

if(bOnEnd && sString.length > uiMaxLength)
{
sReturn += sString.substring(0, uiMaxLength-3);
sReturn += "...";
}
else if(sString.length > uiMaxLength)
{
sReturn += sString.substring(0, uiFront);
sReturn += "...";
sReturn += sString.substring(sString.length-uiBack, sString.length);
}
else
{
sReturn = sString;
}


return sReturn;
},

sringSplit: function(sString, uiStart, uiMaxLength)
{
sString = this.decodeEntities(sString);

if (sString.length >= uiMaxLength)
{
var sTemp = sString.substr(uiStart, uiMaxLength);
var sSplitString = sTemp.split(' ');

sSplitString.pop();
sString = sSplitString.join(" ");



return sString+" [...]";
}

return sString;
},


download: function(uiSFID, hSecurityMatch, sPrivatePassword, sExtraOptions)
{
_this = this;

if(!window["StuffSiteFilesFilesSFSecurityMatch"] || !window["StuffSiteFilesFilesSFID"] || !window["StuffSiteFilesFilesSSSecurityMatch"] || !window["StuffSiteFilesFilesSSID"])
{
if(window["StuffSiteFilesFilesSFSecurityMatch"] == "undefined" || window["StuffSiteFilesFilesSFID"] == "undefined" || window["StuffSiteFilesFilesSSSecurityMatch"] == "undefined" || window["StuffSiteFilesFilesSSID"] == "undefined")
{
alert("StuffSiteFilesFilesSFSecurityMatch\nStuffSiteFilesFilesSFID\nStuffSiteFilesFilesSSSecurityMatch\nStuffSiteFilesFilesSSID\nwurden nicht registriert!");
return 0;
}
}

StuffSiteFilesFilesSFSecurityMatch = hSecurityMatch;
StuffSiteFilesFilesSFID = uiSFID;

if(sPrivatePassword == 1)
{
Ext.MessageBox.prompt('Passwort', 'Bitte geben Sie das Passwort für den Download ein', function(btn, text) { _this.redirectAfterPasswordEntered(btn, text, sExtraOptions); });
}
else
{
this.redirectAfterPasswordEntered("ok", "", sExtraOptions);
}
},

multiDownload: function(oSeek)
{
var aValues = this.getAllCheckBoxValues(oSeek);

if(aValues.length > 0)
{
window.location.href = PATH_HTTP+"getform/multidownload-download/"+aValues.join("|")+".html";
}
else
{
Message.setNotice("Keine Datei ausgew&auml;hlt.");
}
},

play: function(oSeek, bShuffle, sSite, sData)
{
bShuffle = Functions.exists(bShuffle, 0);

var aValues = this.getAllCheckBoxValues(oSeek);

if(aValues.length > 0)
{
var aData = new Array();

for(var i=0;i<aValues.length;i++)
{
aData[aData.length] = aValues[i].split("-")[0];
}

if(sData.length > 0)
{
window.location.href = PATH_HTTP+sSite+"/"+aData.join("-")+","+bShuffle+","+sData+".html";
}
else
{
window.location.href = PATH_HTTP+sSite+"/"+aData.join("-")+","+bShuffle+".html";
}
}
else
{
Message.setNotice("Keine Datei ausgew&auml;hlt.");
}
},

multiPlay: function(oSeek, bShuffle)
{
bShuffle = Functions.exists(bShuffle, 0);
var aValues = this.getAllCheckBoxValues(oSeek);

if(aValues.length > 0)
{
aData = new Array();

for(var i=0;i<aValues.length;i++)
{
aData[aData.length] = aValues[i].split("-")[0];
}

window.location.href = PATH_HTTP+"stufffile-play/"+aData.join("-")+","+bShuffle+".html";
}
else
{
Message.setNotice("Keine Datei ausgew&auml;hlt.");
}
},

multiDelete: function(oSeek, oContainer, bRedirect, fCallBack)
{
fCallBack = Functions.exists(fCallBack, function() {});
bRedirect = Functions.exists(bRedirect, 0);

var aValues = this.getAllCheckBoxValues(oSeek);

if(aValues.length > 0)
{
aData = new Array();

for(var i=0;i<aValues.length;i++)
{
aData[aData.length] = Cache.lookup(aValues[i].split("-")[2]);
}

new Popup_DeleteStuffFile(oContainer, aData, bRedirect, fCallBack);
}
else
{
Message.setNotice("Keine Datei ausgew&auml;hlt.");
}
},

multiDeleteFavorites: function(oSeek, oContainer, bRedirect, fCallBack)
{
fCallBack = Functions.exists(fCallBack, function() {});
bRedirect = Functions.exists(bRedirect, 0);

var aValues = this.getAllCheckBoxValues(oSeek);

if(aValues.length > 0)
{
aData = new Array();

for(var i=0;i<aValues.length;i++)
{
aData[aData.length] = Cache.lookup(aValues[i].split("-")[2]);
}

new Popup_DeleteFavorite(oContainer, aData, bRedirect, fCallBack);
}
else
{
Message.setNotice("Keine Datei ausgew&auml;hlt.");
}
},

multiEdit: function(oSeek, sReturn)
{
var aValues = this.getAllCheckBoxValues(oSeek);

sReturn = Functions.exists(sReturn, "index");

if(aValues.length > 0)
{
aData = new Array();

for(var i=0;i<aValues.length;i++)
{
aData[aData.length] = aValues[i].split("-")[0];
}

window.location.href = PATH_HTTP+"stufffile-edit/"+aData.join("-")+",0,"+sReturn+".html";
}
else
{
Message.setNotice("Keine Datei ausgew&auml;hlt.");
}
},

getAllCheckBoxValues: function(oSeek)
{
var oInputs = oSeek.getElementsByTagName("input");
var aReturn = new Array();

for(var i=0;i<oInputs.length;i++)
{
if(oInputs[i].type == "checkbox" && oInputs[i].checked && oInputs[i].value.length > 0)
{
aReturn[aReturn.length] = oInputs[i].value;
}
}

return aReturn;
},

toggleAllCheckBoxes: function(oCheckboxReference, oSeek)
{
var oInputs = oSeek.getElementsByTagName("input");

for(var i=0;i<oInputs.length;i++)
{
if(oInputs[i].type == "checkbox")
{
oInputs[i].checked = oCheckboxReference.checked;
}
}
},

resetCheckBoxWithoutValue: function(oSeek)
{
var oInputs = oSeek.getElementsByTagName("input");
var oMainToggle = null;
var uiMainToggle = 0;

for(var i=0;i<oInputs.length;i++)
{
if(oInputs[i].type == "checkbox" && oInputs[i].value.length == 0)
{
oMainToggle = oInputs[i];
}
else if(oInputs[i].type == "checkbox" && oInputs[i].checked)
{
uiMainToggle++;
}
}

oMainToggle.checked = (oInputs.length == (uiMainToggle+1));
},

redirectAfterPasswordEntered: function(btn, text, sExtraOptions)
{

if(!window["StuffSiteFilesFilesSSID"])
{
var StuffSiteFilesFilesSSID = 0;
}


if(!window["StuffSiteFilesFilesSSSecurityMatch"])
{
var StuffSiteFilesFilesSSSecurityMatch = "";
}

if(btn == "ok")
{
window.location.href = PATH_HTTP+"getform/download-download/"+StuffSiteFilesFilesSSID+","+StuffSiteFilesFilesSSSecurityMatch+","+StuffSiteFilesFilesSFID+","+StuffSiteFilesFilesSFSecurityMatch+","+text+(sExtraOptions ? ","+sExtraOptions : "")+".html";
}
},

relocate: function(sURL)
{
window.location.href = sURL;
},

setRelativePosition: function(oObject, uiHeight, uiWidth)
{
oObject.style.marginTop = uiHeight+"px";
oObject.style.marginLeft = uiWidth+"px";
},

setOptionPosition: function(oObject, oReference)
{
var aDimension = Element.positionedOffset(oReference);
var uiWidth = oObject.getDimensions().width;
uiWidth = (uiWidth-48) * (-1);

oObject.style.width = oObject.getDimensions().width+"px";

oObject.style.left = aDimension[0];
oObject.style.top = aDimension[1];

this.setRelativePosition(oObject, -26, uiWidth);
},

keyExists: function(sKey, mObject, mDefault)
{
if(typeof mObject[sKey] === "undefined" || mObject[sKey] == null)
{
mObject[sKey] = mDefault;
}

return mObject;
},

exists: function(mObject, mDefault)
{
if(typeof mObject === "undefined" || mObject == null)
{
mObject = mDefault;
}

return mObject;
},

recursiveDecodeURI: function(oData)
{
var mProperty;

if(typeof oData === 'array' || typeof oData === 'object')
{
for (mProperty in oData)
{
if(typeof mProperty !== 'function')
{
oData[mProperty] = Functions.recursiveDecodeURI(oData[mProperty]);
}
}
}
else if(typeof oData !== 'function' && typeof oData !== "number")
{
oData = str_replace("+", " ", unescape(oData));
}

return oData;
},

createUniqueID: function()
{
return "idDyn_"+this._idCounter++;
},

getRandomNumber: function(uiMin, uiMax)
{
return uiMin + parseInt(Math.random() * (uiMax-uiMin+1));
},

stopLoader: function(oLoader)
{
if(oLoader)
{
oLoader.finished();
}
},

slideDown: function(oDiv)
{
if(oDiv.style.display != "")
{
EventRegistry.SlideDown(oDiv, {duration: 0.5});
}
},

slideUp: function(oDiv)
{
if(oDiv.style.display != "none")
{
EventRegistry.SlideUp(oDiv, {duration: 0.5});
}
},

validEmail: function(sEmail)
{
var filter = /^([\w_\.\-])+\@(([\w\-])+\.)+([\w]{2,4})$/;
return filter.test(sEmail);
},

parseBBCode: function(sBBCode)
{
sBBCode = trim(sBBCode);

function rep(re, str)
{
sBBCode = sBBCode.replace(re, str);
};

rep(/\n/gi,"<br />");
rep(/\[b\]/gi,"<strong>");
rep(/\[\/b\]/gi,"</strong>");
rep(/\[i\]/gi,"<em>");
rep(/\[\/i\]/gi,"</em>");
rep(/\[u\]/gi,"<u>");
rep(/\[\/u\]/gi,"</u>");
rep(/\[ul\]/gi,"<ul>");
rep(/\[\/ul\]/gi,"</ul>");
rep(/\[ol\]/gi,"<ol>");
rep(/\[\/ol\]/gi,"</ol>");
rep(/\[li\]/gi,"<li>");
rep(/\[\/li\]/gi,"</li>");
rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");
rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");
rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");
rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");
rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span>&nbsp;");
rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span>&nbsp;");

return sBBCode;
},

assureContent: function(sCheck, sDefault)
{
var sString = new String(sCheck);

if(trim(sString).length == 0)
{
sString = sDefault;
}

return sString;
},

getStatusName: function(uiStatus)
{
return this.aStaten[uiStatus];
},

getSessionID: function()
{
return window.document.cookie.substring(window.document.cookie.indexOf("PHPSESSID"+"=")+("PHPSESSID".length+1)).split(";")[0];
},

prepareStringForSort: function(sString)
{
sString = sString.toLowerCase();
sString = sString.replace(/ä/g,"a");
sString = sString.replace(/ö/g,"o");
sString = sString.replace(/ü/g,"u");
sString = sString.replace(/ß/g,"s");

return sString;
}
};
var Cache =
{
_aData: new Array(),

insert: function(oObject)
{
uiReturn = -1;

if(!isNaN(oObject["cacheid"]) && oObject["cacheid"] > 0)
{
uiReturn = this._set(oObject, oObject["cacheid"]);
}
else
{
uiReturn = this._set(oObject, this._aData.length);
}

oObject["cacheid"] = uiReturn;

return oObject;
},

lookup: function(uiIndex)
{
return this._aData[uiIndex];
},

_set: function(oObject, uiIndex)
{
this._aData[uiIndex] = oObject;

return uiIndex;
},

getObjectsByIDs: function(aIDs)
{
var aReturn = new Array();

for(var i=0;i<aIDs.length;i++)
{
if(this.lookup(aIDs[i]) != null)
{
aReturn[aReturn.length] = this.lookup(aIDs[i]);
}
}

return aReturn;
}
};
var Message = Class.create();

Message.prototype =
{

initialize: function ()
{
this._cSuccess = 1;
this._cNotice = 2;
this._cError = 3;

this._bShow = 0;
this._oTimeout = null;
this._sTable = 'idMessageTable';
this._sDiv = 'idMessageContainer';
this._sContent = 'idMessageContent';
this._sDescription = 'idMessageDescription';
this._uiDuration = 0.5;
this._uiShowTimeMinimum = 5000;
this._uiShowTimePerLetter = 6;
this._bLock = 0;
},

lock: function()
{
this._bLock = 1;
},

unlock: function()
{
this._bLock = 0;
},

isLocked: function()
{
return this._bLock;
},

setSuccess: function(sMessage)
{
this.show(sMessage, this._cSuccess);
},

setNotice: function(sMessage)
{
this.show(sMessage, this._cNotice);
},

setError: function(sMessage)
{
this.show(sMessage, this._cError);
},


show: function(sMessage, sType)
{
if(this.isLocked() == 0)
{
Functions.setToMiddle();

if(sMessage != null)
{
switch(sType)
{
case this._cSuccess:
HTML.setClass($(this._sTable), "MessageWrapperSuccess cPointer");
$(this._sDescription).innerHTML = Language.get("wrapper_success_description");
break;
case this._cNotice:
HTML.setClass($(this._sTable), "MessageWrapperNotice cPointer");
$(this._sDescription).innerHTML = Language.get("wrapper_notice_description");
break;
case this._cError:
HTML.setClass($(this._sTable), "MessageWrapperError cPointer");
$(this._sDescription).innerHTML = Language.get("wrapper_error_description");
break;
}

if(this._oTimeout != null)
{
$(this._sContent).innerHTML += "<br>"+sMessage;
}
else
{
$(this._sContent).innerHTML = sMessage;
}
}
else
{
sMessage = $(this._sContent).innerHTML;
}

if(this._oTimeout != null)
{
clearTimeout(this._oTimeout);
}

if(this._bShow == 0)
{
EventRegistry.SlideDown($(this._sDiv), { duration: this._uiDuration });
setTimeout("Functions.setToMiddle();", this._uiDuration*1100);
this._bShow = 1;
}

var uiTimeout = this._uiShowTimeMinimum + this._uiShowTimePerLetter * $(this._sContent).innerHTML.length;

this._oTimeout = setTimeout("Message.hide();", uiTimeout);
}
else
{
setTimeout("Message.show('"+sMessage+"', "+sType+")", this._uiDuration*500);
}
},

hide: function()
{
if(this._oTimeout != null)
{
clearTimeout(this._oTimeout);
}

this.lock();

EventRegistry.SlideUp($(this._sDiv), { duration: this._uiDuration });

this.unlock();
this._oTimeout = null;
this._bShow = 0;
}
};

Message = new Message();
var Debug =
{
_counter: 1,
_init: 0,

create: function()
{
$('debug').style.display = "block";
},

add: function(sText)
{
if(this._init == 0)
{
this._init = 1;
this.create();
}

$('debug').innerHTML += "<br><b>"+this._counter+".</b> "+sText;
this._counter++;
},

replace: function(sText)
{
if(this._init == 0)
{
this._init = 1;
this.create();
}

$('debug').innerHTML = "<br><b>"+this._counter+".</b> "+sText;
this._counter++;
},

methods: function(oObject, bExtended)
{
var sJoin = "";
aProperties = new Array();

for (var fProperty in oObject)
{
if(bExtended == 1)
{
aProperties.push("<strong>"+fProperty+"</strong> => "+oObject[fProperty]);
sJoin = "<br>";
}
else
{
aProperties.push(fProperty);
sJoin = ", ";
}
}

aProperties.sort();

this.add("<strong>Funktionsübersicht</strong><br><br>"+aProperties.join(sJoin)+"<br>");
},

object: function(oObject, uiDepthMax)
{
uiDepthMax = Functions.exists(uiDepthMax, 10);

this.add(this._object(oObject, "", uiDepthMax));
},

_object: function(oObject, sSpacer, uiDepthMax)
{
sReturn = "";

if(uiDepthMax > 0)
{
var uiLength = 0;

try
{
uiLength = oObject.length;
}
catch(e) { }

if(uiLength > 0)
{
for(var i=0;i<uiLength;i++)
{
sReturn += sSpacer+"<strong>"+i+"</strong>: ";
sReturn += '<span class="fcBlue">array</span> <br>'+sSpacer+"{<br>"+this._object(oObject[i], (sSpacer+"&nbsp;&nbsp;&nbsp;"), (uiDepthMax-1))+sSpacer+"}";
sReturn += "<br>";
}
}
else
{
for (var fProperty in oObject)
{
sReturn += sSpacer+"<strong>"+fProperty+"</strong>: ";

if(typeof oObject[fProperty] == "function")
{
sReturn += '<span class="fcGreen">function</span>';
}
else if(typeof oObject[fProperty] == "object")
{
sReturn += '<span class="fcBlue">object</span> <br>'+sSpacer+"{<br>"+this._object(oObject[fProperty], (sSpacer+"&nbsp;&nbsp;&nbsp;"), (uiDepthMax-1))+sSpacer+"}";
}
else
{
sReturn += '<span class="fcRed">'+oObject[fProperty]+"</span>";
}

sReturn += "<br>";
}
}
}
else
{
sReturn = sSpacer+"[...]<br>";
}

return sReturn;
}
};
var EventRegistry =
{
_aObjects: {click: new Array()},
_aEffects: new Array(),

addOnClickEvent: function(oObject, sFunction, cbFunction)
{
var oObj = new Object();

oObj["object"] = oObject;
oObj["function"] = sFunction;
oObj["callback"] = cbFunction;

this._aObjects["click"][this._aObjects["click"].length] = oObj;
},

performOnClick: function()
{
var oObj;
var bPerform;

for(var i=0;i<this._aObjects["click"].length;i++)
{
oObj = this._aObjects["click"][i];

bPerform = 1;

if(oObj["callback"])
{
bPerform = oObj["callback"]();
}

if(bPerform)
{
oObj["object"][oObj["function"]]();
}
}
},

unregisterEffect: function(uiEffectID)
{
this._aEffects[uiEffectID] = null;
},

registerEffect: function(oObject, oOptions)
{
var uiUnusedSlot = -1;

for(var i=0;i<this._aEffects.length;i++)
{
if(oObject != null && this._aEffects[i] == oObject)
{
return 0;
}

if(this._aEffects[i] == null && uiUnusedSlot == -1)
{
uiUnusedSlot = i;
}
}

if(uiUnusedSlot == -1)
{
uiUnusedSlot = this._aEffects.length;
}

this._aEffects[uiUnusedSlot] = oObject;

setTimeout("EventRegistry.unregisterEffect("+uiUnusedSlot+");", oOptions["duration"]*1000);

return 1;
},

Fade: function(oObject, oOptions)
{
if(this.registerEffect(oObject, oOptions) == 1)
{
new Effect.Fade(oObject, oOptions );
}
},

FadeAppearToggle: function(oObject, oDuration)
{
if(oObject.style.display == "")
{
EventRegistry.Fade(oObject, {duration: oDuration});
}
else
{
EventRegistry.Appear(oObject, {duration: oDuration});
}
},

Appear: function(oObject, oOptions)
{
if(this.registerEffect(oObject, oOptions) == 1)
{
new Effect.Appear(oObject, oOptions);
}
},

SlideUp: function(oObject, oOptions)
{
if(this.registerEffect(oObject, oOptions) == 1)
{
new Effect.SlideUp(oObject, oOptions );
}
},

SlideDown: function(oObject, oOptions)
{
if(this.registerEffect(oObject, oOptions) == 1)
{
new Effect.SlideDown(oObject, oOptions);
}
},

SlideToggle: function(oObject, oDuration)
{

if(oObject.style.display == "")
{
EventRegistry.SlideUp(oObject, {duration: oDuration});
}
else
{
EventRegistry.SlideDown(oObject, {duration: oDuration});
}
}
};
var Favorite = Class.create();

Favorite.prototype =
{

initialize: function()
{
this.CLASS_IMG_NO_FAV = "iconFavoriteInactive";
this.CLASS_IMG_FAV = "iconFavorite";
this.TEXT_ADD_TO_FAV = "zu Favoriten";
this.TEXT_REMOVE_FROM_FAV = "Favorit entfernen";
this.TEXT_ADDING_FAV = "füge hinzu...";
this.TEXT_REMOVING_FAV = "entferne...";

this._uiSSID = 0;
this._uiSFID = 0;
this._oImg = null;
this._oText = null;

this._oDeleteCallBackPaginator = null;
this._oCounter = null;
},

getSFID: function(){ return this._uiSFID; },
getSSID: function(){ return this._uiSSID; },
getImg: function(){ return this._oImg; },
getText: function(){ return this._oText; },

setSFID: function(uiParam){ this._uiSFID = uiParam; },
setSSID: function(uiParam){ this._uiSSID = uiParam; },
setImg: function(oParam){ this._oImg = oParam; },
setText: function(oParam){ this._oText = oParam; },

setTextByClass: function()
{
if(HTML.getClass(this.getImg()) == this.CLASS_IMG_NO_FAV)
{
this.getText().innerHTML = this.TEXT_ADD_TO_FAV;
}
else
{
this.getText().innerHTML = this.TEXT_REMOVE_FROM_FAV;
}

},

toggle: function()
{
if(UID > 0)
{
if(HTML.getClass(this.getImg()) == this.CLASS_IMG_NO_FAV)
{
this.getText().innerHTML = this.TEXT_ADDING_FAV;
}
else
{
this.getText().innerHTML = this.TEXT_REMOVING_FAV;
}

aData = new Array();
aData[0] = "ssid="+this.getSSID();
aData[1] = "sfid="+this.getSFID();

var _this = this;

new Ajax.Request(PATH_HTTP+"ajax/toggle-favorite.html", {
method: 'post',
parameters: aData.join("&"),
onSuccess: function(oTransport)
{
var oData = JSON.parse(oTransport.responseText);

if(oData["ec"] == EC.SUCCESS)
{
if(oData["status"] == EC.NOT_FAVORITED)
{
HTML.setClass(_this.getImg(), _this.CLASS_IMG_NO_FAV);
_this.setTextByClass();
}
else if(oData["status"] == EC.FAVORITED)
{
HTML.setClass(_this.getImg(), _this.CLASS_IMG_FAV);
_this.setTextByClass();
}
}
}
});
}
else
{
Message.setNotice("Du musst dich anmelden um die Datei zu favorisieren.");
}
},

multiFavorite: function(oSeek)
{
var aValues = Functions.getAllCheckBoxValues(oSeek);

if(aValues.length > 0)
{
var aData = new Array();
aData[0] = "sfid="+aValues.join(",");

new Ajax.Request(PATH_HTTP+"ajax/multifavorites-stufffile.html", {
method: 'post',
parameters: aData.join("&"),
onSuccess: function(oTransport)
{
var oData = JSON.parse(oTransport.responseText);

if(oData["ec"] == EC.SUCCESS)
{
Message.setSuccess("Dateien erfolgreich favorisiert.");
}
else
{
Message.setError("Fehler aufgetreten");
}
}
});
}
else
{
Message.setNotice("Keine Datei ausgew&auml;hlt.");
}
},

deleteFavorites: function(oSeek, oCallBackPaginator, oCounter, oContainer)
{
this._oDeleteCallBackPaginator = oCallBackPaginator;
this._oCounter = oCounter;
var aValues = Functions.getAllCheckBoxValues(oSeek);
var aData = new Array();

if(aValues.length > 0)
{
for(var i=0;i<aValues.length;i++)
{
aData.push(Cache.lookup(aValues[i].split("-")[2]));
}

new Popup_DeleteFavorite(oContainer, aData);
}
else
{
Message.setNotice("Du hast keine Datei ausgew&auml;hlt die du aus deinen Favoriten l&ouml;schen willst.");
}
},

performDeleteFavorites: function(aSFIDs)
{
var _this = this;
var aData = new Array();
aData[0] = "sfid="+aSFIDs.join("-");

new Ajax.Request(PATH_HTTP+"ajax/delete-favorite.html", {
method: 'post',
parameters: aData.join("&"),
onSuccess: function(oTransport)
{
var oData = JSON.parse(oTransport.responseText);

if(oData["ec"] == EC.SUCCESS)
{
_this._oCounter.innerHTML = eval(_this._oCounter.innerHTML)-oData["removed"];
_this._oDeleteCallBackPaginator.clearData();
_this._oDeleteCallBackPaginator.getPaginator().setTotalAmount(_this._oDeleteCallBackPaginator.getPaginator().getTotalAmount()-oData["removed"], 0);
_this._oDeleteCallBackPaginator.getPaginator().reload();

Message.setSuccess("Dateien erfolgreich von deiner Favoritenliste gel&ouml;scht.");
}
else
{
Message.setError("Fehler aufgetreten");
}
}
});
}
};

Favorite = new Favorite();
var PhotoFlow = Class.create();

PhotoFlow.prototype =
{

initialize: function() { },

createPhotoFlow: function(oDiv, sXMLPath, oConfig)
{
oConfig = Functions.exists(oConfig, new Object());
oConfig = Functions.keyExists("width", oConfig, 670);
oConfig = Functions.keyExists("height", oConfig, 300);
oConfig = Functions.keyExists("minversion", oConfig, "9.0.0");

var aParams = {};
var aAttributes = {};
aAttributes.wmode = "transparent";
var aFlashvars = {};
aFlashvars.xmlPath = sXMLPath;

swfobject.embedSWF(PATH_HTTP+"resources/flash/photoflow/iTunesAlbumArt.swf", oDiv.id, oConfig["width"], oConfig["height"], oConfig["minversion"],"", aFlashvars, aParams, aAttributes);
}
};

PhotoFlow = new PhotoFlow();
var Advise = Class.create();

Advise.prototype =
{

initialize: function(oContainer, oInput, sURL, sClassWidth)
{
this._oContainer = oContainer;
this._sClassWidth = sClassWidth;
this._oInput = oInput;
this._sURL = sURL;
this._uiLimit = 10;
this._uiWidth = 200;
this._uiIndex = null;
this._uiTotal = null;
this._sLastValue = "";
this._aDataStorage = null;
},

setLimit: function(uiLimit) { this._uiLimit = uiLimit; },
setWidth: function(uiWidth) { this._uiWidth = uiWidth; },
setIndex: function(uiIndex) { this._uiIndex = uiIndex; },
setTotal: function(uiTotal) { this._uiTotal = uiTotal; },

getLimit: function() { return this._uiLimit; },
getWidth: function() { return this._uiWidth; },
getContainer: function() { return this._oContainer; },
getInput: function() { return this._oInput; },
getURL: function() { return this._sURL; },
getIndex: function() { return this._uiIndex; },
getTotal: function() { return this._uiTotal; },

perform: function()
{
if(this._sLastValue != HTML.getValue(this.getInput()))
{
if(HTML.getValue(this.getInput()).length > 1)
{
this._queryAjax();
}

this._sLastValue = HTML.getValue(this.getInput());
}
},

hide: function()
{
this.getContainer().style.display = "none";
},

_keyEvent: function(oEvent)
{
var uiKeyCode;

if(window.event != null)
{
uiKeyCode = window.event.keyCode;
}
else
{
uiKeyCode = oEvent.keyCode;
}

switch(uiKeyCode)
{
case 38:// up
this._selectPrevItem();
return false;

case 40:// down
this._selectNextItem();
return false;

case 13:// enter
case 9:// tab
case 27:// esc
this.hide();
}

return true;
},

show: function(aData)
{
this._aDataStorage = aData;
HTML.cleanContainer(this.getContainer());
_this = this;
this.setIndex(null);
this.getInput().onkeydown = function(oEvent) { return _this._keyEvent(oEvent); };

if(!aData)
{
this.setTotal(0);
var oDiv = HTML.createTagWithContent("div", "kein Vorschlag vorhanden...");
HTML.setClass(oDiv, "pLR10 pT2 pB2 cPointer");
HTML.setClass(this.getContainer(), "mT16 b1 bsSolid bcLightGrey bgWhite "+this._sClassWidth);

oDiv.style.zIndex = 100;
this.getContainer().appendChild(oDiv);
}
else
{
this.setTotal(aData.length);

for(var i=0;i<aData.length;i++)
{
oAdvise = aData[i];

oAdvise = Functions.keyExists("avatar", oAdvise, "");

if(oAdvise["avatar"].length == 0)
{
var oMeta = { table: {
tbody:
{tr:
{td: {content: oAdvise["advise"]}}
}
}
};
}
else
{
var sFullname = trim(oAdvise["firstname"]+" "+oAdvise["lastname"]);

if(sFullname.length == 0)
{
sFullname = "kein Name angegeben";
}

var oMeta = { table: {
tbody: [
{tr: [
{td: {rowspan: 2, img: { cls:"w30", src: oAdvise["avatar"]}}},
{td: {rowspan: 2, cls: "w10", img: {src: PATH_IMG+"spacer.gif"}}},
{td: {content: oAdvise["advise"]}}
]
},
{tr: {td: {cls: "fcGrey", content: sFullname}}}
]
}
};
}


var oDiv = HTML.createTag("div");
HTML.setClass(oDiv, "pLR10 pT2 pB2 cPointer");

oDiv.appendChild(ObjectCreator.perform(oMeta));

this._registerDivContainerOnClick(oDiv, this.getInput(), oAdvise["value"]);
this._registerDivContainerOnMouseOver(oDiv);
this._registerDivContainerOnMouseOut(oDiv);


HTML.setClass(this.getContainer(), "mT16 b1 bsSolid bcLightGrey bgWhite "+this._sClassWidth);

oDiv.style.zIndex = 1000;
this.getContainer().appendChild(oDiv);
}
}

this.getContainer().style.display = "block";
},

_selectItem: function(uiIndex)
{
this.setIndex(uiIndex);

for(var i=0;i<this.getContainer().childNodes.length;i++)
{
if(i == uiIndex)
{
HTML.setClass(this.getContainer().childNodes[i], "bgLightGrey pLR10 pT2 pB2 cPointer");
this.getInput().value = this._aDataStorage[i]["value"];
this._sLastValue = this._aDataStorage[i]["value"];
}
else
{
HTML.setClass(this.getContainer().childNodes[i], "pLR10 pT2 pB2 cPointer");
}
}
},

_selectNextItem: function()
{
var uiIndex = this.getIndex();

if(uiIndex == null || (uiIndex+1) == this.getTotal())
{
uiIndex = 0;
}
else
{
uiIndex++;
}

this._selectItem(uiIndex);
},

_selectPrevItem: function()
{
var uiIndex = this.getIndex();

if(uiIndex == null)
{
uiIndex = 0;
}
else if((uiIndex-1) < 0)
{
uiIndex = (this.getTotal()-1);
}
else
{
uiIndex--;
}

this._selectItem(uiIndex);
},

_registerDivContainerOnClick: function(oObject, oInput, sValue)
{
var _this = this;
oObject.onclick = function() { oInput.value = sValue; _this.hide(); };
},

_registerDivContainerOnMouseOver: function(oObject)
{
var _this = this;
oObject.onmouseover = function() { _this._selectItem(-1); HTML.setClass(oObject, "bgLightGrey pLR10 pT2 pB2 cPointer"); };
},

_registerDivContainerOnMouseOut: function(oObject)
{
oObject.onmouseout = function() { HTML.setClass(oObject, 'pLR10 pT2 pB2 cPointer'); };
},

_queryAjax: function()
{
var _this = this;
var cbFunction = function(aData)
{
if(oData["ec"] == EC.SUCCESS)
{
_this.show(oData["advise"]);
}
};

var aData = new Object();
aData["filter"] = HTML.getValue(this.getInput());
aData["limit"] = this.getLimit();

LS.query(_this.getURL(), aData, cbFunction);
}
};
var AdviseContact = Class.create();

AdviseContact.prototype =
{

initialize: function(oContainer, oInput, oCallBackClass)
{
this._oContainer = oContainer;
this._oInput = oInput;
this._uiLimit = 10;
this._uiWidth = 200;
this._sLastValue = "";
this._sURL = PATH_HTTP+"ajax/advise-contact.html";
this._oCallBackClass = oCallBackClass;
},

setLimit: function(uiLimit) { this._uiLimit = uiLimit; },
setWidth: function(uiWidth) { this._uiWidth = uiWidth; },

getLimit: function() { return this._uiLimit; },
getWidth: function() { return this._uiWidth; },
getContainer: function() { return this._oContainer; },
getInput: function() { return this._oInput; },
getURL: function() { return this._sURL; },

perform: function()
{
if(this._sLastValue != HTML.getValue(this.getInput()))
{
if(HTML.getValue(this.getInput()).length > 1)
{
this._queryAjax();
}
}
},

_queryAjax: function()
{
var _this = this;
var cbFunction = function(aData)
{
if(oData["ec"] == EC.SUCCESS)
{
_this._oCallBackClass.show(oData["user"]);
}
};

var aData = new Object();
aData["input"] = HTML.getValue(this.getInput());
aData["limit"] = this.getLimit();

LS.query(_this.getURL(), aData, cbFunction);
}
};
var DownloadBar = Class.create();

DownloadBar.prototype =
{

initialize: function(oImg, oContainer, sDownloadText, sLinkname, sFilename, uiSFID, sSecurityMatch)
{
this.MAX_WIDTH = 670;
this._oContainer = oContainer;
this._oImg = oImg;
this._sDownloadText = sDownloadText;
this._uiSFID = uiSFID;
this._sFilename = sFilename;
this._sLinkname = sLinkname;
this._sSecurityMatch = sSecurityMatch;
this._aDownloadObjects = new Array();
this.uiSelectedIndex = 0;

this._bRelocator = 1;
this._bCCL = 1;
this._bOriginal = 0;
},

getDownloadText: function(){ return this._sDownloadText; },
getClassName: function(){ return this._sClassName; },
getSecurityMatch: function(){ return this._sSecurityMatch; },
getFilename: function(){ return this._sFilename; },
getLinkname: function(){ return this._sLinkname; },
getSFID: function(){ return this._uiSFID; },

setNoCCL: function(){ this._bCCL = 0; },
setOriginal: function(){ this._bOriginal = 1; },
setClassName: function(sParam){ this._sClassName = sParam; },
setRelocator: function(bParam){ this._bRelocator = bParam; },

add: function(sTitle, sSubTitle, uiFilesize, sFilePath, sExtra, bActive, cbFunction)
{
oDownload = new Object();
oDownload["title"] = sTitle;
oDownload["subtitle"] = sSubTitle;
oDownload["filesize"] = uiFilesize;
oDownload["filepath"] = sFilePath;
oDownload["extra"] = (sExtra ? sExtra : "");
oDownload["active"] = bActive;
oDownload["function"] = cbFunction;

this._aDownloadObjects[this._aDownloadObjects.length] = oDownload;

},

reset: function()
{
this._aDownloadObjects = new Array();
},

create: function(uiSelectedIndex)
{
this.uiSelectedIndex = uiSelectedIndex;

var oDownload, oNormalDownl;
var oDownloadObjects = this._aDownloadObjects;
var oTable, oTBody, oTr, oTd, oA, oText;

HTML.cleanContainer(this._oContainer);

oTable = ObjectCreator.perform({table: {cls: "w670"}});
oTBody = ObjectCreator.perform({tbody: {}});
oTr = ObjectCreator.perform({tr: {}});

oTable.appendChild(oTBody);
oTBody.appendChild(oTr);
oTr.appendChild(ObjectCreator.perform({td: {cls: "C", img: {cls:"iconDownloadSizes", src: PATH_IMG+"spacer.gif"}}}));
oTr.appendChild(ObjectCreator.perform({td: {cls:"pR10 C f14 fB bR1SE8", content: "Gr&ouml;&szlig;en:"}}));

for(var i=0;i<oDownloadObjects.length;i++)
{
oDownload = oDownloadObjects[i];

oTd = HTML.createTag("td");

if(uiSelectedIndex == i)
{
oA = HTML.createTagWithContent("span", oDownload["title"]);
HTML.setClass(oTd, "p10 C bR1SE8 bgBlue w50");
HTML.setClass(oA, "fB f12 fcWhite");
}
else if(oDownload["active"] == 0)
{
oA = HTML.createTagWithContent("span", oDownload["title"]);
HTML.setClass(oTd, "p10 C bR1SE8 fcGrey w50");
HTML.setClass(oA, "fB f12 fcGrey");
}
else
{
oA = HTML.createTagWithContent("a", oDownload["title"]);
HTML.setClass(oTd, "p10 C bR1SE8 w50");
HTML.setClass(oA, "fB f12");
HTML.createAttribute("href", "javascript:void(0);", oA);

if(this._bOriginal == 0)
{
if(this._bRelocator == 0 || this.MAX_WIDTH >= eval(oDownload["subtitle"].split("x")[0]))
{
HTML.createAttribute("onclick", this.getClassName()+".create("+i+");", oA);
}
else
{
HTML.createAttribute("onclick", "Functions.relocate('"+PATH_HTTP+"stufffile-original/"+this.getLinkname()+","+this.getSecurityMatch()+","+this.getSFID()+","+i+".html');", oA);
}
}
else
{
if(this.MAX_WIDTH < eval(oDownload["subtitle"].split("x")[0]))
{
HTML.createAttribute("onclick", this.getClassName()+".create("+i+");", oA);
}
else
{
HTML.createAttribute("onclick", "Functions.relocate('"+PATH_HTTP+"stufffile/"+this.getLinkname()+","+this.getSecurityMatch()+","+this.getSFID()+","+i+".html');", oA);
}
}
}

oTd.appendChild(oA);
oTd.innerHTML += "<br>"+oDownload["subtitle"];

oTr.appendChild(oTd);
}

oDownload = oDownloadObjects[uiSelectedIndex];

if(oDownload["extra"] != "")
{
if(this._bOriginal == 0)
{
this._oImg.style.backgroundImage = "url("+oDownload["filepath"]+")";
}
else
{
this._oImg.src = oDownload["filepath"];
}
}

var oDiv;

if(this._bCCL == 0)
{
oDiv = HTML.createTagWithContent("div", "<strong>"+Functions.stringShorter(this._sFilename, 25)+"</strong> ("+Functions.parseSize(oDownload["filesize"])+")");
}
else
{
oDiv = HTML.createTagWithContent("div", "<strong>"+Functions.stringShorter(this._sFilename, 25)+"</strong> ("+Functions.parseSize(oDownload["filesize"])+")<br>"+str_replace("_TEXT_", oDownload["title"], this._sDownloadText));
}

oTd = HTML.createTag("td");

oTd.appendChild(oDiv);
HTML.setClass(oTd, "R pL10");
HTML.setClass(oDiv, "w220 floatRight");

oTr.appendChild(oTd);

if(this._bCCL == 1)
{
var oImg = HTML.createTag("img");
oTd = HTML.createTag("td");
oA = HTML.createTag("a");

HTML.createAttribute("href", "javascript:Functions.download("+this.getSFID()+",'"+this.getSecurityMatch()+"',0"+(oDownload["extra"].length > 0 ? ",'"+oDownload["extra"]+"'" : "")+");", oA);
HTML.createAttribute("src", PATH_IMG+"spacer.gif", oImg);
HTML.createAttribute("title", this._sFilename+" downloaden", oImg);
HTML.setClass(oImg, "iconDownloadBig");
HTML.setClass(oTd, "R");

oTd.appendChild(oA);
oA.appendChild(oImg);
HTML.setClass(oTd, "pL10");

oTr.appendChild(oTd);
}

this._oContainer.appendChild(oTable);
}
};
var ScaleEditor = Class.create();

ScaleEditor.prototype =
{
initialize: function(oAllData)
{
this.TAGS = "tags";
this.DESCRIPTION = "description";
this.TITLE = "title";

this._oAllData = oAllData;
this._sField = null;

this._sTitle = "idSFECTitle";
this._sTags = "idSFECTags";
this._sDescription = "idSFECDescription";
},

getField: function() { return this._sField; },
getAllData: function() { return this._oAllData; },

setField: function(sParam) { this._sField = sParam; },

appendData: function(sValue)
{
this._appendData(sValue, this.getAllData());
},

replaceData: function(sValue)
{
this._replaceData(sValue, this.getAllData());
},

_appendData: function(sValue, oObject)
{
var aData = Functions.getAllCheckBoxValues(this._oAllData);

for(var i=0;i<aData.length;i++)
{
var oField;

switch(this.getField())
{
case this.TAGS: oField = $(this._sTags+aData[i]); break;
case this.DESCRIPTION: oField = $(this._sDescription+aData[i]); break;
case this.TITLE: oField = $(this._sTitle+aData[i]); break;
}

var aOld = this._split(oField.value);
var aNew = this._split(sValue);

for(var j=0;j<aOld.length;j++)
{
for(var k=0;k<aNew.length;k++)
{
if(aOld[j] == aNew[k])
{
aNew.splice(k, 1);
}
}
}

for(var j=0; j<aNew.length;j++)
{
if(aNew[j].length > 0)
{
aOld[aOld.length] = aNew[j];
}
}


oField.value = aOld.join(", ");
}
},

_split: function(sValue)
{
var aSplit = sValue.split(",");
var aReturn = new Array();

for(var i=0;i<aSplit.length;i++)
{
if(trim(aSplit[i]).length != 0)
{
aReturn.push(trim(aSplit[i]));
}
}

return aReturn;
},

_replaceData: function(sValue, oObject)
{
var aData = Functions.getAllCheckBoxValues(this._oAllData);

for(var i=0;i<aData.length;i++)
{
var oField;

switch(this.getField())
{
case this.TAGS: oField = $(this._sTags+aData[i]); break;
case this.DESCRIPTION: oField = $(this._sDescription+aData[i]); break;
case this.TITLE: oField = $(this._sTitle+aData[i]); break;
}

oField.value = sValue;
}
}
};
var Popup =
{
_oLastDestination: null,
_bLock: 0,
_sIdPopup: "idPopup",

center: function(oContent, oDestination, fCallBackOnFinished)
{
$("idMPc").style.height = Functions.getPageSize()[1]+'px';
Functions.show($("idMPc"));

var oDestination = $(this._sIdPopup);

fCallBackOnFinished = Functions.exists(fCallBackOnFinished, function() {});

if(this._oLastDestination != null)
{
this.hide(1);
}

HTML.cleanContainer(oDestination);

$("idMPc").style.zIndex = 9999999999998;
oDestination.style.position = "absolute";
oDestination.style.zIndex = 9999999999999;
oDestination.appendChild(oContent);

Functions.setToCenter(oDestination);

this._oLastDestination = oDestination;
this.setLock();

fCallBackOnFinished();
},

show: function(oContent, oDestination, uiWidth, uiHeight, fCallBackOnFinished)
{
uiWidth = Functions.exists(uiWidth, 0);
uiHeight = Functions.exists(uiHeight, 0);
fCallBackOnFinished = Functions.exists(fCallBackOnFinished, function() {});

if(this._oLastDestination != null)
{
this.hide(1);
}

Functions.setRelativePosition(oDestination, uiHeight-oDestination.getHeight(), uiWidth);

HTML.cleanContainer(oDestination);
$("idMPc").style.zIndex = 9999999999998;
oDestination.style.position = "absolute";
oDestination.style.zIndex = 9999999999999;
oDestination.appendChild(oContent);

this._oLastDestination = oDestination;
this.setLock();

fCallBackOnFinished();
},

hide: function(bForce)
{
bForce = Functions.exists(bForce, 0);

if(bForce == 1)
{
this.setUnlock();
}

if(this._bLock == 0 && this._oLastDestination != null)
{
Functions.hide($("idMPc"));
HTML.cleanContainer(this._oLastDestination);
this._oLastDestination = null;
}
},

setUnlock: function()
{
this._bLock = 0;
},

setLock: function()
{
this._bLock = 1;
}
};
var TimerAction =
{
_uiTime: 500,
_oTimer: new Object(),

start: function(sID, sFunction, mParameter, uiTime)
{
uiTime = Functions.exists(uiTime, this._uiTime);

this._start(sID, sFunction, uiTime, mParameter);
},

stop: function(sID)
{
sID = Functions.exists(sID, "null");

this._oTimer = Functions.keyExists(sID, this._oTimer, new Object());
this._oTimer[sID]["timer"] = this._oTimer[sID]["timer"] || -1;

this._stop(sID);
},

_start: function(sID, sFunction, uiTime, mParameter)
{
sID = Functions.exists(sID, "null");
sFunction = Functions.exists(sFunction, "_stop");
aParameter = Functions.exists(mParameter, null);

this._oTimer = Functions.keyExists(sID, this._oTimer, new Object());
this._oTimer[sID]["timer"] = this._oTimer[sID]["timer"] || -1;
this._oTimer[sID]["function"] = sFunction;
this._oTimer[sID]["parameter"] = mParameter;

if(this._oTimer[sID]["timer"] != -1)
{
this._stop(sID);
}

this._oTimer[sID]["timer"] = setTimeout("TimerAction._perform('"+sID+"');", uiTime);
},

_stop: function(sID)
{
clearTimeout(this._oTimer[sID]["timer"]);
this._oTimer[sID]["timer"] = -1;
},

_perform: function(sID)
{
this._oTimer[sID]["timer"] = -1;

try
{
TimerAction[this._oTimer[sID]["function"]](this._oTimer[sID]["parameter"]);
}
catch(e)
{
throw "function ("+this._oTimer[sID]["function"]+") not exists in TimerAction.js"
}
},

hide: function(mParameter)
{
Functions.hide(mParameter["object"]);
},

filter: function(mParameter)
{
mParameter["paginator"].setParameter('filter', mParameter["value"]);
mParameter["paginator"].clearData();
mParameter["paginator"].getPaginator().toSite(1);
},

callback: function(mParameter)
{
mParameter();
}
};
var ObjectCreator =
{
_oTags: new Object(),
_oAttributes: new Object(),
_aFunctions: new Array(),


_init: function ()
{
var aTags = ("table,thead,tbody,tr,td,th,div,span,img,a,input,checkbox,textarea,center,br").split(",");
var aAttributes = ("type,id,value,content,cls,onclick,onmouseover,onmouseout,onchange,onkeyup,onkeydown,onkeypressed,ondblclick,colspan,rowspan,src,href,position,background,title,name,checked,display,width,height,overflow").split(",");

for(var i=0;i<aTags.length;i++)
{
this._oTags[trim(aTags[i])] = 1
}

for(var i=0;i<aAttributes.length;i++)
{
this._oAttributes[trim(aAttributes[i])] = 1
}
},

addFunction: function(fCallBack)
{
this._aFunctions[this._aFunctions.length] = fCallBack;
},

performFunctions: function()
{
for(var i=0;i<this._aFunctions.length;i++)
{
this._aFunctions[i]();
}

this._aFunctions = new Array();
},

isTag: function(sKey)
{
return this._oTags[sKey] || 0;
},

isAttribute: function(sKey)
{
return this._oAttributes[sKey] || 0;
},


perform: function(oData, oParentTag)
{
oParentTag = Functions.exists(oParentTag, null);

var oTag = null;

if(typeof oData == "object")
{
for (var sKey in oData)
{
if(this.isTag(sKey) == 1)
{
if(sKey == "checkbox")
{
oTag = HTML.createCheckBox(sKey);
}
else if(sKey == "radio")
{
oTag = HTML.createRadio(sKey);
}
else
{
oTag = HTML.createTag(sKey);
}

if(oParentTag != null)
{
oParentTag.appendChild(oTag);
}

this.perform(oData[sKey], oTag);
}
else if(!isNaN(sKey))
{
this.perform(oData[sKey], oParentTag);
}
else if(this.isAttribute(sKey) == 1)
{
if(oParentTag != null)
{
this.literal(oData[sKey], sKey, oParentTag);
}
else
{
Debug.add("Tagattribute "+sKey+" kann nicht gesetzt werden ohne parent tag");
}
}
}
}

return oTag;
},

literal: function(oData, sKey, oParentTag)
{
switch(sKey)
{

case "onclick":
case "ondblclick":
case "onmouseover":
case "onmouseout":
case "onkeyup":
case "onkeydown":
case "onkeypressed":
case "onchange":
oParentTag[sKey] = oData;
break;

case "cls":
HTML.setClass(oParentTag, oData);
break;

case "content":
HTML.setInnerHTML(oParentTag, oData);
break;

case "position":
case "display":
case "overflow":
oParentTag.style[sKey] = oData;
break;

case "width":
case "height":
oParentTag.style[sKey] = (typeof oData == "number") ? oData+"px" : oData;
break;

default:
HTML.createAttribute(sKey, oData, oParentTag);
break;
}
}
};

ObjectCreator._init();
var FilterCollection = Class.create();

FilterCollection.prototype =
{

initialize: function(sClassName, aSettings)
{
sClassName = Functions.exists(sClassName, null);
aSettings = Functions.exists(aSettings, null);

this._mDefaultAmount = null;
this._mDefaultView = null;
this._mDefaultSort = null;
this._oAmount = null;
this._oSort = null;
this._oView = null;
this._oPaginator = null;
this._oCallBackPaginator = null;
this._oCallBackView = null;
this._oCallBackSelectMenu = null;
this._sClassName = sClassName;

this._mDefaultAmount = DEF.VIEW_STANDARD_AMOUNT;
this._mDefaultView = DEF.VIEW_NORMAL;
this._mDefaultSort = new Object();
this._mDefaultSort["value"] = DEF.SORT_FILENAME;
this._mDefaultSort["direction"] = DEF.SORT_ASC;

if(aSettings != null)
{
this.init(aSettings);
}

},

getPaginatorData: function()
{
return this._oCallBackPaginator;
},

init: function(aSettings)
{


aSettings = Functions.exists(aSettings, null);

if(aSettings != null)
{
aSettings = Functions.keyExists("paginator", aSettings, null);
aSettings = Functions.keyExists("selectmenu", aSettings, new SelectMenuPaginatorData());
aSettings = Functions.keyExists("amount", aSettings, null);
aSettings = Functions.keyExists("view", aSettings, null);
aSettings = Functions.keyExists("sort", aSettings, null);
aSettings = Functions.keyExists("loader", aSettings, null);
aSettings = Functions.keyExists("init", aSettings, null);

aSettings["paginator"] = Functions.keyExists("id", aSettings["paginator"], null);

if(aSettings["paginator"]["id"] != null)
{
aSettings["paginator"] = Functions.keyExists("url", aSettings["paginator"], null);
aSettings["paginator"] = Functions.keyExists("quantity", aSettings["paginator"], 0);
aSettings["paginator"] = Functions.keyExists("show", aSettings["paginator"], 0);
aSettings["paginator"] = Functions.keyExists("mimetype", aSettings["paginator"], null);
aSettings["paginator"] = Functions.keyExists("data", aSettings["paginator"], new Array());
aSettings["paginator"]["data"] = Functions.keyExists("mimetype", aSettings["paginator"]["data"], "");
aSettings["paginator"]["data"] = Functions.keyExists("uid", aSettings["paginator"]["data"], 0);
aSettings["paginator"]["data"] = Functions.keyExists("ssid", aSettings["paginator"]["data"], 0);

if($(aSettings["paginator"]["id"]) != null)
{
this._registerPaginatorData(aSettings["paginator"]["mimetype"], aSettings["paginator"]["quantity"], aSettings["paginator"]["url"]);
this.registerCallBackSelectMenu(aSettings["selectmenu"]);
this.registerPaginator($(aSettings["paginator"]["id"]), aSettings["paginator"]["quantity"], aSettings["paginator"]["show"]);

for(var sKey in aSettings["paginator"]["data"])
{
this.getCallBackPaginator().setParameter(sKey, aSettings["paginator"]["data"][sKey]);
}
}
}

if(aSettings["amount"] != null)
{
aSettings["amount"] = Functions.keyExists("id", aSettings["amount"], null);
aSettings["amount"] = Functions.keyExists("view", aSettings["amount"], null);
aSettings["amount"] = Functions.keyExists("width", aSettings["amount"], null);
aSettings["amount"] = Functions.keyExists("content", aSettings["amount"], null);

if($(aSettings["amount"]["id"]) != null)
{
this.registerAmount(aSettings["amount"]["view"], aSettings["amount"]["width"], $(aSettings["amount"]["id"]), aSettings["amount"]["content"]);
}
}

if(aSettings["view"] != null)
{
aSettings["view"] = Functions.keyExists("id", aSettings["view"], null);
aSettings["view"] = Functions.keyExists("view", aSettings["view"], null);
aSettings["view"] = Functions.keyExists("width", aSettings["view"], null);
aSettings["view"] = Functions.keyExists("content", aSettings["view"], null);
aSettings["view"] = Functions.keyExists("render", aSettings["view"], null);
aSettings["view"] = Functions.keyExists("callback", aSettings["view"], function() {});
aSettings["view"] = Functions.keyExists("checkbox", aSettings["view"], 0);
aSettings["view"] = Functions.keyExists("extendet", aSettings["view"], 0);
aSettings["view"] = Functions.keyExists("photoflow", aSettings["view"], "");

if($(aSettings["view"]["id"]) != null)
{
this.registerView(aSettings["view"]["view"], aSettings["view"]["width"], $(aSettings["view"]["id"]), aSettings["view"]["render"], aSettings["view"]["content"], aSettings["view"]["callback"], aSettings["view"]["checkbox"], aSettings["view"]["extendet"], aSettings["view"]["photoflow"]);
}
}

if(aSettings["sort"] != null)
{
aSettings["sort"] = Functions.keyExists("id", aSettings["sort"], null);
aSettings["sort"] = Functions.keyExists("content", aSettings["sort"], null);

if($(aSettings["sort"]["id"]) != null)
{
this.registerSort($(aSettings["sort"]["id"]), aSettings["sort"]["content"]);
}
}

if(aSettings["paginator"]["id"] != null)
{
this.getCallBackSelectMenu().setPaginator(this.getPaginator());
this.getCallBackSelectMenu().setCallBackPaginator(this.getCallBackPaginator());
this.getCallBackSelectMenu().setSelectMenu(this.getAmount());
}

if(aSettings["loader"] != null)
{
this.setLoadClass(aSettings["loader"]);
}

if(aSettings["init"] != null)
{
aSettings["init"] = Functions.keyExists("amount", aSettings["init"], null);
aSettings["init"] = Functions.keyExists("view", aSettings["init"], null);
aSettings["init"] = Functions.keyExists("sort", aSettings["init"], null);

if(aSettings["init"]["amount"] != null)
{
this.setDefaultAmount(aSettings["init"]["amount"]);
}

if(aSettings["init"]["view"] != null)
{
this.setDefaultView(aSettings["init"]["view"]);
}

if(aSettings["init"]["sort"] != null)
{
aSettings["init"]["sort"] = Functions.keyExists("direction", aSettings["init"]["sort"], null);
aSettings["init"]["sort"] = Functions.keyExists("field", aSettings["init"]["sort"], null);

this.setDefaultSort(aSettings["init"]["sort"]["field"], aSettings["init"]["sort"]["direction"]);
}
}
}
},

setClassName: function(sParam)
{
this._sClassName = sParam;
},



getClassName: function(){ return this._sClassName; },
getAmount: function(){ return this._oAmount; },
getSort: function(){ return this._oSort; },
getView: function(){ return this._oView; },
getPaginator: function(){ return this._oPaginator; },
getCallBackPaginator: function(){ return this._oCallBackPaginator; },
getCallBackView: function(){ return this._oCallBackView; },
getCallBackSelectMenu: function(){ return this._oCallBackSelectMenu; },
getDefaultAmount: function(){ return this._mDefaultAmount; },
getDefaultSort: function(){ return this._mDefaultSort; },
getDefaultView: function(){ return this._mDefaultView; },

getViewAmountPerLine: function(cViewType, cViewWidth)
{
var uiAmountPerLine = 1;

switch(cViewType)
{
case DEF.VIEW_NORMAL:
switch(cViewWidth)
{
case DEF.VIEW_WIDTH_305: uiAmountPerLine = 2; break;
case DEF.VIEW_WIDTH_700: uiAmountPerLine = 4; break;
case DEF.VIEW_WIDTH_980: uiAmountPerLine = 6; break;
}
break;

case DEF.VIEW_DETAILS:
switch(cViewWidth)
{
case DEF.VIEW_WIDTH_305: uiAmountPerLine = 1; break;
case DEF.VIEW_WIDTH_700: uiAmountPerLine = 3; break;
case DEF.VIEW_WIDTH_980: uiAmountPerLine = 4; break;
}
break;

case DEF.VIEW_ALBUM:
switch(cViewWidth)
{
case DEF.VIEW_WIDTH_305: uiAmountPerLine = 3; break;
case DEF.VIEW_WIDTH_700: uiAmountPerLine = 6; break;
case DEF.VIEW_WIDTH_980: uiAmountPerLine = 9; break;
}
break;

case DEF.VIEW_LIST:
switch(cViewWidth)
{
case DEF.VIEW_WIDTH_305: uiAmountPerLine = 1; break;
case DEF.VIEW_WIDTH_700: uiAmountPerLine = 1; break;
case DEF.VIEW_WIDTH_980: uiAmountPerLine = 1; break;
}
break;

case DEF.VIEW_PHOTOFLOW:
switch(cViewWidth)
{
case DEF.VIEW_WIDTH_305: uiAmountPerLine = 100000; break;
case DEF.VIEW_WIDTH_700: uiAmountPerLine = 100000; break;
case DEF.VIEW_WIDTH_980: uiAmountPerLine = 100000; break;
}
break;
}

return uiAmountPerLine;
},

getViewAmountPerSelectOption: function(cViewType, cViewWidth)
{
var uiAmountPerLine = new Array(5, 10, 15, 20, 25, 30, 0);

switch(cViewType)
{
case DEF.VIEW_NORMAL:
switch(cViewWidth)
{
case DEF.VIEW_WIDTH_305: uiAmountPerLine = new Array(4, 8, 12, 16, 20, 24, 0); break;
case DEF.VIEW_WIDTH_700: uiAmountPerLine = new Array(8, 16, 24, 32, 40, 48, 0); break;
case DEF.VIEW_WIDTH_980: uiAmountPerLine = new Array(12, 18, 24, 30, 36, 42, 0); break;
}
break;

case DEF.VIEW_DETAILS:
switch(cViewWidth)
{
case DEF.VIEW_WIDTH_305: uiAmountPerLine = new Array(2, 4, 6, 8, 12, 16, 0); break;
case DEF.VIEW_WIDTH_700: uiAmountPerLine = new Array(6, 9, 12, 18, 24, 30, 0); break;
case DEF.VIEW_WIDTH_980: uiAmountPerLine = new Array(12, 16, 20, 28, 36, 44, 0); break;
}
break;

case DEF.VIEW_ALBUM:
switch(cViewWidth)
{
case DEF.VIEW_WIDTH_305: uiAmountPerLine = new Array(6, 9, 12, 18, 24, 30, 0); break;
case DEF.VIEW_WIDTH_700: uiAmountPerLine = new Array(12, 18, 24, 36, 48, 60, 0); break;
case DEF.VIEW_WIDTH_980: uiAmountPerLine = new Array(18, 27, 36, 54, 72, 90,0); break;
}
break;

case DEF.VIEW_LIST:
switch(cViewWidth)
{
case DEF.VIEW_WIDTH_305: uiAmountPerLine = new Array(5, 10, 20, 30, 40, 50, 0); break;
case DEF.VIEW_WIDTH_700: uiAmountPerLine = new Array(5, 10, 20, 30, 40, 50, 0); break;
case DEF.VIEW_WIDTH_980: uiAmountPerLine = new Array(5, 10, 20, 30, 40, 50, 0); break;
}
break;

case DEF.VIEW_PHOTOFLOW:
switch(cViewWidth)
{
case DEF.VIEW_WIDTH_305: uiAmountPerLine = new Array(); uiAmountPerLine[0] = 0; break;
case DEF.VIEW_WIDTH_700: uiAmountPerLine = new Array(); uiAmountPerLine[0] = 0; break;
case DEF.VIEW_WIDTH_980: uiAmountPerLine = new Array(); uiAmountPerLine[0] = 0; break;
}
break;
}

return uiAmountPerLine;
},



setAmount: function(oParam){ this._oAmount = oParam; },
setSort: function(oParam){ this._oSort = oParam; },
setView: function(oParam){ this._oView = oParam; },
setPaginator: function(oParam){ this._oPaginator = oParam; },
setCallBackPaginator: function(oParam){ this._oCallBackPaginator = oParam; },
setCallBackView: function(oParam){ this._oCallBackView = oParam; },
setCallBackSelectMenu: function(oParam){ this._oCallBackSelectMenu = oParam; },
setDefaultAmount: function(mParam){ this._mDefaultAmount = mParam; },
setDefaultSort: function(mParam, cParam){ this._mDefaultSort["value"] = mParam; this._mDefaultSort["direction"] = cParam; },
setDefaultView: function(mParam){ this._mDefaultView = mParam; },


setLoadClass: function(oLoading)
{
if(this.getPaginator() != null)
{
this.getPaginator().setLoadClass(oLoading);
}
},




registerCallBackSelectMenu: function(oCallBackSelectMenu)
{
this.setCallBackSelectMenu(oCallBackSelectMenu);
},

registerAmount: function(cViewType, cViewWidth, oContainer, sLabel)
{
var oAmount = new SelectMenu(oContainer, sLabel, this.getCallBackSelectMenu(), "cbAmount", "w20", 0, this.getClassName()+".getAmount()");
var uiAmountPerLine = this.getViewAmountPerLine(cViewType, cViewWidth);
var aAmountOption = this.getViewAmountPerSelectOption(cViewType, cViewWidth);

for(var i=0;i<aAmountOption.length;i++)
{
if(aAmountOption[i] == 0)
{
}
else
{
oAmount.addItem(aAmountOption[i], null, aAmountOption[i], aAmountOption[i]);
}
}

this.setAmount(oAmount);
},

registerSort: function(oContainer, sLabel)
{
var oSort = new SelectMenu(oContainer, sLabel, this.getCallBackSelectMenu(), "cbSort", "w20", 1, this.getClassName()+".getSort()");

oSort.setUseSorter(1);
oSort.addItem("Name", "iconSortName", "iconSortNameDisabled",  DEF.SORT_FILENAME);
oSort.addItem("Dateityp", "iconSortType", "iconSortTypeDisabled", DEF.SORT_FILETYPE);
oSort.addItem("Gr&ouml;&szlig;e", "iconSortStorage", "iconSortStorageDisabled", DEF.SORT_FILESIZE);
oSort.addItem("Datum", "iconSortDate", "iconSortDateDisabled", DEF.SORT_FILEDATE);

this.setSort(oSort);
},

registerView: function(cFileViewType, cViewWidth, oContainer, oViewContainer, sLabel, ocbFunction, bListCheckBox, bListExtended, sPhotoFlowXMLPath)
{
bListCheckBox = Functions.exists(bListCheckBox, 1);
bListExtended = Functions.exists(bListExtended, 0);
sPhotoFlowXMLPath = Functions.exists(sPhotoFlowXMLPath, null);

ocbFunction = Functions.exists(ocbFunction, new Object());
ocbFunction = Functions.keyExists(DEF.VIEW_NORMAL, ocbFunction, null);
ocbFunction = Functions.keyExists(DEF.VIEW_DETAILS, ocbFunction, null);
ocbFunction = Functions.keyExists(DEF.VIEW_ALBUM, ocbFunction, null);
ocbFunction = Functions.keyExists(DEF.VIEW_LIST, ocbFunction, null);
ocbFunction = Functions.keyExists(DEF.VIEW_PHOTOFLOW, ocbFunction, null);

var oView = new SelectMenu(oContainer, sLabel, this.getCallBackSelectMenu(), "cbView", "w20", 1, this.getClassName()+".getView()");

var uiSelectPerLineNormal = this.getViewAmountPerSelectOption(DEF.VIEW_NORMAL, cViewWidth);
var uiSelectPerLineDetail = this.getViewAmountPerSelectOption(DEF.VIEW_DETAILS, cViewWidth);
var uiSelectPerLineAlbum = this.getViewAmountPerSelectOption(DEF.VIEW_ALBUM, cViewWidth);
var uiSelectPerLineList = this.getViewAmountPerSelectOption(DEF.VIEW_LIST, cViewWidth);
var uiSelectPerLinePhotoFlow = this.getViewAmountPerSelectOption(DEF.VIEW_PHOTOFLOW, cViewWidth);

var uiAmountPerLineNormal = this.getViewAmountPerLine(DEF.VIEW_NORMAL, cViewWidth);
var uiAmountPerLineDetail = this.getViewAmountPerLine(DEF.VIEW_DETAILS, cViewWidth);
var uiAmountPerLineAlbum = this.getViewAmountPerLine(DEF.VIEW_ALBUM, cViewWidth);
var uiAmountPerLineList = this.getViewAmountPerLine(DEF.VIEW_LIST, cViewWidth);
var uiAmountPerLinePhotoFlow = this.getViewAmountPerLine(DEF.VIEW_PHOTOFLOW, cViewWidth);

oView.addItem("Normal", "iconShowNormal", "iconShowNormalDisabled", new ViewNormal(oViewContainer, uiAmountPerLineNormal, uiSelectPerLineNormal, cFileViewType), ocbFunction[DEF.VIEW_NORMAL], DEF.VIEW_NORMAL);
oView.addItem("Detail", "iconShowDetails", "iconShowDetailsDisabled",new ViewDetailsExtended(oViewContainer, uiAmountPerLineDetail, uiSelectPerLineDetail, cFileViewType), ocbFunction[DEF.VIEW_DETAILS], DEF.VIEW_DETAILS);
oView.addItem("Album", "iconShowAlbum", "iconShowAlbumDisabled", new ViewAlbum(oViewContainer, uiAmountPerLineAlbum, uiSelectPerLineAlbum, cFileViewType), ocbFunction[DEF.VIEW_ALBUM], DEF.VIEW_ALBUM);
oView.addItem("Liste", "iconShowList", "iconShowListDisabled", new ViewList(oViewContainer, uiAmountPerLineList, uiSelectPerLineList, cFileViewType, 1, bListExtended), ocbFunction[DEF.VIEW_LIST], DEF.VIEW_LIST);

this.setView(oView);
},

registerPaginator: function(oContainer, uiTotalAmount, uiShowAmount)
{
this.setPaginator(new Paginator(oContainer, uiTotalAmount, uiShowAmount, this.getCallBackPaginator(), this.getClassName()+".getPaginator()"));
},

registerCollectionPaginatorData: function(cViewType, uiUID, uiCID, uiTotalAmount)
{
this._registerPaginatorData(cViewType, uiTotalAmount, PATH_HTTP+"ajax/collectionload-stufffile.html");

this.getCallBackPaginator().setParameter("uid", uiUID);
this.getCallBackPaginator().setParameter("cid", uiCID);
},

registerUserCollectionPaginatorData: function(cViewType, uiUID, uiTotalAmount)
{
this._registerPaginatorData(cViewType, uiTotalAmount, PATH_HTTP+"ajax/collectionuserload-stufffile.html");

this.getCallBackPaginator().setParameter("uid", uiUID);
},

registerPaginatorData: function(cViewType, uiUID, uiSSID, uiTotalAmount)
{
this._registerPaginatorData(cViewType, uiTotalAmount, PATH_HTTP+"ajax/load-stufffile.html");

this.getCallBackPaginator().setParameter("uid", uiUID);
this.getCallBackPaginator().setParameter("ssid", uiSSID);
},

registerSearchPaginatorData: function(uiMinID, uiMaxID, sSearch, cViewType, uiTotalAmount)
{
this._registerPaginatorData(cViewType, uiTotalAmount, PATH_HTTP+"ajax/searchload-stufffile.html");

this.getCallBackPaginator().setParameter("min", uiMinID);
this.getCallBackPaginator().setParameter("max", uiMaxID);
this.getCallBackPaginator().setParameter("search", sSearch);
},

registerFavoritePaginatorData: function(uiUID, cViewType, uiTotalAmount)
{
this._registerPaginatorData(cViewType, uiTotalAmount, PATH_HTTP+"ajax/favoriteload-stufffile.html");

this.getCallBackPaginator().setParameter("uid", uiUID);
},

_registerPaginatorData: function(cViewType, uiTotalAmount, sAjaxURL)
{
var oPaginatorData = null;

oPaginatorData = new PaginatorData(uiTotalAmount, "files", this.getCallBackView());
oPaginatorData.setAjaxURL(sAjaxURL);
oPaginatorData.setParameter("mimetype", cViewType);
oPaginatorData.setParameter("sortfield", DEF.SORT_FILENAME);
oPaginatorData.setParameter("sortdir", DEF.SORT_ASC);

this.setCallBackPaginator(oPaginatorData);
},

createSettings: function(cOptions)
{
var oAmount = this.getAmount();
var oView = this.getView();
var oSort = this.getSort();
var oPaginator = this.getPaginator();

if(oAmount != null)
{
oAmount.createSelectItems();

if(this.getDefaultAmount() == null)
{
oAmount.selectItem(0, 1);
}
else
{
oAmount.selectItemByValue(this.getDefaultAmount());
this.getPaginator().setShowAmount(this.getDefaultAmount());
}

EventRegistry.addOnClickEvent(oAmount, "hide");
}

if(oView != null)
{
oView.createSelectItems();

if(this.getDefaultView() == null)
{
oView.selectItem(1, 1);
this.getCallBackPaginator().setCallBackClass(oView._aEntry[0].getSetValue());
}
else
{
oView.selectItemByValue(this.getDefaultView());
this.getCallBackPaginator().setViewClass(oView._aEntry[oView.getSelectedIndex()].getSetValue());
}

EventRegistry.addOnClickEvent(oView, "hide");
}

if(oSort != null)
{
oSort.createSelectItems();

if(this.getDefaultSort() == null)
{
oSort.selectItem(0, 1);
}
else
{
oSort.selectItemByValueAndSetSortDirection(this.getDefaultSort()["value"], this.getDefaultSort()["direction"]);

this.getCallBackPaginator().setParameter("sortfield", this.getDefaultSort()["value"]);
this.getCallBackPaginator().setParameter("sortdir", this.getDefaultSort()["direction"]);
}

EventRegistry.addOnClickEvent(oSort, "hide");
}



this.setCallBackData(this.getCallBackSelectMenu(), oAmount, oPaginator, this.getCallBackPaginator());

if(oPaginator != null)
{
oPaginator.toSite(1, cOptions);
}
},

setCallBackData: function(ocbSelectMenu, oSelectMenuAmount, oPaginator, ocbPaginator)
{
if(ocbSelectMenu != null)
{
if(oSelectMenuAmount != null)
{
ocbSelectMenu.setSelectMenu(oSelectMenuAmount);
}

if(oPaginator != null)
{
ocbSelectMenu.setPaginator(oPaginator);
ocbSelectMenu.setCallBackPaginator(ocbPaginator);
}
}
}
};
var Rating =
{
_uiSFID: null,
_uiSSID: null,
_aPositions: new Array(),
_sAjaxQueryURL: PATH_HTTP+"ajax/rating-stufffile.html",
_uiEC: null,

setSFID: function(uiSFID)
{
this._uiSFID = uiSFID;
},

setSSID: function(uiSSID)
{
this._uiSSID = uiSSID;
},

addStarField: function(oTable, oCounter, uiTotalPoints, uiTotalUser, bSmallStars)
{
var oStarField = new Object();
oStarField["table"] = oTable;
oStarField["counter"] = oCounter;
oStarField["total_points"] = uiTotalPoints;
oStarField["total_users"] = uiTotalUser;
oStarField["small_stars"] = bSmallStars;

this._aPositions[this._aPositions.length] = oStarField;
},

changeRating: function(oTable, uiRating, bSmallStars)
{
if(bSmallStars == 1)
{
HTML.setClass(oTable, "StarsRatingSmall"+uiRating)
}
else
{
HTML.setClass(oTable, "StarsRating"+uiRating)
}
},

changeNormal: function(oTable, uiRating, bSmallStars)
{
if(bSmallStars)
{
HTML.setClass(oTable, "StarsSmall"+uiRating)
}
else
{
HTML.setClass(oTable, "Stars"+uiRating)
}
},

calcRating: function(oStarField)
{
if(oStarField["total_points"] > 0)
{
return Math.round(oStarField["total_points"]/oStarField["total_users"]);
}
else
{
return 0;
}
},

changeBack: function(oTable)
{
var oStarField;

for(var i=0;i<this._aPositions.length;i++)
{
oStarField = this._aPositions[i];

if(oStarField["table"] == oTable)
{
this.changeNormal(oTable, this.calcRating(oStarField), oStarField["small_stars"]);
return 0;
}
}
},

updateRating: function(uiRatingPoints)
{
var oStarField;

for(var i=0;i<this._aPositions.length;i++)
{
oStarField = this._aPositions[i];
oStarField["total_points"] += uiRatingPoints;
oStarField["total_users"]++;


oStarField["counter"].innerHTML = oStarField["total_users"];

this.changeNormal(oStarField["table"], this.calcRating(oStarField), oStarField["small_stars"]);
this._aPositions[i] = oStarField;
}
},

performRating: function(uiRating)
{
if(this._uiEC == null)
{
var aData = new Array();
aData[0] = "sfid="+this._uiSFID;
aData[1] = "ssid="+this._uiSSID;
aData[2] = "rating="+uiRating;

new Ajax.Request(this._sAjaxQueryURL, {
method: 'post',
parameters: aData.join("&"),
onSuccess: Rating.ajaxResult
});
}
else
{
this.ajaxResult(this._uiEC);
}


},

ajaxResult: function(oTransport)
{
var bLoad = 0;

if(this._uiEC == null)
{
var aData = JSON.parse(oTransport.responseText);
this._uiEC = aData["ec"];
bLoad = 1;
}

switch(this._uiEC)
{
case EC.SUCCESS:
if(bLoad == 1)
{
Rating.updateRating(aData["rating"]);
}
Message.setSuccess("Rating erfolgreich");
break;

case EC.FAILED:
Message.setError("Fehler aufgetreten");
break;

case EC.CANT_RATE_YOUR_OWN_FILES:
Message.setError("Seine eigenen Dateien kann man nicht bewerten!");
break;

case EC.NOT_ALL_DATA_SUBMITTED:
Message.setNotice("Parameter fehlen");
break;

case EC.SINGLE_ACTION:
Message.setNotice("Rating schonmal ausgeführt");
break;

case EC.PARAMETER_OUT_OF_RANGE:
Message.setError("Rating hat falsche parameter");
break;

default:
Message.setError("EC - Funktion nicht implementiert!");
break;
}
}
};
var AjaxFunctions = Class.create();

AjaxFunctions.prototype =
{
initialize: function() { },

checkUsernameExists: function(sUsername, oHidden)
{
var _this = this;
var aData = new Object();
aData["username"] = sUsername;

LS.query(PATH_HTTP+"ajax/usernamenotexists-user.html", aData, function(aData)
{
if(oData["ec"] == EC.SUCCESS)
{
oHidden.value = "1";
}
else
{
oHidden.value = "0";
}
});
},

checkEmailExists: function(sEmail, oHidden)
{
var _this = this;
var aData = new Object();
aData["email"] = sEmail;

LS.query(PATH_HTTP+"ajax/emailnotexists-user.html", aData, function(aData)
{
if(oData["ec"] == EC.SUCCESS)
{
oHidden.value = "1";
}
else
{
oHidden.value = "0";
}
alert(_this.oHidden.value);
});
},

blockOutUser: function(uiUID, oPaginatorData)
{
var aData = new Object();
aData["uid"] = uiUID;

LS.query(PATH_HTTP+"ajax/blockout-contact.html", aData, function(aData)
{
if(oData["ec"] == EC.SUCCESS)
{
oPaginatorData.clearData();
oPaginatorData.callInit(null);
Message.setSuccess("Person wurde ausgeblendet.");
}
else
{
Message.setSuccess("Person konnte nicht ausgeblendet werden.");
}
});
},

setNewPreviewImage: function(oStuffSite, oStuffFile, aImages)
{
var aData = new Object();
aData[oStuffSite["id"]] = oStuffSite[oStuffSite["id"]];
aData["sfid"] = oStuffFile["sfid"];

LS.query(PATH_HTTP+"ajax/setnewpreview-stuffsite.html", aData, function(aData)
{
if(oData["ec"] == EC.SUCCESS)
{
for(var i=0;i<aImages.length;i++)
{
aImages[i].src = oData["previewimage"];
aImages[i].style.backgroundImage = "url("+oData["previewimage"]+")";
}

oStuffSite["previewimage"] = oData["previewimage"];
Cache.insert(oStuffSite);
}
});
},

deleteStuffSite: function(uiSSID, bRedirect)
{
var aData = new Object();
aData["ssid"] = uiSSID;
aData["redirect"] = bRedirect;

LS.query(PATH_HTTP+"ajax/delete-stuffsite.html", aData, function(aData)
{
switch(aData["ec"])
{
case EC.SUCCESS:
Message.setSuccess("Stuffseite erfolgreich gelöscht.");

if(bRedirect == 1)
{
Functions.relocate(PATH_HTTP);
}
else
{
EventRegistry.Fade($('idUSSSSSC_'+uiSSID), {duration: 1.5});
}
break;

case EC.FAILED:
Message.setError("Fehler aufgetreten");
break;

default:
Message.setError("EC - Funktion nicht implementiert!");
break;
}
});
},

deleteStuffFile: function(uiSFID, bRedirect, fCallBack)
{
fCallBack = Functions.exists(fCallBack, function() {});

var aData = new Array();
aData["sfid"] = uiSFID;
aData["redirect"] = bRedirect;

LS.query(PATH_HTTP+"ajax/remove-stufffile.html", aData, function(aData)
{
switch(aData["ec"])
{
case EC.SUCCESS:
Message.setSuccess("Datei erfolgreich gelöscht.");

if(bRedirect == 1)
{
Functions.relocate(PATH_HTTP);
}
else
{
fCallBack(aData);
}
break;

case EC.FAILED:
Message.setError("Fehler aufgetreten");
break;

default:
Message.setError("EC - Funktion nicht implementiert!");
break;
}
});
},

deleteFavorite: function(uiSFID, bRedirect, fCallBack)
{
fCallBack = Functions.exists(fCallBack, function() {});

var aData = new Array();
aData["sfid"] = uiSFID;
aData["redirect"] = bRedirect;

LS.query(PATH_HTTP+"ajax/removefavorite-stufffile.html", aData, function(aData)
{
switch(aData["ec"])
{
case EC.SUCCESS:
Message.setSuccess("Favoriten erfolgreich gelöscht.");

if(bRedirect == 1)
{
Functions.relocate(PATH_HTTP);
}
else
{
fCallBack(aData);
}
break;

case EC.FAILED:
Message.setError("Fehler aufgetreten");
break;

default:
Message.setError("EC - Funktion nicht implementiert!");
break;
}
});
},

deleteCollection: function(uiCID, bRedirect)
{
var aData = new Array();
aData["cid="] = uiCID;
aData["redirect="] = bRedirect;

LS.query(PATH_HTTP+"ajax/delete-collection.html", aData, function(aData)
{
switch(aData["ec"])
{
case EC.SUCCESS:
Message.setSuccess("Collection erfolgreich gel&ouml;scht.");

if(bRedirect == 1)
{
Functions.relocate(PATH_HTTP);
}
else
{
EventRegistry.Fade($('idCSSSC_'+uiCID), {duration: 1.5});
}
break;

case EC.FAILED:
Message.setError("Fehler aufgetreten");
break;

default:
Message.setError("EC - Funktion nicht implementiert!");
break;
}
});
},

resetProfileAvatar: function(aImage)
{
LS.query(PATH_HTTP+"ajax/deleteprofileavatar-user.html", null, function(aData)
{
switch(aData["ec"])
{
case EC.SUCCESS:
Message.setSuccess("Profilbild erfolgreich zurückgesetzt");

for(var i=0;i<aImage.length;i++)
{
aImage[i].src = aData["image"];
aImage[i].style.backgroundImage = "url("+aData["image"]+")";
}

break;

case EC.FAILED:
Message.setError("Fehler aufgetreten");
break;

default:
Message.setError("EC - Funktion nicht implementiert!");
break;
}
});
}
};

AjaxFunctions = new AjaxFunctions();
var Contacts =
{
_sMy: "idCOAmountFriends",
_sPendingOther: "idCOAmountDemand",
_sPendingOwn: "idCOAmountRequest",
_sNoticed: "idCOAmountNoticed",

_oMyPaginator: null,
_oPendingOtherPaginator: null,
_oPendingOwnPaginator: null,
_oNoticedPaginator: null,

NOTICED: 1,
ADD: 2,
REMOVE: 3,
DENY: 4,
ACCEPT: 5,
REVOKE: 6,

_uiAddUID: null,
_uiNoticeUID: null,
_aRemoveUID: null,
_uiDenyUID: null,
_uiAcceptUID: null,
_uiRevokeUID: null,

_cViewMode: null,

_uiDuration: 0.5,
_bLock: 0,
_oLastPreview: null,
_cbFunction: function() {},

setAmount: function(aData)
{
this.performManipulation(this._sMy, aData["friends"], this._oMyPaginator);
this.performManipulation(this._sNoticed, aData["noticed"], this._oNoticedPaginator);
this.performManipulation(this._sPendingOther, aData["demand"], this._oPendingOtherPaginator);
this.performManipulation(this._sPendingOwn, aData["request"], this._oPendingOwnPaginator);
},

registerPaginator: function(oMyPaginator, oPendingOtherPaginator, oPendingOwnPaginator, oNoticedPaginator)
{
this._oMyPaginator = oMyPaginator;
this._oPendingOtherPaginator = oPendingOtherPaginator;
this._oPendingOwnPaginator = oPendingOwnPaginator;
this._oNoticedPaginator = oNoticedPaginator;
},

performManipulation: function(sField, uiValue, oPaginatorData)
{
if($(sField) && oPaginatorData)
{
$(sField).innerHTML = uiValue;

oPaginatorData.getPaginator().setTotalAmount(uiValue, 0);
oPaginatorData.clearData();

if(uiValue < 0)
{
oPaginatorData.getPaginator().resetPerformOnce();
}
else
{
oPaginatorData.getPaginator().reload();
}
}
},

reloadMyContacts: function(){ if(this._oMyPaginator) { this._oMyPaginator.getPaginator().reload(); } },
reloadNoticed: function(){ if(this._oNoticedPaginator) { this._oNoticedPaginator.getPaginator().reload(); } },
reloadPendingOther: function(){ if(this._oPendingOtherPaginator) { this._oPendingOtherPaginator.getPaginator().reload(); } },
reloadPendingOwn: function(){ if(this._oPendingOwnPaginator) { this._oPendingOwnPaginator.getPaginator().reload(); } },

createDataForPopup: function(aIDs)
{
var aData = Cache.getObjectsByIDs(aIDs);

var aReturn = new Object();
aReturn["data"] = new Array();
aReturn["userids"] = new Array();

for(var i=0;i<aData.length;i++)
{
aReturn["data"][aReturn["data"].length] = aData[i];
aReturn["userids"][aReturn["userids"].length] = aData[i]["uid"];
}

return aReturn;
},

add: function(aIDs, sContainer, cbFunction)
{
this._cbFunction = Functions.exists(cbFunction, function() {});

var aData = this.createDataForPopup(aIDs);

this._uiAddUID = aData["userids"];

new Popup_AddFriend($(sContainer), aData["data"]);
},

performAdd: function(oMessage)
{
var _this = this;

var aData = new Array();
aData[aData.length] = "uid="+this._uiAddUID.join(",");
aData[aData.length] = "message="+encodeURI(oMessage.value);

new Ajax.Request(PATH_HTTP+"ajax/add-contact.html", {
method: 'post',
parameters: aData.join("&"),
onSuccess: function(oTransport)
{
var aData = JSON.parse(oTransport.responseText);

switch(aData["ec"])
{
case EC.SUCCESS:
Message.setSuccess("Kontakt wird angefragt!");
_this.setAmount(aData["amount"]);
_this.reloadNoticed();
_this._cbFunction();
break;

case EC.FAILED:
Message.setError("Fehler aufgetreten");
break;

default:
Message.setError("EC - Funktion nicht implementiert!");
break;
}
}
});
},

notice: function(aIDs, sContainer, cbFunction)
{
this._cbFunction = Functions.exists(cbFunction, function() {});

var aData = this.createDataForPopup(aIDs);

this._uiNoticeUID = aData["userids"];

new Popup_NoticeFriend($(sContainer), aData["data"]);
},

performNotice: function(oMessage)
{
var _this = this;
var aData = new Array();
aData[aData.length] = "uid="+this._uiNoticeUID.join(",");
aData[aData.length] = "message="+encodeURI(oMessage.value);

new Ajax.Request(PATH_HTTP+"ajax/notice-contact.html", {
method: 'post',
parameters: aData.join("&"),
onSuccess: function(oTransport)
{
var aData = JSON.parse(oTransport.responseText);

switch(aData["ec"])
{
case EC.SUCCESS:
Message.setSuccess("Kontakt wurde vermerkt");
_this.setAmount(aData["amount"]);
_this.reloadNoticed();
_this.reloadMyContacts();
_this._cbFunction();
break;

case EC.FAILED:
Message.setError("Fehler aufgetreten");
break;

default:
Message.setError("EC - Funktion nicht implementiert!");
break;
}
}
});
},

remove: function(aIDs, sContainer, cbFunction)
{
this._cbFunction = Functions.exists(cbFunction, function() {});

var aData = this.createDataForPopup(aIDs);

this._aRemoveUID = aData["userids"];

new Popup_DeleteFriend($(sContainer), aData["data"]);
},

performRemove: function()
{
var _this = this;

var aData = new Array();
aData[aData.length] = "uid="+this._aRemoveUID.join(",");

new Ajax.Request(PATH_HTTP+"ajax/remove-contact.html", {
method: 'post',
parameters: aData.join("&"),
onSuccess: function(oTransport)
{
var aData = JSON.parse(oTransport.responseText);

switch(aData["ec"])
{
case EC.SUCCESS:
Message.setSuccess("Kontakt wurde gelöscht!");
_this.setAmount(aData["amount"]);
_this.reloadNoticed();
_this.reloadMyContacts();
_this._cbFunction();
break;

case EC.FAILED:
Message.setError("Fehler aufgetreten");
break;

default:
Message.setError("EC - Funktion nicht implementiert!");
break;
}
}
});
},

deny: function(aIDs, sContainer, cbFunction)
{
this._cbFunction = Functions.exists(cbFunction, function() {});

var aData = this.createDataForPopup(aIDs);

this._uiDenyUID = aData["userids"];

new Popup_DenyFriend($(sContainer), aData["data"]);
},

performDeny: function()
{
var _this = this;
var aData = new Array();
aData[aData.length] = "uid="+this._uiDenyUID.join(",");

new Ajax.Request(PATH_HTTP+"ajax/deny-contact.html", {
method: 'post',
parameters: aData.join("&"),
onSuccess: function(oTransport)
{
var aData = JSON.parse(oTransport.responseText);

switch(aData["ec"])
{
case EC.SUCCESS:
Message.setSuccess("Kontakt wurde abgelehnt!");
_this.setAmount(aData["amount"]);
_this.reloadPendingOther();
_this._cbFunction();
break;

case EC.CONTACT_ALLREADY_REMOVED:
Message.setNotice("Kontakt befindet sich nicht mehr auf deiner Liste.");
break;

case EC.FAILED:
Message.setError("Fehler aufgetreten");
break;

default:
Message.setError("EC - Funktion nicht implementiert!");
break;
}
}
});
},

accept: function(aIDs, sContainer, cbFunction)
{
this._cbFunction = Functions.exists(cbFunction, function() {});

var aData = this.createDataForPopup(aIDs);

this._uiAcceptUID = aData["userids"];

new Popup_AcceptFriend($(sContainer), aData["data"]);
},

performAccept: function()
{
var _this = this;
var aData = new Array();
aData[aData.length] = "uid="+this._uiAcceptUID.join(",");

new Ajax.Request(PATH_HTTP+"ajax/accept-contact.html", {
method: 'post',
parameters: aData.join("&"),
onSuccess: function(oTransport)
{
var aData = JSON.parse(oTransport.responseText);

switch(aData["ec"])
{
case EC.SUCCESS:
Message.setSuccess("Kontakt wurde aufgebaut.");
_this.setAmount(aData["amount"]);
_this.reloadPendingOther();
_this._cbFunction();
break;

case EC.FAILED:
Message.setError("Kontakt konnte nicht aufgebaut werden.");
break;

default:
Message.setError("EC - Funktion nicht implementiert!");
break;
}
}
});
},

revoke: function(aIDs, sContainer, cbFunction)
{
this._cbFunction = Functions.exists(cbFunction, function() {});

var aData = this.createDataForPopup(aIDs);

this._uiRevokeUID = aData["userids"];

new Popup_RevokeFriend($(sContainer), aData["data"]);
},

performRevoke: function()
{
var _this = this;
var aData = new Array();
aData[aData.length] = "uid="+this._uiRevokeUID.join(",");

new Ajax.Request(PATH_HTTP+"ajax/revoke-contact.html", {
method: 'post',
parameters: aData.join("&"),
onSuccess: function(oTransport)
{
var aData = JSON.parse(oTransport.responseText);

switch(aData["ec"])
{
case EC.SUCCESS:
Message.setSuccess("Kontaktanfrage wurde zur&uuml;ck gezogen!");
_this.setAmount(aData["amount"]);
_this.reloadPendingOwn();
_this._cbFunction();
break;

case EC.CONTACT_ALLREADY_DELETED:
Message.setNotice("Kontakt befindet sich nicht mehr auf deiner Liste.");
break;

case EC.FAILED:
Message.setError("Fehler aufgetreten");
break;

default:
Message.setError("EC - Funktion nicht implementiert!");
break;
}
}
});
}
};
var Paginator = Class.create();

Paginator.prototype =
{
initialize: function(oContainer, uiTotal, uiShow, oCallBackClass, sPaginatorName, aOptions)
{
aOptions = Functions.exists(aOptions, new Object());
aOptions = Functions.keyExists("tl", aOptions, 0);// two lines (eine zeile anzeige, zweite paginator)
aOptions = Functions.keyExists("sb", aOptions, 4);// show buffer (wieviel sollen links und rechts extra angezeigt werden)
aOptions = Functions.keyExists("fe", aOptions, 0);// first extra (soll für das erste Item eine extra produktionsfunktion aufgerufen werden?)
aOptions = Functions.keyExists("fees", aOptions, 0);// first extra every site (soll das erste Item was gerendert wird immer auf der ersten seite zu sehen sein?)

this.RENDER_ONLY = 1;
this.CALL_ONLY = 2;

this._bPerformOnce = 0;

this._sPaginatorName = sPaginatorName;
this._showPagesPuffer = aOptions["sb"]-(aOptions["sb"]%2);// gibt die anzahl links und rechts (x/2) an, daher nur gerade zahlen erlaubt
this._bTwoLines = aOptions["tl"];// gibt an ob der paginator zweizeilig angezeigt werden soll
this._bFirstExtra = aOptions["fe"];// erstes item nur einen Extra?
this._bFirstExtraEverySite = aOptions["fees"];// erstes item auf jeder seite erzeugen?
this._oContainer = oContainer;
this._uiTotal = uiTotal;
this._oCallBackClass = oCallBackClass;
this._uiSites = 1;
this._uiActSite = 1;

this._oLoading = null;

this._showPages = 5;// geht derzeit nur auf 5!
this._showPages += (this._showPagesPuffer+1) - (this._showPages%2);// immer auf eine ungerade anzahl kommen

this.setTotalAmount(uiTotal);
this.setShowAmount(uiShow);

if(typeof oCallBackClass.setPaginator == "function")
{
oCallBackClass.setPaginator(this);
oCallBackClass.setTotalAmount(uiTotal);
}
},


isFE: function(){ return this._bFirstExtra == 1; },
isFEES: function(){ return this._bFirstExtraEverySite == 1; },
isTwoLines: function(){ return this._bTwoLines; },

firstPerformed: function()
{
if(this._bPerformOnce == 0)
{
this._bPerformOnce++;
return 1;
}
else
{
return 0;
}
},

setLoadClass: function(oLoading){ this._oLoading = oLoading; },
statusLoad: function(){ if(this._oLoading != null) this._oLoading.load(); },
statusFinished: function(){ if(this._oLoading != null) this._oLoading.finished(); },
statusReset: function(){ if(this._oLoading != null) this._oLoading.reset(); },

setShowAmount: function(uiShow)
{
this._uiShow = uiShow;
var uiTotal = this._uiTotal;

if(this._uiTotal > 0 && this._uiShow > 0)
{
if(this.isFE())
{
if(this.isFEES())
{
uiTotal += Math.ceil(uiTotal / (this._uiShow-1));
}
else
{
uiTotal++;
}
}

this._uiSites = Math.ceil(uiTotal / this._uiShow);
}
},

getSite: function()
{
return this._uiActSite;
},

getTotalAmount: function()
{
return this._uiTotal;
},

setTotalAmount: function(uiTotal, bReload)
{
bReload = Functions.exists(bReload, 1);

if(this._uiTotal != uiTotal)
{
this._uiTotal = uiTotal;
this.setShowAmount(this._uiShow);

if(bReload == 1)
{
this.toSite(this._uiActSite);
}
else
{
this.toSite(this._uiActSite, DEF.OPTION_RENDER_ONLY);
}
}
},

resetPerformOnce: function()
{
this._bPerformOnce = 0;
},

reload: function()
{
this.toSite(this._uiActSite);
},

refresh: function()
{
this.toSite(this._uiActSite, DEF.OPTION_RENDER_ONLY);
},

toSite: function(uiSite, cOption)
{
if(uiSite > this._uiSites)
{
uiSite = this._uiSites;
}

cOption = Functions.exists(cOption, 0);

if(cOption != DEF.OPTION_DO_NOTHING && (cOption != DEF.OPTION_PERFORM_ONCE || this.firstPerformed()))
{
if(cOption != DEF.OPTION_RENDER_ONLY)
{
this.statusLoad();
}

this._uiActSite = uiSite;
var uiOffsetFrom = (uiSite - 1) * this._uiShow + 1;
var uiOffsetTo = (uiSite * this._uiShow <= this._uiTotal) ? uiSite * this._uiShow : this._uiTotal;

if(this.isFE())
{
if(this.isFEES())
{
uiCorrection = 0;

if(uiOffsetTo <= uiOffsetFrom)
{
uiOffsetTo = uiOffsetFrom;
uiCorrection = this._uiShow - uiOffsetTo%this._uiShow;

if(uiCorrection == this._uiShow)
{
uiCorrection == 0;
}
}

if(uiSite == this._uiSites)
{
uiOffsetFrom -= (uiSite-1);
uiOffsetTo -= uiSite-uiCorrection+1;
}
else
{
uiOffsetFrom -= (uiSite-1);
uiOffsetTo -= uiSite-uiCorrection;
}

if(uiOffsetTo > this._uiTotal)
{
uiOffsetTo = this._uiTotal;
}
}
else if(this._uiSites == 1)
{
}
else if(uiSite == 1)
{

uiOffsetTo -= uiSite;
}
else if(uiSite == this._uiSites)
{
uiOffsetFrom--;
uiOffsetTo;
}
else
{
uiOffsetFrom--;
uiOffsetTo--;
}
}

if(cOption != DEF.OPTION_CALL_ONLY && cOption != DEF.OPTION_RENDER_ONLY)
{
this._oCallBackClass.callSite(uiOffsetFrom, uiOffsetTo, this._oLoading);
}

if(cOption != DEF.OPTION_CALL_ONLY)
{
var oTable = HTML.createTag("table");
var oTBody = HTML.createTag("tbody");
var oTr = HTML.createTag("tr");
var oTrTwoLines = HTML.createTag("tr");
var oTdAmount = HTML.createTag("td");
var oTdLeft = HTML.createTag("td");
var oTdNav = HTML.createTag("td");
var oTdRight = HTML.createTag("td");

HTML.setClass(oTable, "psb0 floatRight p0");
HTML.setClass(oTdLeft, "pLR5");
HTML.setClass(oTdRight, "pL5");

oTable.appendChild(oTBody);
oTBody.appendChild(oTr);

if(this.isTwoLines())
{
oTBody.appendChild(oTrTwoLines);
oTrTwoLines.appendChild(oTdAmount);
HTML.createAttribute("colspan", 3, oTdAmount);
}
else
{
oTr.appendChild(oTdAmount);
}

oTr.appendChild(oTdLeft);
oTr.appendChild(oTdNav);
oTr.appendChild(oTdRight);

uiOffsetFrom = (uiOffsetFrom < uiOffsetTo) ? uiOffsetFrom : uiOffsetTo;

oSpanFrom = HTML.createTagWithContent("span", (uiOffsetFrom > 0 ? uiOffsetFrom : 0));
oSpanTo = HTML.createTagWithContent("span", (uiOffsetTo > 0 ? uiOffsetTo : 0));
oSpanTotal = HTML.createTagWithContent("span", this._uiTotal+"&nbsp;&nbsp;");
oSpanTextTo = HTML.createTagWithContent("span", "&nbsp;bis&nbsp;");
oSpanTextOff = HTML.createTagWithContent("span", "&nbsp;von&nbsp;");

HTML.setClass(oTrTwoLines, "R");
HTML.setClass(oSpanFrom, "fcBlue f11 fB");
HTML.setClass(oSpanTo, "fcBlue f11 fB");
HTML.setClass(oSpanTotal, "fcBlue f11 fB");
HTML.setClass(oSpanTextTo, "fcBlue f11");
HTML.setClass(oSpanTextOff, "fcBlue f11");

oTdAmount.appendChild(oSpanFrom);
oTdAmount.appendChild(oSpanTextTo);
oTdAmount.appendChild(oSpanTo);
oTdAmount.appendChild(oSpanTextOff);
oTdAmount.appendChild(oSpanTotal);

this._createLeftArrow(oTdLeft, uiSite);
this._createRightArrow(oTdRight, uiSite);
this._createNavigation(oTdNav, uiSite);

if(this._oContainer.hasChildNodes())
{
this._oContainer.replaceChild(oTable, this._oContainer.firstChild);
}
else
{
this._oContainer.appendChild(oTable);
}
}
}
},

_getSiteArray: function(uiSite)
{
var uiSites = this._showPages;
var uiRange = 3 + (this._showPagesPuffer/2);
var aReturn = new Array();

if(this._uiSites <= this._showPages)
{
for(var i=1;i<=this._uiSites;i++)
{
aReturn[aReturn.length] = i;
}
}
else
{
if(this._showPages > this._uiSites)
{
uiSites = this._uiSites;
}

if(uiSite < uiRange)
{
uiSite = uiRange;
}
else if(uiSite > this._uiSites-uiRange)
{
uiSite = this._uiSites-uiRange+1;
}

for(var i=1;i<=uiSites;i++)
{

var iDifference = i - (Math.ceil(uiSites/2));

if(i == 1)
{
aReturn[aReturn.length] = 1;
}
else if(i == 2)
{
if(uiSite-(this._showPagesPuffer/2)-1 == 2)
{
aReturn[aReturn.length] = uiSite+iDifference;
}
else
{
aReturn[aReturn.length] = null;
}
}
else if(i == uiSites-1)
{
if(uiSite+(this._showPagesPuffer/2)+1 == this._uiSites-1)
{
aReturn[aReturn.length] = uiSite+iDifference;
}
else
{
aReturn[aReturn.length] = null;
}
}
else if(i == uiSites)
{
aReturn[aReturn.length] = this._uiSites;
}
else
{
aReturn[aReturn.length] = uiSite+iDifference;
}
}
}

return aReturn;
},

_createNavigation: function(oTd, uiSite)
{
var aData = this._getSiteArray(uiSite);
var width = 15;

for(var i=0;i<aData.length;i++)
{
if(aData[i] == null)
{
oSpan = HTML.createTagWithContent("div", "...");
HTML.setClass(oSpan, "f11 fcBlue fB w15 h15 C floatLeft");
}
else
{
width = 15;

if(aData[i] >= 10){ width += 5; }
if(aData[i] >= 100){ width += 5; }
if(aData[i] >= 1000){ width += 5; }

if(aData[i] == uiSite)
{
oSpan = HTML.createTagWithContent("div", aData[i]);
HTML.setClass(oSpan, "b1 bcLightGrey bsSolid f11 fcWhite bgBlue fB w"+width+" h15 C floatLeft m2");
}
else
{
oSpan = HTML.createTagWithContent("div", aData[i]);
this._registerOnClick(oSpan, aData[i], this);
HTML.setClass(oSpan, "b1 bcLightGrey bsSolid f11 fcBlue fB cPointer w"+width+" h15 C floatLeft m2");
}

}

oTd.appendChild(oSpan);
}
},

_registerOnClick: function(oObject, uiSite, _this)
{
oObject.onclick = function() { _this.toSite(uiSite); };
},

_createLeftArrow: function(oTd, uiSite)
{
oSpan = HTML.createTag("div");

if(uiSite == 1)
{
HTML.setClass(oSpan, "b1 bcLightGrey bsSolid f11 fB w15 h15 C fcBlue floatLeft iconArrowLeftDisabled");
oTd.appendChild(oSpan);
}
else
{
this._registerOnClick(oSpan, (uiSite-1), this);

HTML.setClass(oSpan, "b1 bcLightGrey bsSolid f11 fB w15 h15 C fcBlue floatLeft cPointer iconArrowLeft");
oTd.appendChild(oSpan);
}
},

_createRightArrow: function(oTd, uiSite)
{
oSpan = HTML.createTag("div");

if(uiSite == this._uiSites)
{
HTML.setClass(oSpan, "b1 bcLightGrey bsSolid f11 fB w15 h15 C fcBlue floatLeft iconArrowRightDisabled");
oTd.appendChild(oSpan);
}
else
{
this._registerOnClick(oSpan, (uiSite+1), this);

HTML.setClass(oSpan, "b1 bcLightGrey bsSolid f11 fB w15 h15 C fcBlue floatLeft cPointer iconArrowRight");
oTd.appendChild(oSpan);
}
}
};
var PaginatorSmall = Class.create();

PaginatorSmall.prototype =
{
initialize: function(oContainer, uiTotal, oCallBackClass, sPaginatorName)
{
this._sPaginatorName = sPaginatorName;
this._showPagesPuffer = 4;// anzahl nicht ändern!
this._oContainer = oContainer;
this._uiTotal = uiTotal;
this._uiShow = 1;
this._oCallBackClass = oCallBackClass;
this._uiSites = 1;

this._showPages = 5;// geht derzeit nur auf 5!
this._showPages += (this._showPagesPuffer+1) - (this._showPages%2);// immer auf eine ungerade anzahl kommen

if(this._uiTotal > 0 && this._uiShow > 0)
{
this._uiSites = Math.ceil(this._uiTotal / this._uiShow);
}
},

toSite: function(uiSite)
{
var uiOffsetFrom = uiSite * this._uiShow - this._uiShow + 1;
var uiOffsetTo = (uiSite * this._uiShow <= this._uiTotal) ? uiSite * this._uiShow : this._uiTotal;

this._oCallBackClass.callSite(uiOffsetFrom, uiOffsetTo);

uiOffsetFrom = (uiOffsetFrom < uiOffsetTo) ? uiOffsetFrom : uiOffsetTo;

var oContainer = HTML.createTag("div");
var oSpanPipe = HTML.createTagWithContent("span", "&nbsp;|&nbsp;");

HTML.setClass(oSpanPipe, "fcGrey f11 fB floatLeft");

this._createLeftArrow(oContainer, uiSite);
oContainer.appendChild(oSpanPipe);
this._createRightArrow(oContainer, uiSite);

if(this._oContainer.hasChildNodes())
{
this._oContainer.replaceChild(oContainer, this._oContainer.firstChild);
}
else
{
this._oContainer.appendChild(oContainer);
}
},

_createLeftArrow: function(oTd, uiSite)
{
if(uiSite == 1)
{
oSpan = HTML.createTagWithContent("span", "zurück");
HTML.setClass(oSpan, "f11 fB C fcGrey floatLeft");
oTd.appendChild(oSpan);
}
else
{
oSpan = HTML.createTag("span");
oA = HTML.createTagWithContent("a", "zurück");
HTML.createAttribute("href", "javascript:"+this._sPaginatorName+".toSite("+(uiSite-1)+");", oA);

HTML.setClass(oA, "f11");

oSpan.appendChild(oA);
HTML.setClass(oSpan, "f11 fB C fcBlue floatLeft");
oTd.appendChild(oSpan);
}
},

_createRightArrow: function(oTd, uiSite)
{
if(uiSite == this._uiSites)
{
oSpan = HTML.createTagWithContent("span", "vor");
HTML.setClass(oSpan, "f11 fB C fcGrey floatLeft");
oTd.appendChild(oSpan);
}
else
{
oSpan = HTML.createTag("span");
oA = HTML.createTagWithContent("a", "vor");
HTML.createAttribute("href", "javascript:"+this._sPaginatorName+".toSite("+(uiSite+1)+");", oA);

HTML.setClass(oA, "f11");

oSpan.appendChild(oA);
HTML.setClass(oSpan, "f11 fB C fcBlue floatLeft");
oTd.appendChild(oSpan);
}
}
};
var PaginatorData = Class.create();

PaginatorData.prototype =
{
initialize: function(uiTotal, sDataField, oClassView)
{
this._aParameter = new Object();

this._aData = null;
this._sURL = null;
this._uiTotal = uiTotal;
this._oClassView = oClassView;
this._sDataField = sDataField;

this.clearData();
this.setView(oClassView);
this.setAjaxURL(PATH_HTTP+"ajax/load-stufffile.html");
this._oPaginator;
this._uiInit = 0;
},

setAjaxURL: function(sParam) { this._sURL = sParam; },
setParameter: function(sField, sValue) { this._aParameter[sField] = sValue; },
setView: function(oClassView){ this._oClassView = oClassView; },
setDataField: function(sDataField){ this._sDataField = sDataField; },
setPaginator: function(oPaginator){ this._oPaginator = oPaginator; },
setTotalAmount: function(uiTotalAmount){ this._uiTotal = uiTotalAmount; },
setViewClass: function(oClassView){ this._oClassView = oClassView; },

getAjaxURL: function() { return this._sURL; },
getParameter: function(sValue) { return new String(this._aParameter[sValue]); },
getView: function(){ return this._oClassView; },
getDataField: function(){ return this._sDataField; },
getPaginator: function(){ return this._oPaginator; },

initData: function(aData)
{
this._uiInit = aData.length;

for(var i=0;i<this._uiInit;i++)
{
this._setCache(i, aData[i]);
}
},

clearData: function()
{
this._aData = new Array();
this._initArrayData(this._uiTotal);
},

_initArrayData: function(uiTotal)
{
for(var i=this._aData.length;i<uiTotal;i++)
{
this._aData[i] = null;
}
},

callInit: function(oLoader)
{
this.callSite(1, this._uiInit, oLoader);
},

callSite: function(uiFrom, uiTo, oLoader)
{
var aData = new Array();
var oData;
var bLoadData = 0;

uiFrom -= 1;
uiTo -= 1;

if(this.getPaginator() != null && this.getPaginator().isFE())
{
if(this.getPaginator().isFEES())
{
aData[aData.length] = null;
}
else if(uiFrom == 0)
{
aData[aData.length] = null;
}
}

for(var i=uiFrom;i<=uiTo;i++)
{
oData = this._getCache(i);

if(oData == null)
{
bLoadData = 1;
}

aData[aData.length] = oData;
}

if(bLoadData == 1)
{
this._loadData(uiFrom, uiTo, oLoader);
}
else
{
this.getView().show(aData);
Functions.stopLoader(oLoader);
}
},

_setCache: function(iIndex, oStuffFile)
{
oStuffFile = Cache.insert(oStuffFile);
this._aData[iIndex] = oStuffFile;
},

_getCache: function(iIndex)
{
return this._aData[iIndex];
},

_loadData: function(uiFrom, uiTo, oLoader)
{
if(this.getAjaxURL() != null)
{
var _this = this;
var aData = this._aParameter;
aData["show"] = (this.getPaginator() != null ? this.getPaginator()._uiShow : 0);
aData["start"] = uiFrom;
aData["limit"] = (uiTo-(uiFrom-1));

LS.query(_this.getAjaxURL(), aData, function(aData)
{
aData = Functions.keyExists("total", aData, 0);
aData = Functions.keyExists(_this.getDataField(), aData, new Array());

if(aData["total"] > 0)
{
_this.getPaginator().setTotalAmount(aData["total"], 0);
}

switch(aData["ec"])
{
case EC.SUCCESS:

for(var i=0;i<aData[_this.getDataField()].length;i++)
{
_this._setCache((i+aData["from"]), aData[_this.getDataField()][i]);
}

_this.callSite(aData["from"]+1, aData["to"], oLoader);

break;

case EC.FAILED:
Message.setError("Fehler aufgetreten");
_this.getPaginator().statusReset();
break;

default:
Message.setError("EC - Funktion nicht implementiert!");
break;
}
});
}
}
};
var FormularChecker = Class.create();

FormularChecker.prototype =
{

initialize: function()
{
var i = 0;
this._RULE_SAME_VALUES = i++;
this._RULE_NOT_SAME_VALUES = i++;
this._RULE_MIN_LENGTH = i++;
this._RULE_MAX_LENGTH = i++;
this._RULE_EMAIL_SYNTAX = i++;
this._RULE_EQUALS = i++;
this._RULE_NOTEQUALS = i++;
this._RULE_CHECKED = i++;
this._RULE_CALL_BACK = i++;


this._RULE_STRING = i++;
this._RULE_NORMALSTRING = i++;
this._RULE_NORMALIZESTRING = i++;
this._RULE_UINT = i++;
this._RULE_INT = i++;
this._RULE_HEX = i++;

this._aRules = new Array();
},

addRuleCallBack: function(fFunction, oErrorField, sErrorMessage) { this._addRule(this._RULE_CALL_BACK, fFunction, null, oErrorField, sErrorMessage); },
addRuleMatchNotSame: function(oField, mValue, oErrorField, sErrorMessage) { this._addRule(this._RULE_NOT_SAME_VALUES, oField, mValue, oErrorField, sErrorMessage); },
addRuleMatchSame: function(oField, mValue, oErrorField, sErrorMessage) { this._addRule(this._RULE_SAME_VALUES, oField, mValue, oErrorField, sErrorMessage); },
addRuleMinLength: function(oField, mValue, oErrorField, sErrorMessage) { this._addRule(this._RULE_MIN_LENGTH, oField, mValue, oErrorField, sErrorMessage);},
addRuleMaxLength: function(oField, mValue, oErrorField, sErrorMessage) { this._addRule(this._RULE_MAX_LENGTH, oField, mValue, oErrorField, sErrorMessage); },
addRuleEmailSyntax: function(oField, mValue, oErrorField, sErrorMessage) { this._addRule(this._RULE_EMAIL_SYNTAX, oField, mValue, oErrorField, sErrorMessage); },
addRuleChecked: function(oField, mValue, oErrorField, sErrorMessage) { this._addRule(this._RULE_CHECKED, oField, mValue, oErrorField, sErrorMessage); },

addRuleEquals: function(oField, mValue, oErrorField, sErrorMessage) { this._addRule(this._RULE_EQUALS, oField, mValue, oErrorField, sErrorMessage); },
addRuleNotEquals: function(oField, mValue, oErrorField, sErrorMessage) { this._addRule(this._RULE_NOTEQUALS, oField, mValue, oErrorField, sErrorMessage); },

addRuleString: function(oField, mValue, oErrorField, sErrorMessage) { this._addRule(this._RULE_STRING, oField, mValue, oErrorField, sErrorMessage); },
addRuleNormalString: function(oField, mValue, oErrorField, sErrorMessage) { this._addRule(this._RULE_NORMALSTRING, oField, mValue, oErrorField, sErrorMessage); },
addRuleNormalizeString: function(oField, mValue, oErrorField, sErrorMessage) { this._addRule(this._RULE_NORMALIZESTRING, oField, mValue, oErrorField, sErrorMessage); },
addRuleUInt: function(oField, mValue, oErrorField, sErrorMessage) { this._addRule(this._RULE_UINT, oField, mValue, oErrorField, sErrorMessage); },
addRuleInt: function(oField, mValue, oErrorField, sErrorMessage) { this._addRule(this._RULE_INT, oField, mValue, oErrorField, sErrorMessage); },
addRuleHex: function(oField, mValue, oErrorField, sErrorMessage) { this._addRule(this._RULE_HEX, oField, mValue, oErrorField, sErrorMessage); },

_addRule: function(cRuleType, oField, sValue, oErrorField, sErrorMessage)
{
var oRule = new Object();

oRule["type"] = cRuleType;
oRule["errorMsg"] = sErrorMessage;
oRule["errorField"] = oErrorField;

oRule["field"] = oField;
oRule["value"] = sValue;

this._aRules[this._aRules.length] = oRule;
},

perform: function(oScanSelectedField)
{
for(var i=0;i<this._aRules.length;i++)
{
if(oScanSelectedField == this._aRules[i]["field"] || oScanSelectedField == null)
{
var oRule = this._aRules[i];

switch(oRule["type"])
{
case this._RULE_SAME_VALUES:
if(oRule["field"].value != oRule["value"].value)
{
this._setErrorMessage(oRule);
return false;
}
break;

case this._RULE_NOT_SAME_VALUES:
if(oRule["field"].value == oRule["value"].value)
{
this._setErrorMessage(oRule);
return false;
}
break;

case this._RULE_MIN_LENGTH:
if(oRule["field"].value.length < oRule["value"])
{
this._setErrorMessage(oRule);
return false;
}
break;

case this._RULE_MAX_LENGTH:
if(oRule["field"].value.length > oRule["value"])
{
this._setErrorMessage(oRule);
return false;
}
break;

case this._RULE_EMAIL_SYNTAX:
var filter = /^([\w_\.\-])+\@(([\w\-])+\.)+([\w]{2,4})$/;
if (!filter.test(oRule["field"].value))
{
this._setErrorMessage(oRule);
return false;
}
break;

case this._RULE_EQUALS:
if (oRule["field"].value != oRule["value"])
{
this._setErrorMessage(oRule);
return false;
}
break;

case this._RULE_NOTEQUALS:
if (oRule["field"].value == oRule["value"])
{
this._setErrorMessage(oRule);
return false;
}
break;

case this._RULE_CHECKED:
if(!oRule["field"].checked)
{
this._setErrorMessage(oRule);
return false;
}
break;

case this._RULE_CALL_BACK:
if(!oRule["field"]())
{
this._setErrorMessage(oRule);
return false;
}
break;

case this._RULE_STRING:
var filter = /^([\@&ßàáâãäåæçèéêëìíîïñòóôõöøœùúûüÿ\/\.\s\-\_,]*)$/;
if (!filter.test(oRule["field"].value))
{
this._setErrorMessage(oRule);
return false;
}
break;
case this._RULE_NORMALSTRING:
var filter = /^([\s\w_\.\-@ßàáâãäåæçèéêëìíîïñòóôõöøœùúûüÿ]*)$/;
if (!filter.test(oRule["field"].value))
{
this._setErrorMessage(oRule);
return false;
}
break;
case this._RULE_NORMALIZESTRING:
var filter = /^([a-z0-9\.\-\_]*)$/;
if (!filter.test(oRule["field"].value))
{
this._setErrorMessage(oRule);
return false;
}
break;
case this._RULE_UINT:
var filter = /^([\-]{0,1})+([0-9]*)$/;
if (!filter.test(oRule["field"].value))
{
this._setErrorMessage(oRule);
return false;
}
break;
case this._RULE_INT:
var filter = /^(\d*)$/;
if (!filter.test(oRule["field"].value))
{
this._setErrorMessage(oRule);
return false;
}
break;
case this._RULE_HEX:
var filter = /^([0-9a-f]*)$/;
if (!filter.test(oRule["field"].value))
{
this._setErrorMessage(oRule);
return false;
}
break;
default:
alert("aufruf einer unbekannten regel ôO");
break;
}
}
}

return true;
},

_setErrorMessage: function(oRule)
{
if(oRule["errorMsg"] != null && oRule["errorField"] != null)
{
oRule["errorField"].innerHTML = oRule["errorMsg"];
}
}
};
LS.misc.Settings = Class.create(
{

initialize: function(sClassName, idContainer, aSettings)
{
idContainer = Functions.exists(idContainer, null);

aSettings = Functions.exists(aSettings, new Object());

aSettings = Functions.keyExists("adapter", aSettings, null);
aSettings = Functions.keyExists("describer", aSettings, DEF.VIEW_TYPE_APPLICATION);
aSettings = Functions.keyExists("fields", aSettings, new Object());
aSettings = Functions.keyExists("standard", aSettings, new Object());
aSettings = Functions.keyExists("new", aSettings, new Object());

aSettings["fields"] = Functions.keyExists("view", aSettings["fields"], null);// DEF.VIEW_DETAILS
aSettings["fields"] = Functions.keyExists("amount", aSettings["fields"], null);// 3
aSettings["fields"] = Functions.keyExists("sortorder", aSettings["fields"], null);// koppelt sortfield | DEF.SORT_ASC
aSettings["fields"] = Functions.keyExists("sortfield", aSettings["fields"], null);// koppelt sortorder | DEF.SORT_STUFFSITE_NAME | DEF.SORT_FILENAME
aSettings["fields"] = Functions.keyExists("stuffsite_from", aSettings["fields"], null);// DEF.SORT_STUFFSITE_NAME | DEF.SORT_FILENAME
aSettings["fields"] = Functions.keyExists("stuffsite_type", aSettings["fields"], null);// DEF.SORT_STUFFSITE_NAME | DEF.SORT_FILENAME

aSettings["standard"] = Functions.keyExists("view", aSettings["standard"], aSettings["fields"]["view"]);
aSettings["standard"] = Functions.keyExists("amount", aSettings["standard"], aSettings["fields"]["amount"]*4);
aSettings["standard"] = Functions.keyExists("sortorder", aSettings["standard"], aSettings["fields"]["sortorder"]);
aSettings["standard"] = Functions.keyExists("sortfield", aSettings["standard"], aSettings["fields"]["sortfield"]);
aSettings["standard"] = Functions.keyExists("stuffsite_from", aSettings["standard"], aSettings["fields"]["stuffsite_from"]);
aSettings["standard"] = Functions.keyExists("stuffsite_type", aSettings["standard"], aSettings["fields"]["stuffsite_type"]);

aSettings["new"]["view"] = aSettings["standard"]["view"];
aSettings["new"]["amount"] = aSettings["standard"]["amount"];
aSettings["new"]["sortorder"] = aSettings["standard"]["sortorder"];
aSettings["new"]["sortfield"] = aSettings["standard"]["sortfield"];
aSettings["new"]["stuffsite_from"] = aSettings["standard"]["stuffsite_from"];
aSettings["new"]["stuffsite_type"] = aSettings["standard"]["stuffsite_type"];

this._aSettings = aSettings;
this._sClassName = sClassName;
this._idContainer = idContainer;
this._bSpace = 0;// wird für die space verwaltung zwischen den zeilen genutzt
this._idInfo = Functions.createUniqueID();
this._idAmount = Functions.createUniqueID();
this._idView = Functions.createUniqueID();
this._idSortField = Functions.createUniqueID();
this._idSortOrder = Functions.createUniqueID();
this._idStuffSiteType = Functions.createUniqueID();
this._idStuffSiteFrom = Functions.createUniqueID();
},

getClassName: function(){ return this._sClassName; },
getDescriber: function(){ return this._aSettings["describer"]; },
getSettings: function(sField){ return this._aSettings["fields"][sField]; },
getDefault: function(sField){ return this._aSettings["standard"][sField]; },
getNew: function(sField){ return this._aSettings["new"][sField]; },
getContainer: function(sField){ return $(this._idContainer) },

setNew: function(sField, mValue) { this._aSettings["new"][sField] = mValue; },
setSettings: function(sField, mValue){ return this._aSettings["fields"][sField] = mValue; },
setDefault: function(sField, mValue){ return this._aSettings["standard"][sField] = mValue; },
setValues: function(sField, mFields, mDefault, mNew)
{
this.setSettings(sField, mFields);
this.setDefault(sField, mDefault);
this.setNew(sField, mNew);
},

getPaginator: function()
{
return this._aSettings["adapter"].getPaginator();
},

getPaginatorData: function()
{
return this._aSettings["adapter"];
},

performNew: function()
{
var _this = this;
var aData = new Array();
aData = this._registerNewField(aData, "view");
aData = this._registerNewField(aData, "amount");
aData = this._registerNewField(aData, "sortorder");
aData = this._registerNewField(aData, "sortfield");
aData = this._registerNewField(aData, "stuffsite_type");
aData = this._registerNewField(aData, "stuffsite_from");
aData[aData.length] = "ref_name="+this.getClassName();

new Ajax.Request(PATH_HTTP+"ajax/save-settings.html", {
method: "post",
parameters: aData.join("&"),
onSuccess: function(oTransport)
{
if(!is_null(_this._aSettings["adapter"]) && aData.length >= 2)
{
if(!is_null(_this.getDefault("amount")))
{
_this.getPaginator().setShowAmount(_this.getDefault("amount"));
}

if(!is_null(_this.getDefault("sortfield")) && !is_null(_this.getDefault("sortorder")))
{
if(_this.getPaginatorData().getParameter("sortfield") != _this.getDefault("sortfield") || _this.getPaginatorData().getParameter("sortdir") != _this.getDefault("sortorder"))
{
_this.getPaginatorData().setParameter("sortfield", _this.getDefault("sortfield"));
_this.getPaginatorData().setParameter("sortdir", _this.getDefault("sortorder"));
_this.getPaginatorData().clearData();
}
}

if(!is_null(_this.getDefault("stuffsite_from")))
{
if(_this.getPaginatorData().getParameter("stuffsite_from") != _this.getDefault("stuffsite_from"))
{
_this.getPaginatorData().setParameter("stuffsite_from", _this.getDefault("stuffsite_from"));
_this.getPaginatorData().clearData();
}
}

if(!is_null(_this.getDefault("stuffsite_type")))
{
if(_this.getPaginatorData().getParameter("stuffsite_type") != _this.getDefault("stuffsite_type"))
{
_this.getPaginatorData().setParameter("stuffsite_type", _this.getDefault("stuffsite_type"));
_this.getPaginatorData().clearData();
}
}

var oView = null;

if(!is_null(_this.getDefault("view")))
{
switch(_this.getDefault("view"))
{
case DEF.VIEW_NORMAL: oView = new ViewNormal(_this.getPaginatorData().getView().getContainer(), 4, 0, null); break;
case DEF.VIEW_DETAILS: oView = new ViewDetailsExtended(_this.getPaginatorData().getView().getContainer(), 3, 0, null); break;
case DEF.VIEW_ALBUM: oView = new ViewAlbum(_this.getPaginatorData().getView().getContainer(), 6, 0, null); break;
case DEF.VIEW_LIST:oView =  new ViewList(_this.getPaginatorData().getView().getContainer(), 1, 0, null, 1, 0); break;
case DEF.VIEW_PHOTOFLOW: break;
}

_this.getPaginatorData().setViewClass(oView);
}

_this.getPaginator().toSite(1);
}
}
});
},

_registerNewField: function(aData, sField)
{
if(!is_null(this.getNew(sField)))
{
this.setDefault(sField, this.getNew(sField));
aData[aData.length] = sField+"="+this.getNew(sField);
}

return aData;
},

init: function(oButton)
{
var _this = this;
var fOnMouseOver = function() { _this.show(oButton); };
var fOnMouseOut = function() { _this.hide(); };
var idViewAmount = Functions.createUniqueID();

var oMetaExtra = new Array();

var oView = this._buildView(this.getDefault("view"));
var oAmount = this._buildAmount(this.getDefault("amount"));
var oSort = this._buildSort();
var oStuffSiteFrom = this._buildStuffSiteFrom(this.getDefault("stuffsite_from"));
var oStuffSiteType = this._buildStuffSiteType(this.getDefault("stuffsite_type"));
var oInfo = this._buildInfo();

oMetaExtra = this._buildSpacer(oAmount, oMetaExtra);
oMetaExtra = this._buildSpacer(oSort, oMetaExtra);
oMetaExtra = this._buildSpacer(oView, oMetaExtra);
oMetaExtra = this._buildSpacer(oStuffSiteType, oMetaExtra);
oMetaExtra = this._buildSpacer(oStuffSiteFrom, oMetaExtra);
oMetaExtra = this._buildSpacer(oInfo, oMetaExtra);

oMetaExtra[oMetaExtra.length] = {tr: {td: {a: {href: "javascript:void(0);", content: "Einstellung übernehmen", onclick: function() { _this.performNew(); }}}}};

var oMeta = {table:
{cls: "layer", onmouseover: fOnMouseOver, onmouseout: fOnMouseOut, tbody: [
{tr:
{td:
{cls: "R", colspan: 3, table:
{cls: "w100p", tbody:[
{tr: [
{td: {colspan: 2, rowspan: 2, onmouseover: fOnMouseOut}},
{td: {cls: "LUL", img: {src: LS.img.spacer}}},
{td: {cls: "LBT", img: {src: LS.img.spacer}}},
{td: {cls: "LUR", img: {src: LS.img.spacer}}}
]},
{tr: [
{td: {cls: "LBL", img: {src: LS.img.spacer}}},
{td: [
{cls: "LE18"},
{span: {img: {src: LS.img.spacer, cls: "h1"}}},
{span: {img: {src: LS.img.spacer, cls: "iconSettings18"}}},
]},
{td: {cls: "LBR", img: {src: LS.img.spacer}}}
]},
{tr: [
{td: {cls: "LUL", img: {src: LS.img.spacer}}},
{td: {cls: "LBT", img: {src: LS.img.spacer}}},
{td: {cls: "LILR", img: {src: LS.img.spacer}}},
{td: {cls: "LE", img: {src: LS.img.spacer}}},
{td: {cls: "LBR", img: {src: LS.img.spacer}}}
]}
]}
}
}
},
{tr: [
{td: {cls: "LBL", img: {src: LS.img.spacer, cls: "w30 h1"}}},
{td: [
{cls: "LE"},
{table: {tbody: oMetaExtra}}
]},
{td: {cls: "LBR", img: {src: LS.img.spacer, cls: "w30 h1"}}}
]},
{tr: [
{td: {cls: "LLL", img: {src: LS.img.spacer}}},
{td: {cls: "LBB", img: {src: LS.img.spacer}}},
{td: {cls: "LLR", img: {src: LS.img.spacer}}}
]}
]}
};

oButton.onmouseover = fOnMouseOver;

this.getContainer().position = "absolute";

HTML.cleanContainer(this.getContainer(), ObjectCreator.perform(oMeta));

Functions.setOptionPosition(this.getContainer(), oButton);

this.show(oButton);
},

setSortField: function(_this, oData)
{
this._setButton(_this, $(this._idSortField).getElementsByTagName("td"), 0, 1);
this.setNew("sortfield", oData);
},

setSortOrder: function(_this, oData)
{
this._setButton(_this, $(this._idSortOrder).getElementsByTagName("td"), 0, 1);
this.setNew("sortorder", oData);
},

setStuffSiteType: function(_this, oData)
{
this._setButton(_this, $(this._idStuffSiteType).getElementsByTagName("td"), 0, 1);
this.setNew("stuffsite_type", oData);
},

setStuffSiteFrom: function(_this, oData)
{
this._setButton(_this, $(this._idStuffSiteFrom).getElementsByTagName("table"), 1, 0);
this.setNew("stuffsite_from", oData);
},

setAmount: function(_this, oData)
{
this._setButton(_this, $(this._idAmount).getElementsByTagName("td"), 0, 0);
this.setNew("amount", oData);
},

setView: function(_this, oData)
{
switch(oData)
{
case DEF.VIEW_NORMAL: this.setValues("amount", 4, 16, 16); break;
case DEF.VIEW_DETAILS: this.setValues("amount", 3, 12, 12); break;
case DEF.VIEW_ALBUM: this.setValues("amount", 6, 24, 24); break;
case DEF.VIEW_LIST: this.setValues("amount", 5, 20, 20); break;
}

HTML.cleanContainer($(this._idAmount), ObjectCreator.perform(this._buildAmount(this.getNew("amount"))));

this._setButton(_this, $(this._idView).getElementsByTagName("td"), 0, 1);
this.setNew("view", oData);
},

_buildSpacer: function(oMeta, oMetaExtra)
{
var oMetaSpace = {tr: {td: {cls: "h5", colspan: 3, img: {src: LS.img.spacer}}}};

if(oMeta != null)
{
if(this._bSpace == 1)
{
oMetaExtra[oMetaExtra.length] = oMetaSpace;
}

oMetaExtra[oMetaExtra.length] = oMeta;
this._bSpace = 1;
}

return oMetaExtra;
},

_buildView: function(cDefault)
{
var oView = this.getSettings("view");
var oMeta = null;

if(oView != null)
{
var oButtons = new Array();
var bSpace = 0;
var oData = new Array();
oData[oData.length] = DEF.VIEW_NORMAL;
oData[oData.length] = DEF.VIEW_DETAILS;
oData[oData.length] = DEF.VIEW_ALBUM;
oData[oData.length] = DEF.VIEW_LIST;

for(var i=0;i<oData.length;i++)
{
if(bSpace == 1)
{
oButtons[oButtons.length] = {td: {cls: "w5", img: {src: LS.img.spacer}}};
}

oButtons[oButtons.length] = this._buildViewHelper(oData[i], cDefault);
bSpace = 1;
}

oMeta = {tr: {td: {table: {id: this._idView, tbody: {tr: oButtons}}}}};
}

return oMeta;
},

_buildViewHelper: function(oData, cDefault)
{
var sString = "";
var sClass = "";

switch(oData)
{
case DEF.VIEW_NORMAL: sString = "Normalansicht"; sClass = "iconShowNormal"; break;
case DEF.VIEW_DETAILS: sString = "Detailansicht"; sClass = "iconShowDetails"; break;
case DEF.VIEW_ALBUM: sString = "Albumansicht"; sClass = "iconShowAlbum"; break;
case DEF.VIEW_LIST: sString = "Listenansicht"; sClass = "iconShowList"; break;
}

var _this = this;
var fOnClick = function() { _this.setView(this, oData); };
var fOnMouseOver = function() { $(_this._idInfo).innerHTML = sString; };
var oMeta = {td: {cls: "buttonChooseWhite C M cPointer", onmouseover: fOnMouseOver, onclick: fOnClick, img: {src: LS.img.spacer, cls: sClass}}};

if(oData == cDefault)
{
oMeta = {td: {cls: "buttonChooseBlue C M cPointer", onmouseover: fOnMouseOver, onclick: fOnClick, img: {src: LS.img.spacer, cls: sClass+"Disabled"}}};
}

return oMeta;
},

_buildAmount: function(cDefault)
{
var oAmount = this.getSettings("amount");
var oMeta = null;

if(oAmount != null)
{
var oButtons = new Array();
var bSpace = 0;
var oData = new Array();
oData[oData.length] = oAmount * 2;
oData[oData.length] = oAmount * 3;
oData[oData.length] = oAmount * 4;
oData[oData.length] = oAmount * 6;
oData[oData.length] = oAmount * 8;
oData[oData.length] = oAmount * 10;
oData[oData.length] = oAmount * 12;

for(var i=0;i<oData.length;i++)
{
if(bSpace == 1)
{
oButtons[oButtons.length] = {td: {cls: "w5", img: {src: LS.img.spacer}}};
}

oButtons[oButtons.length] = this._buildAmountHelper(oData[i], cDefault);
bSpace = 1;
}

oMeta = {tr: {td: {table: {id: this._idAmount, tbody: {tr: oButtons}}}}};
}

return oMeta;
},

_buildAmountHelper: function(oData, cDefault)
{
var sDescriber = "";

switch(this.getDescriber())
{
case DEF.VIEW_TYPE_IMAGE: sDescriber = "Bilder"; break;
case DEF.VIEW_TYPE_VIDEO: sDescriber = "Videos"; break;
case DEF.VIEW_TYPE_AUDIO: sDescriber = "Audios"; break;
case DEF.VIEW_TYPE_APPLICATION: sDescriber = "Dateien"; break;
case DEF.VIEW_TYPE_STUFFSITE: sDescriber = "Stuffseiten"; break;
case DEF.VIEW_TYPE_NETWORK: sDescriber = "Eintr&auml;ge"; break;
}

var _this = this;
var sString = new String(oData);
var fOnClick = function() { _this.setAmount(this, oData); };
var fOnMouseOver = function() { $(_this._idInfo).innerHTML = sString+" "+sDescriber+" anzeigen"; };
var oMeta = {td: {cls: "buttonChooseWhite C M cPointer", content: oData, onmouseover: fOnMouseOver, onclick: fOnClick}};

if(oData == cDefault)
{
oMeta = {td: {cls: "buttonChooseBlue C M cPointer", content: oData, onmouseover: fOnMouseOver, onclick: fOnClick}};
}

return oMeta;
},

_buildSort: function()
{
var oSortOrder = this.getSettings("sortorder");
var oSortField = this.getSettings("sortfield");

var oMeta = new Array();

oSortOrder != null;

if(oSortField != null)
{
var oButtons = new Array();
var bSpace = 0;
var oData = new Array();
oData[oData.length] = DEF.SORT_FILENAME;
oData[oData.length] = DEF.SORT_FILETYPE;
oData[oData.length] = DEF.SORT_FILESIZE;
oData[oData.length] = DEF.SORT_FILEDATE;

for(var i=0;i<oData.length;i++)
{
if(bSpace == 1)
{
oButtons[oButtons.length] = {td: {cls: "w5", img: {src: LS.img.spacer}}};
}

oButtons[oButtons.length] = this._buildSortFieldHelper(oData[i], this.getDefault("sortfield"));
bSpace = 1;
}

oMeta[oMeta.length] = {td: {table: {id: this._idSortField, tbody: {tr: oButtons}}}};
}

if(oSortField != null && oSortOrder != null)
{
oMeta[oMeta.length] = {td: {cls: "w32", img: {src: LS.img.spacer}}};
}

if(oSortOrder != null)
{
var oButtons = new Array();
var bSpace = 0;
var oData = new Array();
oData[oData.length] = DEF.SORT_ASC;
oData[oData.length] = DEF.SORT_DESC;

for(var i=0;i<oData.length;i++)
{
if(bSpace == 1)
{
oButtons[oButtons.length] = {td: {cls: "w5", img: {src: LS.img.spacer}}};
}

oButtons[oButtons.length] = this._buildSortOrderHelper(oData[i], this.getDefault("sortorder"));
bSpace = 1;
}

oMeta[oMeta.length] = {td: {table: {id: this._idSortOrder, tbody: {tr: oButtons}}}};
}

if(oMeta.length > 0)
{
return {tr: {td: {table: {tbody: {tr: oMeta}}}}};
}

return null;
},

_buildSortFieldHelper: function(oData, cDefault)
{
var sString = "";
var sClass = "";

switch(oData)
{
case DEF.SORT_FILENAME: sString = "Sortieren nach Dateiname"; sClass = "iconSortName"; break;
case DEF.SORT_FILETYPE: sString = "Sortieren nach Dateityp"; sClass = "iconSortType"; break;
case DEF.SORT_FILESIZE: sString = "Sortieren nach Dateigröße"; sClass = "iconSortStorage"; break;
case DEF.SORT_FILEDATE: sString = "Sortieren nach Hochladedatum"; sClass = "iconSortDate"; break;
}

var _this = this;
var fOnClick = function() { _this.setSortField(this, oData); };
var fOnMouseOver = function() { $(_this._idInfo).innerHTML = sString; };
var oMeta = {td: {cls: "buttonChooseWhite C M cPointer", onmouseover: fOnMouseOver, onclick: fOnClick, img: {src: LS.img.spacer, cls: sClass}}};

if(oData == cDefault)
{
oMeta = {td: {cls: "buttonChooseBlue C M cPointer", onmouseover: fOnMouseOver, onclick: fOnClick, img: {src: LS.img.spacer, cls: sClass+"Disabled"}}};
}

return oMeta;
},

_buildSortOrderHelper: function(oData, cDefault)
{
var sString = "";
var sClass = "";

switch(oData)
{
case DEF.SORT_ASC: sString = "Aufsteigend sortieren (abc, 123)"; sClass = "iconSortDown"; break;
case DEF.SORT_DESC: sString = "Absteigend sortieren (zyx, 987)"; sClass = "iconSortUp"; break;
}

var _this = this;
var fOnClick = function() { _this.setSortOrder(this, oData); };
var fOnMouseOver = function() { $(_this._idInfo).innerHTML = sString; };
var oMeta = {td: {cls: "buttonChooseWhite C M cPointer", onmouseover: fOnMouseOver, onclick: fOnClick, img: {src: LS.img.spacer, cls: sClass}}};

if(oData == cDefault)
{
oMeta = {td: {cls: "buttonChooseBlue C M cPointer", onmouseover: fOnMouseOver, onclick: fOnClick, img: {src: LS.img.spacer, cls: sClass+"Disabled"}}};
}

return oMeta;
},

_setButton: function(_this, aNodes, bDyn, bImg)
{
for(var i=0;i<aNodes.length;i++)
{
if(_this == aNodes[i])
{
if(bImg == 1)
{
HTML.setClass(aNodes[i].childNodes[0], str_replace("Disabled", "", HTML.getClass(aNodes[i].childNodes[0]))+"Disabled");
}

HTML.setClass(aNodes[i], "buttonChooseBlue"+(bDyn ? "Dyn" : "")+" cPointer");
}
else if(HTML.getClass(aNodes[i]) != null && HTML.getClass(aNodes[i]).substr(0, 12) === "buttonChoose")
{
if(bImg == 1)
{
HTML.setClass(aNodes[i].childNodes[0], str_replace("Disabled", "", HTML.getClass(aNodes[i].childNodes[0])));
}

HTML.setClass(aNodes[i], "buttonChooseWhite"+(bDyn ? "Dyn" : "")+" cPointer");
}
}
},

_buildStuffSiteFrom: function()
{
var _this = this;
var oView = this.getSettings("stuffsite_from");
var oMeta = null;
var cDefault = this.getDefault("stuffsite_from");

if(oView != null)
{
var oButtons = new Array();
var bSpace = 0;
var oData = new Array();
oData[oData.length] = DEF.STUFFSITE_FROM_ME;
oData[oData.length] = DEF.STUFFSITE_FROM_ME_AND_FRIENDS;
oData[oData.length] = DEF.STUFFSITE_FROM_FRIENDS;

for(var i=0;i<oData.length;i++)
{
if(bSpace == 1)
{
oButtons[oButtons.length] = {td: {cls: "w5", img: {src: LS.img.spacer}}};
}

oButtons[oButtons.length] = this._buildStuffSiteFromHelper(oData[i], cDefault);
bSpace = 1;
}

oMeta = {tr: {td: {table: {id: this._idStuffSiteFrom, tbody: {tr: oButtons}}}}};
}

return oMeta;
},

_buildStuffSiteFromHelper: function(oData, cDefault)
{
var sString = "";
var sText = "";

switch(oData)
{
case DEF.STUFFSITE_FROM_ME: sString = "Meine Stuffseiten anzeigen"; sText = "Meine"; break;
case DEF.STUFFSITE_FROM_ME_AND_FRIENDS: sString = "Meine Stuffseiten und jene meiner Freunde anzeigen"; sText = "Meine & Freunde"; break;
case DEF.STUFFSITE_FROM_FRIENDS: sString = "Stuffseiten meiner Freunde anzeigen"; sText = "Freunde"; break;
}

var _this = this;
var fOnClick = function() { _this.setStuffSiteFrom(this, oData); };
var fOnMouseOver = function() { $(_this._idInfo).innerHTML = sString; };
var oMeta = {td:
{table:
{cls: ((oData == cDefault) ? "buttonChooseBlueDyn cPointer" : "buttonChooseWhiteDyn cPointer"), onmouseover: fOnMouseOver, onclick: fOnClick, tbody:
{tr : [
{td : {cls: "LS"}},
{td : {cls: "CS M fB", content: sText}},
{td : {cls: "RS"}}
]}
}
}
};

return oMeta;
},

_buildStuffSiteType: function()
{
var oView = this.getSettings("stuffsite_type");
var oMeta = null;
var cDefault = this.getDefault("stuffsite_type");

var _this = this;
var sString = new String(oData);
var fOnClick = function() { _this.setView(this, oData); };
var fOnMouseOver = function() { $(_this._idInfo).innerHTML = sString+" Bilder anzeigen"; };
var oMeta = null;

if(oView != null)
{
var oButtons = new Array();
var bSpace = 0;
var oData = new Array();
oData[oData.length] = DEF.ACCESS_STATUS_ALL;
oData[oData.length] = DEF.ACCESS_STATUS_PUBLIC;
oData[oData.length] = DEF.ACCESS_STATUS_PASSWORDED;
oData[oData.length] = DEF.ACCESS_STATUS_PRIVATE;

for(var i=0;i<oData.length;i++)
{
if(bSpace == 1)
{
oButtons[oButtons.length] = {td: {cls: "w5", img: {src: LS.img.spacer}}};
}

oButtons[oButtons.length] = this._buildStuffSiteTypeHelper(oData[i], cDefault);
bSpace = 1;
}

oMeta = {tr: {td: {table: {id: this._idStuffSiteType, tbody: {tr: oButtons}}}}};
}

return oMeta;
},

_buildStuffSiteTypeHelper: function(oData, cDefault)
{
var sString = "";
var sClass = "";

switch(oData)
{
case DEF.ACCESS_STATUS_PUBLIC: sString = "Nur &ouml;ffentliche Stuffseiten anzeigen"; sClass = "iconStatusPublic"; break;
case DEF.ACCESS_STATUS_PRIVATE: sString = "Nur private Stuffseiten anzeigen"; sClass = "iconStatusPrivate"; break;
case DEF.ACCESS_STATUS_PASSWORDED: sString = "Nur passwortgeschütze Stuffseiten anzeigen"; sClass = "iconStatusPassword"; break;
case DEF.ACCESS_STATUS_ALL: sString = "Alle Stuffseiten anzeigen"; sClass = "iconStatusAll"; break;
}

var _this = this;
var fOnClick = function() { _this.setStuffSiteType(this, oData); };
var fOnMouseOver = function() { $(_this._idInfo).innerHTML = sString; };
var oMeta = {td: {cls: "buttonChooseWhite C M cPointer", onmouseover: fOnMouseOver, onclick: fOnClick, img: {src: LS.img.spacer, cls: sClass}}};

if(oData == cDefault)
{
oMeta = {td: {cls: "buttonChooseBlue C M cPointer", onmouseover: fOnMouseOver, onclick: fOnClick, img: {src: LS.img.spacer, cls: sClass+"Disabled"}}};
}

return oMeta;
},

_buildInfo: function()
{
return {tr: {td: {id: this._idInfo, cls: "fcGrey", content: "Optionen mit der Maus überfahren"}}};
},

show: function(_this)
{
Functions.setOptionPosition(this.getContainer(), _this);
var _this = this;
TimerAction.start(this.getClassName(), 'callback', function() { Functions.show(_this.getContainer()); }, 10);
},

hide: function()
{
var _this = this;
TimerAction.start(this.getClassName(), 'callback', function() { Functions.hide(_this.getContainer()) }, 10);
}
});
LS.plugin.PXN8 = Class.create(
{
initialize: function()
{

},

saveToServer: function(uiSFID, sImagePath, bNew)
{
if(sImagePath != false)
{
var _this = this;

var aData = new Array();
aData[aData.length] = "new="+bNew;
aData[aData.length] = "file="+encodeURI(sImagePath);
aData[aData.length] = "sfid="+uiSFID;

new Ajax.Request(PATH_HTTP+"ajax/save-photoeditor.html", {
method: "post",
parameters: aData.join("&"),
onSuccess: function(oTransport)
{
Debug.replace(oTransport.responseText);
var oData = JSON.parse(oTransport.responseText);

if(oData["ec"] == EC.SUCCESS)
{
Debug.add("gespeichert/neuangelegt");
}
else
{
Debug.add("fehlschlag");
}
}
});
}
else
{
alert("Datei muss nicht gespeichert werden, da Sie noch nicht verändert wurde.");
}
}
});


function pxn8_save_image(sImagePath)
{
if(!$("sfid"))
{
Debug.add("hidden input fehlt: 'sfid'");
}
var bNew = (window.confirm("Bild als neue Datei abspeichern?")) ? 1 : 0;


new LS.plugin.PXN8().saveToServer($("sfid").value, sImagePath, bNew);
}
LS.view.Stuffsite = Class.create(LS.view,
{
initialize: function($super, oContainer, uiUnitsPerLine, cExtraOption, bAddStuffSite, bEditPreview, cType)
{
bAddStuffSite = Functions.exists(bAddStuffSite, 0);
bEditPreview = Functions.exists(bEditPreview, 0);
cType = Functions.exists(cType, DEF.STUFFSITE);

this.CREATE_ONLY_BY_DATA = 1;

$super(oContainer);

this._cOption = cExtraOption;
this._uiUnitsPerLine = uiUnitsPerLine;
this._bAddStuffSite = bAddStuffSite;
this._bEditPreview = bEditPreview;
this._cType = cType;

},

getType: function() { return this._cType; },
getUnitsPerLine: function(){ return this._uiUnitsPerLine; },

show: function(aStuffSites)
{
var oTable;

if(aStuffSites.length == 0 && this._cOption != this.CREATE_ONLY_BY_DATA && this._bAddStuffSite == 1)
{
var oStuffSite = new Object();

oStuffSite["sitename"] = "neue Stuffseite";
oStuffSite["link"] = PATH_HTTP+"userstuffsites-modification.html";
oStuffSite["count_file_images"] = 0;
oStuffSite["count_file_videos"] = 0;
oStuffSite["count_file_audios"] = 0;
oStuffSite["count_file_files"] = 0;

aStuffSites[0] = oStuffSite;
}

if(aStuffSites.length > 0)
{
oTable = HTML.createTag("table");
var oTBody = HTML.createTag("tbody");
var oTr, oTd;

oTable.appendChild(oTBody);

HTML.setClass(oTable, "w100p psb0");

for(var i=0;i<aStuffSites.length;i++)
{
uiFiller = i % this._uiUnitsPerLine;

if(uiFiller == 0)
{
oTr = HTML.createTag("tr");
oTBody.appendChild(oTr);
oTd = HTML.createTagWithContent("td", "");
HTML.setClass(oTd, "w15");
oTr.appendChild(oTd);
}

oTd = HTML.createTag("td");
oTr.appendChild(oTd);

if(aStuffSites[i] == null)
{
oTd.appendChild(this._createNullContainer());
}
else
{
oTd.appendChild(this._createStuffSiteContainer(aStuffSites[i]));
}
}

uiFiller = this._uiUnitsPerLine - uiFiller - 1;

if(uiFiller > 0)
{
for(var i=uiFiller;i>0;i--)
{
oTd = HTML.createTag("td");
oDiv = HTML.createTag("div");

oTr.appendChild(oTd);
oTd.appendChild(oDiv);

HTML.setClass(oDiv, "w210");
}
}

oTd = HTML.createTagWithContent("td", "");
HTML.setClass(oTd, "w15");
oTr.appendChild(oTd);


}
else
{
var oMeta = {div:
{center:
{table:
{cls: "h150 C M w600", tbody: [
{tr:
{td: {cls: "f14", content: "Keine Stuffseite vorhanden"}}
},
{tr: {td: {cls: "h15", img: {src: LS.img.spacer}}}}
]}
}
}
};

oTable = ObjectCreator.perform(oMeta);
}

HTML.cleanContainer(this.getContainer());

var oDivSpacer = HTML.createTag("div");
HTML.setClass(oDivSpacer, "h8");

var oDivShadow = HTML.createTag("div");
var sDivShadow = "shadow980";

if(this.getUnitsPerLine() <= 1)
{
sDivShadow = "shadow265";
}
else if(this.getUnitsPerLine() <= 3)
{
sDivShadow = "shadow700";
}

HTML.setClass(oDivShadow, sDivShadow);

this.getContainer().appendChild(oTable);
this.getContainer().appendChild(oDivSpacer);
this.getContainer().appendChild(oDivShadow);
},

_createNullContainer: function()
{
return ObjectCreator.perform({div: {width: 224, height: 165}});
},

_createStuffSiteContainer: function(oStuffSite)
{
var _this = this;
var sStatusClass = "bgImgStuffSite";
var oStatus = {tr: {td: {colspan: 2, cls: "h22 pL3", content: "&nbsp;"}}};
var sSitename = Functions.stringShorter(oStuffSite["sitename"], 23)+"<br><br>";
var oEdit = {td: {a: {href: PATH_HTTP+"collection-modification/"+oStuffSite[oStuffSite["id"]]+".html", img: {src: LS.img.spacer, cls: "iconStuffsiteSettingsOut cPointer", onmouseover: function() { HTML.setClass(this, "iconStuffsiteSettingsOver cPointer")}, onmouseout: function() { HTML.setClass(this, "iconStuffsiteSettingsOut cPointer")}, title: "Collection bearbeiten"}}}};

if(this.getType() == DEF.STUFFSITE)
{
switch(oStuffSite["status"])
{
case DEF.ACCESS_STATUS_PUBLIC:
sStatusClass = "bgSSPublic w210 psb0";
oStatus = {tr: {td: {colspan: 2, cls: "h22 pL3", img: {src: LS.img.spacer, cls: "iconPublicSmall", title: "Öffentlich"}}}};
break;

case DEF.ACCESS_STATUS_PRIVATE:
sStatusClass = "bgSSPrivate w210 psb0";
oStatus = {tr: {td: {colspan: 2, cls: "h22 pL3", img: {src: LS.img.spacer, cls: "iconPrivateSmall", title: "Privat"}}}};
break;

case DEF.ACCESS_STATUS_PASSWORDED:
sStatusClass = "bgSSPrivatePassword w210 psb0";
oStatus = {tr: {td: {colspan: 2, cls: "h22 pL3", img: {src: LS.img.spacer, cls: "iconPasswordedSmall", title: "Passwort geschützt"}}}};
break;
}
}


var idPC = Functions.createUniqueID();
var idPreviewTable = Functions.createUniqueID();
var idImage = Functions.createUniqueID();

if(this.getType() == DEF.STUFFSITE)
{
sSitename = Functions.stringShorter(oStuffSite["sitename"], 23)+"<br>"+"("+Functions.parseSize(oStuffSite["storage_used"])+")";
oEdit = {td: {a: {href: PATH_HTTP+"userstuffsites-modification/"+oStuffSite[oStuffSite["id"]]+".html", img: {src: LS.img.spacer, cls: "iconStuffsiteSettingsOut cPointer", onmouseover: function() { HTML.setClass(this, "iconStuffsiteSettingsOver cPointer")}, onmouseout: function() { HTML.setClass(this, "iconStuffsiteSettingsOut cPointer")}, title: "Stuffseite bearbeiten"}}}};
}


var oMetaImageTableLower = {tr: [
{td: {colspan: 2, a: {href: oStuffSite["link"], img: {src: LS.img.spacer, cls: "w120 h20", title: oStuffSite["sitename"]}}}},
{td: {img:
{
id: idImage,
src: PATH_IMG+"spacer.gif", title: "Vorschau",
cls: "iconMagnifierOut20 cPointer",
onmouseover: function() { HTML.setClass($(idImage), 'iconMagnifierOver20 cPointer'); },
onmouseout: function() { HTML.setClass($(idImage), 'iconMagnifierOut20 cPointer'); },
onclick: function() { new LS.popup.StuffSite($(idPC), oStuffSite, {type: _this.getType()}); }
}
}}
]};

if(oStuffSite["uid"] == UID)
{
oMetaImageTable = {center: [{div: {id: idPC}},
{table:
{id: idPreviewTable, background: oStuffSite["previewimage"],
tbody: [
{tr: [
{td: {img: {src: LS.img.spacer, cls: "iconStuffsitePreviewOut cPointer", onclick: function() { new Popup_StuffSitePreview($(idPC), $(idPreviewTable), oStuffSite, {type: _this.getType()}); }, onmouseover: function() { HTML.setClass(this, "iconStuffsitePreviewOver cPointer")}, onmouseout: function() { HTML.setClass(this, "iconStuffsitePreviewOut cPointer")}, title: "Vorschaubild ändern"}}},
{td: {a: {href: oStuffSite["link"], img: {src: LS.img.spacer, cls: "w100 h20", title: oStuffSite["sitename"]}}}},
oEdit,
]},
{tr: {td: {colspan: 3, a: {href: oStuffSite["link"], img: {src: LS.img.spacer, cls: "w140 h65", title: oStuffSite["sitename"]}}}}},
oMetaImageTableLower
]}
}]
};
}
else
{
oMetaImageTable = {center: [{div: {id: idPC}},
{table:
{id: idPreviewTable, background: oStuffSite["previewimage"],
tbody: [
{tr:
{td:
{colspan:3, table:
{tbody:
{tr: [
{td: {cls: "bgSsAvatar w40 h40 C M", a: {href: oStuffSite["user_profile_path"],img: {src: oStuffSite["user_avatar"], title: oStuffSite["user_username"], cls: "w30 h30"}}}},
{td: {a: {href: oStuffSite["link"], img: {src: LS.img.spacer, cls: "w100 h40", title: oStuffSite["sitename"]}}}}
]}
}
}
}
},
{tr: {td: {colspan: 3, a: {href: oStuffSite["link"], img: {src: LS.img.spacer, cls: "w140 h45", title: oStuffSite["sitename"]}}}}},
oMetaImageTableLower
]}
}]
};
}

var oCls = new Object();
oCls["icon_image"] = (oStuffSite["count_file_images"] > 0) ? "iconImages" : "iconImagesDisabled";
oCls["text_image"] = (oStuffSite["count_file_images"] > 0) ? "f11" : "f11 fcGrey";
oCls["icon_video"] = (oStuffSite["count_file_videos"] > 0) ? "iconVideos" : "iconVideosDisabled";
oCls["text_video"] = (oStuffSite["count_file_videos"] > 0) ? "f11" : "f11 fcGrey";
oCls["icon_audio"] = (oStuffSite["count_file_audios"] > 0) ? "iconAudios" : "iconAudiosDisabled";
oCls["text_audio"] = (oStuffSite["count_file_audios"] > 0) ? "f11" : "f11 fcGrey";
oCls["icon_application"] = (oStuffSite["count_file_files"] > 0) ? "iconFiles" : "iconFilesDisabled";
oCls["text_application"] = (oStuffSite["count_file_files"] > 0) ? "f11" : "f11 fcGrey";

var oMeta = {table:
{cls: sStatusClass, tbody: [
{tr: {td: {colspan: 5, cls:"h10", img: {src: LS.img.spacer}}}},
{tr: [
{td: {colspan: 3, cls: "Header"}},
{td: {colspan: 2, img: {src: LS.img.spacer}}}
]},
{tr: [
{td: {rowspan: 6, cls: "Left"}},
{td: [{rowspan: 6, cls: "Body C M"}, oMetaImageTable]},
{td: {rowspan: 6, cls: "Right"}},
{td: {colspan: 2, cls: "", img: {src: LS.img.spacer}}}
]},
{tr: [
{td: {cls: "C h22 w24", title: oStuffSite["count_file_images"]+" Bild(er)", img: {cls: oCls["icon_image"], src: LS.img.spacer}}},
{td: {cls: oCls["text_image"], content: oStuffSite["count_file_images"]}}
]},
{tr: [
{td: {cls: "C h22 w24", title: oStuffSite["count_file_videos"]+" Video(s)", img: {cls: oCls["icon_video"], src: LS.img.spacer}}},
{td: {cls: oCls["text_video"], content: oStuffSite["count_file_videos"]}}
]},
{tr: [
{td: {cls: "C h22 w24", title: oStuffSite["count_file_audios"]+" Audio(s)", img: {cls: oCls["icon_audio"], src: LS.img.spacer}}},
{td: {cls: oCls["text_audio"], content: oStuffSite["count_file_audios"]}}
]},
{tr: [
{td: {cls: "C h22 w24", title: oStuffSite["count_file_files"]+" Datei(en)", img: {cls: oCls["icon_application"], src: LS.img.spacer}}},
{td: {cls: oCls["text_application"], content: oStuffSite["count_file_files"]}}
]},
oStatus,
{tr: [
{td: {colspan: 3, cls: "Footer B C f11 fcBlue", a: {href: oStuffSite["link"], title: oStuffSite["sitename"], content: sSitename}}}
]}
]}
};

return ObjectCreator.perform(oMeta);
}
});
var ViewNormal = Class.create(LS.view,
{
initialize: function($super, oContainer, uiUnitsPerLine, uiShowUnitsPerLine, cType, bShowCheckbox)
{
bShowCheckbox = Functions.exists(bShowCheckbox, 1);

$super(oContainer);

this._uiUnitsPerLine = uiUnitsPerLine;
this._uiShowUnitsPerSite = uiShowUnitsPerLine;
this._acbFunctions = null;
this._bShowCheckbox = bShowCheckbox;
},

getUnitsPerLine: function() { return this._uiUnitsPerLine; },
getShowUnitsPerSite: function() { return this._uiShowUnitsPerSite; },

show: function(aStuffFiles)
{
this._acbFunctions = new Array();

var oTable;
var aWidth;

if(this.getUnitsPerLine() <= 2)
{
aWidth = new Array("w15", "w15");
}

else if(this.getUnitsPerLine() <= 4)
{
aWidth = new Array("w15", "w23", "w24", "w23", "w15");
}

else if(this.getUnitsPerLine() <= 6)
{
aWidth = new Array("w15", "w10", "w10", "w10", "w10", "w10", "w15");
}

if(aStuffFiles.length > 0)
{
oTable = HTML.createTag("table");
var oTBody = HTML.createTag("tbody");
var oTr, oTd;

oTable.appendChild(oTBody);

HTML.setClass(oTable, "w100p psb0");

var uiLength = aStuffFiles.length;
var uiAppend = this.getUnitsPerLine()-uiLength%this.getUnitsPerLine();

if(uiAppend == this.getUnitsPerLine())
{
uiAppend = 0;
}

for(i=0;i<uiAppend;i++)
{
aStuffFiles[aStuffFiles.length] = null;
}

var uiLength = aStuffFiles.length;

for(var i=0;i<uiLength;i++)
{
uiFiller = i % this._uiUnitsPerLine;

if(uiFiller == 0)
{
oTr = HTML.createTag("tr");
oTBody.appendChild(oTr);
oTd = HTML.createTagWithContent("td", "");
HTML.setClass(oTd, aWidth[0]);
oTr.appendChild(oTd);
}

oTd = HTML.createTag("td");
oTr.appendChild(oTd);
HTML.setClass(oTd, "CF f11 C w150 pB10");

if(aStuffFiles[i] != null)
{
oTd.appendChild(this._createContainer(aStuffFiles[i]));
}

oTd = HTML.createTag("td");
oTr.appendChild(oTd);

HTML.setClass(oTd, aWidth[(i+1)%(aWidth.length-1)]);
}
}
else
{
var oMeta = {div:
{center:
{table:
{cls: "h150 C M w600", tbody: [
{tr:
{td: {cls: "f14", content: "Keine Dateien vorhanden"}}
},
{tr: {td: {cls: "h15", img: {src: LS.img.spacer}}}}
]}
}
}
};

oTable = ObjectCreator.perform(oMeta);
}

HTML.cleanContainer(this.getContainer());

var oDivSpacer = HTML.createTagWithContent("div", '<img src="'+PATH_IMG+'spacer.gif" class="h8">');
var oDivShadow = HTML.createTag("div");
var sDivShadow = "shadow980";

if(this.getUnitsPerLine() <= 2)
{
sDivShadow = "shadow265";
}
else if(this.getUnitsPerLine() <= 4)
{
sDivShadow = "shadow700";
}

HTML.setClass(oDivShadow, sDivShadow);

this.getContainer().appendChild(oTable);
this.getContainer().appendChild(oDivSpacer);
this.getContainer().appendChild(oDivShadow);

for(var i=0;i<this._acbFunctions.length;i++)
{
this._acbFunctions[i]();
}
},

_createContainer: function(oStuffFile)
{
var oDownload;
var idDownload = Functions.createUniqueID();

if(oStuffFile["ccl"] > 0 || oStuffFile["uid"] == UID)
{
oDownload = { td: {
cls: "w20 h20",
a : {
href: "javascript:Functions.download("+oStuffFile["sfid"]+",'"+oStuffFile["security_match"]+"', "+oStuffFile["authentification"]+");",
img: {
id: idDownload,
src: PATH_IMG+"spacer.gif", title: "Download",
cls: "iconDownloadOut20",
onmouseover: function() { HTML.setClass($(idDownload), 'iconDownloadOver20'); },
onmouseout: function() { HTML.setClass($(idDownload), 'iconDownloadOut20'); }
}
}
}
};
}
else
{
oDownload = { td: {a: {href: oStuffFile["link"], img: {src: PATH_IMG+"spacer.gif", title: oStuffFile["filename"], cls: "h20 w20"}}}};
}

var sTableClass = "bgImgStuffFileNormal";

if(oStuffFile["public"] == 1)
{
sTableClass = "bgImgStuffFileNormalBlue";
}

var idTable = Functions.createUniqueID();
var idImage = Functions.createUniqueID();
var idCheckbox = Functions.createUniqueID();
var idCheckboxImage = Functions.createUniqueID();
var idPreviewPopup = Functions.createUniqueID();
var oImage = { table: {
id: idTable,
cls : sTableClass,
tbody: [
{tr: {td : {colspan: 3, cls: "C pB2", a: {href: oStuffFile["link"], content: Functions.stringShorter(oStuffFile["filename"], 20), title: oStuffFile["filename"]}}}},
{tr: {td : {colspan: 3, div: {id: idPreviewPopup, position: "absolute"}}}},
{tr:
{td : {
cls: "Body C M",
colspan: 3,
center : [
{checkbox: {value: 0, id: idCheckbox, cls: "dN", value: oStuffFile["sfid"]+"-"+oStuffFile["security_match"]+"-"+oStuffFile["cacheid"]}},
{table : {
cls: "w140 h105 cPointer",
background: oStuffFile["thumbnail"],
tbody : [
{tr : [
{td: {colspan: 2, cls: "h20 w100", a: {href: oStuffFile["link"], img: {src: PATH_IMG+"spacer.gif", title: oStuffFile["filename"], cls: "h20 w120"}}}},
oDownload

]},
{tr : {td: {colspan: 3, cls: "w140 h65", a: {href: oStuffFile["link"], img: {src: PATH_IMG+"spacer.gif", title: oStuffFile["filename"], cls: "w140 h65"}}}}},
{tr : [
{td:
{img:
{
id: idCheckboxImage,
cls: "w20 h20",
src: PATH_IMG+"spacer.gif"
}
}
},
{td: {cls: "w100 h20", a: {href: oStuffFile["link"], img: {src: PATH_IMG+"spacer.gif", title: oStuffFile["filename"], cls: "w100 h20"}}}},
{td:
{
cls: "w20 h20",
a: {
href: "javascript:void(0);", onclick: function() { new Popup_Preview($(idPreviewPopup), Cache.lookup(oStuffFile["cacheid"]), -83, 3); },
img: {
id: idImage,
src: PATH_IMG+"spacer.gif", title: "Vorschau",
cls: "iconMagnifierOut20",
onmouseover: function() { HTML.setClass($(idImage), 'iconMagnifierOver20'); },
onmouseout: function() { HTML.setClass($(idImage), 'iconMagnifierOut20'); }
}
}
}
}
]}
]
}}
]
}
}
},
{ tr: [{td : {cls: "FooterL B pLR5"}}, {td: {cls: "FooterR"}}]}
]
}
};

if(this._bShowCheckbox == 1)
{
this._acbFunctions[this._acbFunctions.length] = function()
{
Functions.setCheckbox($(idCheckbox), $(idCheckboxImage), $(idTable), 0, 1);
};
}

return ObjectCreator.perform(oImage);
}
});
var ViewDetailsExtended = Class.create(LS.view,
{
initialize: function($super, oContainer, uiUnitsPerLine, uiShowUnitsPerLine, cType, bShowCheckbox)
{
$super(oContainer);
bShowCheckbox = Functions.exists(bShowCheckbox, 1);

this._sTypeClass = "bgImgStuffFile80x60Disabled";
this._uiUnitsPerLine = uiUnitsPerLine;
this._uiShowUnitsPerSite = uiShowUnitsPerLine;
this._bCheckbox = 1;
this._bStuffSite = 0;

this._uiTableWidth = "w950";
this._acbFunctions = null;
this._bShowCheckbox = bShowCheckbox;
},

setNoCheckBox: function() { this._bCheckbox = 0; },
setStuffSites: function() { this._bStuffSite = 1; },
getUnitsPerLine: function() { return this._uiUnitsPerLine; },
getShowUnitsPerSite: function() { return this._uiShowUnitsPerSite; },

show: function(aStuffFiles)
{
this._acbFunctions = new Array();

var oTable;
var aWidth = new Array("w15", "w15");

if(this.getUnitsPerLine() <= 3)
{
aWidth = new Array("w15", "w20", "w20", "w15");
this._uiTableWidth = "w210";
}
else if(this.getUnitsPerLine() <= 5)
{
aWidth = new Array("w15", "w20", "w20", "w20", "w15");
this._uiTableWidth = "w210";
}


if(aStuffFiles.length > 0)
{
oTable = HTML.createTag("table");
var oTBody = HTML.createTag("tbody");
var oTr, oTd, oTrLinie, oTdLinie;

oTable.appendChild(oTBody);

HTML.setClass(oTable, "w100p");

var uiLength = aStuffFiles.length;
var uiAppend = this.getUnitsPerLine()-uiLength%this.getUnitsPerLine();

if(uiAppend == this.getUnitsPerLine())
{
uiAppend = 0;
}

for(i=0;i<uiAppend;i++)
{
aStuffFiles[aStuffFiles.length] = null;
}

var uiLength = aStuffFiles.length;

var uiColspan = aWidth.length+this.getUnitsPerLine();


for(var i=0;i<uiLength;i++)
{
uiFiller = i % this._uiUnitsPerLine;

if(uiFiller == 0)
{
oTr = HTML.createTag("tr");
oTBody.appendChild(oTr);

oTd = HTML.createTag("td");
HTML.setClass(oTd,aWidth[0]);
oTr.appendChild(oTd);

if(i<uiLength-aWidth.length && this.getUnitsPerLine() > 1)
{
oTrLinie = HTML.createTag("tr");
oTBody.appendChild(oTrLinie);
oTdLinie = HTML.createTagWithContent("td", '<img src="'+PATH_IMG+'spacer.gif">');
HTML.setClass(oTdLinie, "h10 pLR10");
HTML.createAttribute("colspan", uiColspan, oTdLinie);
oTrLinie.appendChild(oTdLinie);
}
}

oTd = HTML.createTag("td");
oTr.appendChild(oTd);
HTML.setClass(oTd, "w210");



if(aStuffFiles[i] != null)
{
oTd.appendChild(ObjectCreator.perform(this._createContainer(aStuffFiles[i])));
}

oTd = HTML.createTag("td");
oTr.appendChild(oTd);

HTML.setClass(oTd, aWidth[(i+1)%(aWidth.length-1)]);
}
}
else
{
var oMeta = {div:
{center:
{table:
{cls: "h150 C M "+(this.getUnitsPerLine() > 3 ? "w600" : "w250"), tbody: [
{tr:
{td: {cls: "f14", content: "Keine Dateien vorhanden"}}
},
{tr: {td: {cls: "h15", img: {src: LS.img.spacer}}}}
]}
}
}
};

oTable = ObjectCreator.perform(oMeta);
}

HTML.cleanContainer(this.getContainer());

var oDivSpacer = HTML.createTagWithContent("div", '<img src="'+PATH_IMG+'spacer.gif" class="h8">');
var oDivShadow = HTML.createTag("div");
var sDivShadow = "shadow300";

if(this.getUnitsPerLine() == 1)
{
sDivShadow = "shadow300";
}
else if(this.getUnitsPerLine() <= 3)
{
sDivShadow = "shadow700";
}
else if(this.getUnitsPerLine() <= 5)
{
sDivShadow = "shadow980";
}

HTML.setClass(oDivShadow, sDivShadow);

this.getContainer().appendChild(oTable);
this.getContainer().appendChild(oDivSpacer);
this.getContainer().appendChild(oDivShadow);

for(var i=0;i<this._acbFunctions.length;i++)
{
this._acbFunctions[i]();
}
},

_createContainer: function(oStuffFile)
{
var uiWidthData = "w115";
var uiCharacter = 34;
var oExtraUser = {tr: {td: {cls: "fcWhite", content: "&nbsp;"}}};
var oStuffSite = {tr: {td: {cls: "fcWhite", colspan: 2, content: "&nbsp;"}}};

var oDownload, oStuffSite;
var idDownload = Functions.createUniqueID();

if(this._bStuffSite == 0 && (oStuffFile["ccl"] > 0 || oStuffFile["uid"] == UID))
{
oDownload = { td: {
cls: "w20 h20",
a : {
href: "javascript:Functions.download("+oStuffFile["sfid"]+",'"+oStuffFile["security_match"]+"', "+oStuffFile["authentification"]+");",
img: {
id: idDownload,
src: PATH_IMG+"spacer.gif", title: "Download",
cls: "iconDownloadOut20",
onmouseover: function() { HTML.setClass($(idDownload), 'iconDownloadOver20'); },
onmouseout: function() { HTML.setClass($(idDownload), 'iconDownloadOut20'); }
}
}
}};
}
else
{
oDownload = { td: { a: {href: oStuffFile["link"], img: {src: PATH_IMG+"spacer.gif", title: oStuffFile["filename"], cls: "h20 w20"}}}};
}

oStuffFile = Functions.keyExists("sitename", oStuffFile, null);

if(oStuffFile["sitename"] != null)
{
oStuffSite = {tr : [
{td: {img: {src: PATH_IMG+"spacer.gif", cls: "iconDetailStuffsite", title: "Stuffseite "+oStuffFile["sitename"]}}},
{td: {a : {href: oStuffFile["sitepath"], content: Functions.stringShorter(oStuffFile["sitename"], (uiCharacter-16)), title: "Stuffseite "+oStuffFile["sitename"]}}}
]};
}



oStuffFile = Functions.keyExists("username", oStuffFile, null);
oStuffFile = Functions.keyExists("userpath", oStuffFile, null);

if(oStuffFile["username"] != null && oStuffFile["userpath"] != null)
{
oExtraUser = {tr : [
{td: {img: {src: PATH_IMG+"spacer.gif", cls: "iconDetailUser", title: "User "+oStuffFile["username"]}}},
{td: {a : {href: oStuffFile["userpath"], content: Functions.stringShorter(oStuffFile["username"], (uiCharacter-16)), title: "User "+oStuffFile["username"]}}}
]};
}

var idTable = Functions.createUniqueID();
var idImage = Functions.createUniqueID();
var idCheckbox = Functions.createUniqueID();
var idCheckboxImage = Functions.createUniqueID();
var idPreviewContainer = Functions.createUniqueID();

var sTableClass = "bgImgStuffFileAlbum";

if(oStuffFile["public"] == 1)
{
sTableClass = "bgImgStuffFileAlbumBlue";
}

var oImage = { td : {
cls : "w90",
table: {
title: oStuffFile["filename"],
id: idTable,
cls : sTableClass,
tbody: {
tr: [
{td : {
cls: "Body C M pB8 w90",
center : [
{checkbox: {value: 0, id: idCheckbox, cls: "dN", value: oStuffFile["sfid"]+"-"+oStuffFile["security_match"]+"-"+oStuffFile["cacheid"]}},
{table : {
cls: "80 h60 cPointer",
background: str_replace("140x105", "80x60", oStuffFile["thumbnail"]),
tbody : [
{tr : [
{td: {colspan: 2, cls: "h20 w60", a: {href: oStuffFile["link"], img: {src: PATH_IMG+"spacer.gif", title: oStuffFile["filename"], cls: "h20 w60"}}}},
oDownload

]},
{tr : {td: {colspan: 3, cls: "h20 w80", a: {href: oStuffFile["link"], img: {src: PATH_IMG+"spacer.gif", title: oStuffFile["filename"], cls: "h20 w80"}}}}},
{tr : [
{td:
{img:
{
id: idCheckboxImage,
cls: "w20 h20",
src: PATH_IMG+"spacer.gif"
}
}
},
{td: {cls: "w40 h20", a: {href: oStuffFile["link"], img: {src: PATH_IMG+"spacer.gif", title: oStuffFile["filename"], cls: "h20 w40"}}}},
{td:
{
cls: "w20 h20",
a: {
href: "javascript:void(0);", onclick: function() { new Popup_Preview($(idPreviewContainer), Cache.lookup(oStuffFile["cacheid"]), -202, -60); },
img: {
id: idImage,
src: PATH_IMG+"spacer.gif", title: "Vorschau",
cls: "iconMagnifierOut20",
onmouseover: function() { HTML.setClass($(idImage), 'iconMagnifierOver20'); },
onmouseout: function() { HTML.setClass($(idImage), 'iconMagnifierOut20'); }
}
}
}
}
]}
]
}
}]
}},
{td : [{cls: "FooterL"},{cls: "FooterR"}]}
]
}
}
}};

var oExtraData = {tr : {td: {cls: "fcWhite", content: "&nbsp;"}}};

if(oStuffFile["mimetype"] == "image")
{
oStuffFile = Functions.keyExists("real_img_width", oStuffFile, 0);
oStuffFile = Functions.keyExists("real_img_height", oStuffFile, 0);

oExtraData = {tr : [
{td: {img: {src: PATH_IMG+"spacer.gif", cls: "iconDetailResolutions", title: "Auflösung "+oStuffFile["real_img_width"] + "x" + oStuffFile["real_img_height"]}}},
{td: {content: oStuffFile["real_img_width"] + "x" + oStuffFile["real_img_height"], title: "Auflösung "+oStuffFile["real_img_width"] + "x" + oStuffFile["real_img_height"]}}
]};
}
else if(oStuffFile["mimetype"] == "video" || oStuffFile["mimetype"] == "audio")
{
oStuffFile = Functions.keyExists("duration", oStuffFile, 0);

oExtraData = {tr : [
{td: {img: {src: PATH_IMG+"spacer.gif", cls: "iconDetailLength", title: "Laufzeit "+Functions.parseLength(oStuffFile["duration"])}}},
{td: {content: Functions.parseLength(oStuffFile["duration"]), title: "Laufzeit "+Functions.parseLength(oStuffFile["duration"])}}
]};
}

var oData =  { td: {
cls: "L "+uiWidthData,
table: {
tbody: [
{tr : [
{td: {cls: "w15", img: {src: PATH_IMG+"spacer.gif", cls: "iconDetailStorageSize", title: "Dateigröße "+Functions.parseSize(oStuffFile["filesize"], 2, 0)}}},
{td: {content: Functions.parseSize(oStuffFile["filesize"]), title: "Dateigröße "+Functions.parseSize(oStuffFile["filesize"], 2, 0)}}
]},
{tr : [
{td: {img: {src: PATH_IMG+"spacer.gif", cls: "iconDetailDateAdded", title: "Uploaddatum "+Functions.parseDate(oStuffFile["date_added"], LS.date.dmY)}}},
{td: {content: Functions.parseDate(oStuffFile["date_added"], LS.date.dmY), title: "Uploaddatum "+Functions.parseDate(oStuffFile["date_added"], LS.date.dmY)}}
]},
oExtraData,
oExtraUser,
oStuffSite,
{tr: {td: {colspan: 2, img: {src: PATH_IMG+"spacer.gif", cls: "h8"}}}}
]}
}
};



var oMeta = { table: {
cls : "w210 M",
tbody: [{tr: {td: {colspan: 3, a: {href: oStuffFile["link"], content: Functions.stringShorter(oStuffFile["filename"], uiCharacter), title: oStuffFile["filename"]}}}},
{tr: [
oImage,
{td: {div: {position: "absolute", id: idPreviewContainer}, img: {src: PATH_IMG+"spacer.gif", cls: "w5"}}},
oData
]
}]
}
};

if(this._bShowCheckbox == 1)
{
this._acbFunctions[this._acbFunctions.length] = function()
{
Functions.setCheckbox($(idCheckbox), $(idCheckboxImage), $(idTable), 0, 1);
};
}

return oMeta;
}
});
var ViewAlbum = Class.create(LS.view,
{
initialize: function($super, oContainer, uiUnitsPerLine, uiShowUnitsPerLine, cType, bShowCheckbox)
{
bShowCheckbox = Functions.exists(bShowCheckbox, 1);

$super(oContainer);

this._cType = cType;
this._uiUnitsPerLine = uiUnitsPerLine;
this._uiShowUnitsPerSite = uiShowUnitsPerLine;

this._acbFunctions = null;
this._bShowCheckbox = bShowCheckbox;
},

getUnitsPerLine: function() { return this._uiUnitsPerLine; },
getShowUnitsPerSite: function() { return this._uiShowUnitsPerSite; },

show: function(aStuffFiles)
{
this._acbFunctions = new Array();

var oTable;
var aWidth,uiTableWidth;

if(this.getUnitsPerLine() <= 3)
{
aWidth = new Array("w15", "w15");
uiTableWidth = "w265";
}

else if(this.getUnitsPerLine() <= 6)
{

aWidth = new Array("w15", "w10", "w10", "w10", "w10", "w10", "w15");
uiTableWidth = "w700";
}

else
{
aWidth = new Array("w15", "w19", "w20", "w20", "w20", "w20", "w20", "w20", "w19", "w15");
uiTableWidth = "w980";
}


if(aStuffFiles.length > 0)
{
oTable = HTML.createTag("table");
var oTBody = HTML.createTag("tbody");
var oTr, oTd;

oTable.appendChild(oTBody);

HTML.setClass(oTable, uiTableWidth+" psb0");

var uiLength = aStuffFiles.length;
var uiAppend = this.getUnitsPerLine()-uiLength%this.getUnitsPerLine();

if(uiAppend == this.getUnitsPerLine())
{
uiAppend = 0;
}

for(i=0;i<uiAppend;i++)
{
aStuffFiles[aStuffFiles.length] = null;
}

var uiLength = aStuffFiles.length;

for(var i=0;i<uiLength;i++)
{
uiFiller = i % this._uiUnitsPerLine;

if(uiFiller == 0)
{
oTr = HTML.createTag("tr");
oTBody.appendChild(oTr);
oTd = HTML.createTagWithContent("td", "");
HTML.setClass(oTd, aWidth[0]);
oTr.appendChild(oTd);
}

oTd = HTML.createTag("td");
oTr.appendChild(oTd);
HTML.setClass(oTd, "w88");

if(aStuffFiles[i] != null)
{
oTd.appendChild(this._createContainer(aStuffFiles[i]));
}

oTd = HTML.createTag("td");
oTr.appendChild(oTd);

HTML.setClass(oTd, aWidth[(i+1)%(aWidth.length-1)]);
}
}
else
{
var oMeta = {div:
{center:
{table:
{cls: "h150 C M w600", tbody: [
{tr:
{td: {cls: "f14", content: "Keine Dateien vorhanden"}}
},
{tr: {td: {cls: "h15", img: {src: LS.img.spacer}}}}
]}
}
}
};

oTable = ObjectCreator.perform(oMeta);
}

HTML.cleanContainer(this.getContainer());

var oDivSpacer = HTML.createTagWithContent("div", '<img src="'+PATH_IMG+'spacer.gif" class="h8">');

var oDivShadow = HTML.createTag("div");
var sDivShadow = "shadow980";

if(this.getUnitsPerLine() <= 3)
{
sDivShadow = "shadow265";
}
else if(this.getUnitsPerLine() <= 6)
{
sDivShadow = "shadow700";
}

HTML.setClass(oDivShadow, sDivShadow);

this.getContainer().appendChild(oTable);
this.getContainer().appendChild(oDivSpacer);
this.getContainer().appendChild(oDivShadow);

for(var i=0;i<this._acbFunctions.length;i++)
{
this._acbFunctions[i]();
}
},

_createContainer: function(oStuffFile)
{
var idDownload = Functions.createUniqueID();
var oDownload = null;

if(oStuffFile["ccl"] > 0 || oStuffFile["uid"] == UID)
{
oDownload = { td: {
cls: "w20 h20",
a : {
href: "javascript:Functions.download("+oStuffFile["sfid"]+",'"+oStuffFile["security_match"]+"', "+oStuffFile["authentification"]+");",
img: {
id: idDownload,
src: PATH_IMG+"spacer.gif", title: "Download",
cls: "iconDownloadOut20",
onmouseover: function() { HTML.setClass($(idDownload), 'iconDownloadOver20'); },
onmouseout: function() { HTML.setClass($(idDownload), 'iconDownloadOut20'); }
}
}
}};
}
else
{
oDownload = { td: { a: {href: oStuffFile["link"], img: {src: PATH_IMG+"spacer.gif", title: oStuffFile["filename"], cls: "h20 w20"}}}};
}

var idTable = Functions.createUniqueID();
var idImage = Functions.createUniqueID();
var idCheckbox = Functions.createUniqueID();
var idCheckboxImage = Functions.createUniqueID();
var idPreviewContainer = Functions.createUniqueID();


var sTableClass = "bgImgStuffFileAlbum";

if(oStuffFile["public"] == 1)
{
sTableClass = "bgImgStuffFileAlbumBlue";
}

var oMeta = { table: {
cls: sTableClass,
id: idTable,
tbody: {
tr: [
{td : {
cls: "Body C M pB8",
center : [
{checkbox: {value: 0, id: idCheckbox, cls: "dN", value: oStuffFile["sfid"]+"-"+oStuffFile["security_match"]+"-"+oStuffFile["cacheid"]}},

{table : {
cls: "80 h60 cPointer",
background: str_replace("140x105", "80x60", oStuffFile["thumbnail"]),
tbody : [
{tr : [
{td: {colspan: 2, cls: "h20 w60", a: {href: oStuffFile["link"], img: {src: PATH_IMG+"spacer.gif", title: oStuffFile["filename"], cls: "h20 w60"}}}},
oDownload

]},
{tr : {td: {colspan: 3, cls: "h20 w80", a: {href: oStuffFile["link"], img: {src: PATH_IMG+"spacer.gif", title: oStuffFile["filename"], cls: "h20 w80"}}}}},
{tr : [
{td:
{img:
{
id: idCheckboxImage,
cls: "w20 h20",
src: PATH_IMG+"spacer.gif"
}
}
},
{td: {cls: "w40 h20", a: {href: oStuffFile["link"], img: {src: PATH_IMG+"spacer.gif", title: oStuffFile["filename"], cls: "h20 w40"}}}},
{td:
{
cls: "w20 h20",
a: {
href: "javascript:void(0);", onclick: function() { new Popup_Preview($(idPreviewContainer), Cache.lookup(oStuffFile["cacheid"]), -202, -60); },
img: {
id: idImage,
src: PATH_IMG+"spacer.gif", title: "Vorschau",
cls: "iconMagnifierOut20",
onmouseover: function() { HTML.setClass($(idImage), 'iconMagnifierOver20'); },
onmouseout: function() { HTML.setClass($(idImage), 'iconMagnifierOut20'); }
}
}
}
}
]}
]
}
}
]
}},
{td : [{cls: "FooterL", div: {position: "absolute", id: idPreviewContainer}},{cls: "FooterR"}]}
]
}
}
};

if(this._bShowCheckbox == 1)
{
this._acbFunctions[this._acbFunctions.length] = function()
{
Functions.setCheckbox($(idCheckbox), $(idCheckboxImage), $(idTable), 0, 1);
};
}

return ObjectCreator.perform(oMeta);
}
});
var ViewSelectableAlbum = Class.create();

ViewSelectableAlbum.prototype =
{
initialize: function(oContainer, uiUnitsPerLine, uiShowUnitsPerLine, oStuffSite, aReferenceImages)
{
this._oStuffSite = oStuffSite;
this._aReferenceImages = aReferenceImages;
this._oContainer = oContainer;
this._uiUnitsPerLine = uiUnitsPerLine;
this._uiShowUnitsPerSite = uiShowUnitsPerLine;
},

getUnitsPerLine: function() { return this._uiUnitsPerLine; },
getShowUnitsPerSite: function() { return this._uiShowUnitsPerSite; },

show: function(aStuffFiles)
{
var oTable;
var aWidth,uiTableWidth;


if(this.getUnitsPerLine() <= 3)
{
aWidth = new Array("w15", "w15");
uiTableWidth = "w265";
}

else if(this.getUnitsPerLine() <= 6)
{

aWidth = new Array("w15", "w10", "w10", "w10", "w10", "w10", "w15");
uiTableWidth = "w700";
}

else
{
aWidth = new Array("w15", "w19", "w20", "w20", "w20", "w20", "w20", "w20", "w19", "w15");
uiTableWidth = "w980";
}


if(aStuffFiles.length > 0)
{
oTable = HTML.createTag("table");
var oTBody = HTML.createTag("tbody");
var oTr, oTd;

oTable.appendChild(oTBody);

HTML.setClass(oTable, uiTableWidth+" psb0");

var uiLength = aStuffFiles.length;
var uiAppend = this.getUnitsPerLine()-uiLength%this.getUnitsPerLine();

if(uiAppend == this.getUnitsPerLine())
{
uiAppend = 0;
}

for(i=0;i<uiAppend;i++)
{
aStuffFiles[aStuffFiles.length] = null;
}

var uiLength = aStuffFiles.length;

for(var i=0;i<uiLength;i++)
{
uiFiller = i % this._uiUnitsPerLine;

if(uiFiller == 0)
{
oTr = HTML.createTag("tr");
oTBody.appendChild(oTr);
oTd = HTML.createTagWithContent("td", "");
HTML.setClass(oTd, aWidth[0]);
oTr.appendChild(oTd);
}

oTd = HTML.createTag("td");
oTr.appendChild(oTd);
HTML.setClass(oTd, "w88");

if(aStuffFiles[i] != null)
{
oTd.appendChild(this._createContainer(aStuffFiles[i]));
}

oTd = HTML.createTag("td");
oTr.appendChild(oTd);

HTML.setClass(oTd, aWidth[(i+1)%(aWidth.length-1)]);
}
}
else
{
var oMeta = {div:
{center:
{table:
{cls: "h150 C M w600", tbody: [
{tr:
{td: {cls: "f14", content: "Keine Dateien vorhanden"}}
},
{tr: {td: {cls: "h15", img: {src: LS.img.spacer}}}}
]}
}
}
};

oTable = ObjectCreator.perform(oMeta);
}

HTML.cleanContainer(this._oContainer, oTable);
},

_createContainer: function(oStuffFile)
{
var _this = this;
var idImage = Functions.createUniqueID();
var idPreviewPopup = Functions.createUniqueID();

var cbReferenceFunction = function()
{
AjaxFunctions.setNewPreviewImage(_this._oStuffSite, oStuffFile, _this._aReferenceImages);
};


var oMeta = { table: {
cls : "bgImgStuffFile80x60Disabled",
tbody: {
tr: [
{td : {
cls: "Body C M pB8",
center : {img: {cls: "cPointer", id: idImage, src: str_replace("140x105", "80x60", oStuffFile["thumbnail"])}, onclick: cbReferenceFunction}
}},
{td : [{cls: "FooterL", div: {position: "absolute", id: idPreviewPopup}},{cls: "FooterR"}]}
]
}
}};

return ObjectCreator.perform(oMeta);
}
};
var ViewList = Class.create(LS.view,
{
initialize: function($super, oContainer, uiUnitsPerLine, uiShowUnitsPerLine, cType, bRenderCheckbox, bExtraFields)
{
$super(oContainer);

this._cType = cType;
this._bExtraFields = 0;
this._bRenderCheckbox = 0;

this._uiUnitsPerLine = uiUnitsPerLine;
this._uiShowUnitsPerSite = uiShowUnitsPerLine;

if(bRenderCheckbox == 1)
{
this._bRenderCheckbox = 1;
}

if(bExtraFields == 1)
{
this._bExtraFields = 1;
}
},

getUnitsPerLine: function() { return this._uiUnitsPerLine; },
getShowUnitsPerSite: function() { return this._uiShowUnitsPerSite; },
getRenderCheckbox: function(){ return this._bRenderCheckbox; },

setRenderCheckbox: function(bParam){ this._bRenderCheckbox = bParam; },

show: function(aStuffFiles)
{
if(aStuffFiles.length > 0)
{
var oStuffFile = aStuffFiles[0];
var oExtraData;
var oCheckbox;
var parsedData = new Array();
var idTable = Functions.createUniqueID();
var idCheckbox = Functions.createUniqueID();

if(oStuffFile["mimetype"] == "image")
{
oExtraData = { td : { content: "Auflösung", cls:"HN w60"}};
}
else if(oStuffFile["mimetype"] == "video" || oStuffFile["mimetype"] == "audio")
{
oExtraData = { td : { content: "Spielzeit", cls:"HN w60"}};
}

if(this.getRenderCheckbox() == 1)
{
oCheckbox = { td : { cls: "HN w20 C", checkbox: {value: "", id: idCheckbox, onclick: function() { Functions.toggleAllCheckBoxes($(idCheckbox), $(idTable)); }}}};
}

for(var i=0;i<aStuffFiles.length;i++)
{
parsedData[parsedData.length] = this._createImageContainer(aStuffFiles[i], idTable);
}

var oMeta = {div: [
{table : {cls: "TableGreyHeaderWhiteContent w100p", id: idTable, tbody :
[
{ tr: [
{ td : { cls: "w15"}},
oCheckbox,
{ td : { cls: "HN w20"}},
{ td : { cls: "HN f11", content: "Dateiname"}},
{ td : { cls: "HN f11 w60", content: "Datum"}},
{ td : { cls: "HN f11 w60", content: "Dateigröße"}},
oExtraData,
{ td : { cls: "HN w20"}},
{ td : { cls: "HN w20"}},
{ td : { cls: "w15"}}
]},
parsedData
]
}},
{div: {cls: "h8", img: {src: LS.img.spacer}}}
]};
}
else
{
oMeta = {div: [
{div:
{center:
{table:
{cls: "h150 C M w600", tbody: [
{tr:
{td: {cls: "f14", content: "Keine Dateien vorhanden"}}
},
{tr: {td: {cls: "h15", img: {src: LS.img.spacer}}}}
]}
}
}
},
{div: {cls: "h8", img: {src: LS.img.spacer}}},
{div: {img: {cls: "shadow700", src: LS.img.spacer}}}
]};
}

HTML.cleanContainer(this.getContainer());

this.getContainer().appendChild(ObjectCreator.perform(oMeta));
},

_createImageContainer: function(oStuffFile, idTable)
{
var _this = this;
var oExtraData = null, oCheckbox = null, oMeta = null;
var idCheckbox = Functions.createUniqueID();
var idPreviewPopup = Functions.createUniqueID();

if(oStuffFile["mimetype"] == "image")
{
oStuffFile["real_img_width"] = oStuffFile["real_img_width"] > 0 ? oStuffFile["real_img_width"] : 0;
oStuffFile["real_img_height"] = oStuffFile["real_img_height"] > 0 ? oStuffFile["real_img_height"] : 0;

oExtraData = { td : { content: oStuffFile["real_img_width"]+"x"+oStuffFile["real_img_height"], cls: "CN"}};
}
else if(oStuffFile["mimetype"] == "video" || oStuffFile["mimetype"] == "audio")
{
oExtraData = { td : { content: Functions.parseLength(oStuffFile["duration"]), cls: "CN"}};
}

if(this.getRenderCheckbox() == 1)
{
oCheckbox = [{ td : { cls: "CF C w20", checkbox: {value: oStuffFile["sfid"]+"-"+oStuffFile["security_match"]+"-"+oStuffFile["cacheid"], id: idCheckbox, onclick: function() { Functions.resetCheckBoxWithoutValue($(idTable)); }}}},
{ td : {cls: "CN C w20", img: {src: PATH_IMG+"fileextension/"+oStuffFile["icon"]+".png"}}}];
}
else
{
oCheckbox = { td : {cls: "CN C w20", img: {src: PATH_IMG+"fileextension/"+oStuffFile["icon"]+".png"}}};
}

oMeta = { tr: [
{ td : { cls: "w15"}},
oCheckbox,
{ td : { cls: "CN f11", a: {href: oStuffFile["link"], content: Functions.stringShorter(oStuffFile["filename"]+"."+oStuffFile["extension"], 50), title: oStuffFile["filename"]+"."+oStuffFile["extension"]}}},
{ td : { cls: "CN f11", content: Functions.parseDate(oStuffFile["date_added"], LS.date.dmY)}},
{ td : { cls: "CN f11", content: Functions.parseSize(oStuffFile["filesize"])}},
oExtraData,
{ td : { cls: "CN C", div: {position: "absolute", id: idPreviewPopup}, a: {href: "javascript:void(0);", onclick: function() { new Popup_Preview($(idPreviewPopup), Cache.lookup(oStuffFile["cacheid"]), -83, -19); }, img: {src: PATH_IMG+"spacer.gif", cls: "iconMagnifierSmall", title: "Vorschau"}}}},
{ td : { cls: "CN C", a: {href: "javascript:Functions.download("+oStuffFile["sfid"]+",'"+oStuffFile["security_match"]+"', "+oStuffFile["authentification"]+");", img: { src: PATH_IMG+"spacer.gif", cls: "iconDownloadSmall", title: "Download"}}}},
{ td : { cls: "w15"}},
{}
]};

return oMeta;
}
});
var ViewComments = Class.create();

ViewComments.prototype =
{
initialize: function(oContainer, uiUnitsPerLine, cWidth, cExtraOption)
{
this.CREATE_ONLY_BY_DATA = 1;

this._cWidth = cWidth;
this._cOption = cExtraOption;
this._oContainer = oContainer;
this._uiUnitsPerLine = uiUnitsPerLine;
},

getUnitsPerLine: function(){ return this._uiUnitsPerLine; },

show: function(aCrossComments)
{
var oCrossComment, oDiv, oImg, oSpacer;
HTML.cleanContainer(this._oContainer);

for(var i=0;i<aCrossComments.length;i++)
{
oCrossComment = aCrossComments[i];

if(i > 0)
{
oImg = HTML.createTag("img");
HTML.createAttribute("src", PATH_IMG+"spacer.gif", oImg);
oDiv = HTML.createTag("div");
HTML.setClass(oDiv, "h8");
oDiv.appendChild(oImg);
this._oContainer.appendChild(oDiv);

oImg = HTML.createTag("img");
HTML.createAttribute("src", PATH_IMG+"spacer.gif", oImg);
oDiv = HTML.createTag("div");
oSpacer = HTML.createTag("div");
HTML.setClass(oDiv, "pLR15 h8");
HTML.setClass(oSpacer, "bgLightGrey");
oDiv.appendChild(oSpacer);
oSpacer.appendChild(oImg);
this._oContainer.appendChild(oDiv);

oImg = HTML.createTag("img");
HTML.createAttribute("src", PATH_IMG+"spacer.gif", oImg);
oDiv = HTML.createTag("div");
HTML.setClass(oDiv, "h1");
oDiv.appendChild(oImg);
this._oContainer.appendChild(oDiv);
}

oDiv = HTML.createTag("div");
HTML.setClass(oDiv, "pLR15");
this._oContainer.appendChild(oDiv);
oDiv.appendChild(this._createStuffSiteContainer(oCrossComment));
}

if(aCrossComments.length == 0)
{
oDiv = HTML.createTagWithContent("div", "kein Kommentar vorhanden");
HTML.setClass(oDiv, "pLR15");
this._oContainer.appendChild(oDiv);
}

oImg = HTML.createTag("img");
HTML.createAttribute("src", PATH_IMG+"spacer.gif", oImg);
oDiv = HTML.createTag("div");
HTML.setClass(oDiv, "h8");
oDiv.appendChild(oImg);
this._oContainer.appendChild(oDiv);
},

_createStuffSiteContainer: function(oComment)
{
var oMeta = {table:
{cls: "w670",tbody:
{tr: [
{td: {cls: "w50 T", a: {href: oComment["userpath"], img: {src: oComment["useravatar"],cls: "w50 h50"}}}},
{td: {cls: "w10", img: {src: LS.img.spacer}}},
{td: [
{cls: "T"},
{div: [
{span: {a: {cls: "fB",href: oComment["userpath"], content: oComment["username"]}}},
{span: {content: " hat geschrieben "+Functions.parseDateToString(oComment["date_added"], LS.date.d_dM_dmY_)}}
]},
{div: {cls: "h3", img: {src: LS.img.spacer}}},
{div: {cls: "f14", content: str_replace("\n", "<br>", oComment["content"])}}
]}
]}
}
};

return ObjectCreator.perform(oMeta);
}
};


LS.view.ContactsPassport = Class.create(LS.view,
{
initialize: function($super, oContainer, aSettings)
{
aSettings = Functions.exists(aSettings, new Object());
aSettings = Functions.keyExists("cb", aSettings, function() {});
aSettings = Functions.keyExists("filter", aSettings, null);
aSettings = Functions.keyExists("stretch", aSettings, 0);
aSettings = Functions.keyExists("close", aSettings, 0);
aSettings = Functions.keyExists("checkbox", aSettings, 1);
aSettings = Functions.keyExists("type", aSettings, DEF.VIEW_FRIENDS_SEARCH);

$super(oContainer);
this._bStretch = aSettings["stretch"];
this._bCheckbox = aSettings["checkbox"];
this._sFilter = aSettings["filter"];
this._cType = aSettings["type"];

this._acbFunctions = null;
this._oPaginatorData = null;
this._aSettings = aSettings;
},

getPaginatorData: function() { return this._oPaginatorData; },
setPaginatorData: function(oPaginatorData) { this._oPaginatorData = oPaginatorData; },

show: function(aData)
{
this._acbFunctions = new Array();
HTML.cleanContainer(this.getContainer());

if(aData.length == 0)
{
var oMeta;

if(is_null(this._sFilter) || Functions.isStandardFilter($(this._sFilter)))
{
var sText = "";

switch(this._cType)
{
case DEF.VIEW_FRIENDS_CONFIRMED:
sText = [
{span: {cls: "f14", content: "Du hast leider noch keine Freunde. Klicke auf den Tab "}},
{a: {href: "javascript:void(0);", onclick: this._aSettings["cb"], cls: "f14 fB", content: "Freunde finden"}},
{span: {cls: "f14", content: ", um Freunde und Bekannte in unserem Netzwerk zu entdecken. Du kannst ein Linkedstuff Mitglied auch über dessen Profilseite als Freund hinzufügen. Auf die Profilseite eines Mitgliedes gelangst Du durch Klick auf das Avatarbild oder den Usernamen."}}
];
break;

case DEF.VIEW_FRIENDS_DEMAND:
sText = {cls: "f14", content: "Es liegen keine Freundschaftseinladungen für Dich vor."};
break;

case DEF.VIEW_FRIENDS_REQUEST:
sText = [
{span: {cls: "f14", content: "Du hast keine offenen Freundschaftsanfragen. Klicke auf den Tab "}},
{a: {href: "javascript:void(0);", onclick: this._aSettings["cb"], cls: "f14 fB", content: "Freunde finden"}},
{span: {cls: "f14", content: ", um Freunde und Bekannte in unserem Netzwerk zu entdecken. Du kannst ein Linkedstuff Mitglied auch über dessen Profilseite als Freund hinzufügen. Auf die Profilseite eines Mitgliedes gelangst Du durch Klick auf das Avatarbild oder den Usernamen."}}
];
break;

case DEF.VIEW_FRIENDS_NOTICED:
sText = [
{span: {cls: "f14", content: "Du hast Dir keine Personen gemerkt. Klicke auf den Tab "}},
{a: {href: "javascript:void(0);", onclick: this._aSettings["cb"], cls: "f14 fB", content: "Freunde finden"}},
{span: {cls: "f14", content: ", um Freunde und Bekannte in unserem Netzwerk zu entdecken. Du kannst ein Linkedstuff Mitglied auch über dessen Profilseite als Freund hinzufügen. Auf die Profilseite eines Mitgliedes gelangst Du durch Klick auf das Avatarbild oder den Usernamen."}}
];
break;

case DEF.VIEW_FRIENDS_SEARCH:

sText = {span: [
{table:
{cls: "w670", tbody: [
{tr: [
{td: {img: {src: LS.img.spacer, cls: "find_friends_empty1"}}},
{td: {img: {src: LS.img.spacer, cls: "w20"}}},
{td: {img: {src: LS.img.spacer, cls: "find_friends_empty2"}}},
{td: {img: {src: LS.img.spacer, cls: "w20"}}},
{td: {img: {src: LS.img.spacer, cls: "find_friends_empty3"}}}
]},
{tr: {td: {colspan: 5, img: {src: LS.img.spacer, cls: "h10"}}}},
{tr: [
{td: [
{cls: "T"},
{span: {content: "&Uuml;ber das Suchfeld kannst Du nach "}},
{span: {cls: "fB", content: "Vorname"}},
{span: {content: ", "}},
{span: {cls: "fB", content: "Nachname"}},
{span: {content: ", "}},
{span: {cls: "fB", content: "Wohnort"}},
{span: {content: " und "}},
{span: {cls: "fB", content: "Usernamen"}},
{span: {content: " Deines Freundes suchen."}}
]},
{td: {img: {src: LS.img.spacer, cls: "w20"}}},
{td: [
{cls: "T"},
{span: {content: "Auf der Suchergebnisseite kannst Du eine gefundene Person als "}},
{span: {cls: "fB", content: "Freund hinzuf&uuml;gen"}},
{span: {content: ", Dir die "}},
{span: {cls: "fB", content: "Person merken"}},
{span: {content: " oder ihr eine "}},
{span: {cls: "fB", content: "Nachricht schreiben"}},
{span: {content: "."}}
]},
{td: {img: {src: LS.img.spacer, cls: "w20"}}},
{td: [
{cls: "T"},
{span: {content: "Mit einer kleinen Notiz kannst du die "}},
{span: {cls: "fB", content: "Kontaktaufnahme abschlie&szlig;en"}},
{span: {content: " oder gegebenenfalls wieder abbrechen."}}
]}
]}
]}
},
{div: {cls: "h10", img: {src: LS.img.spacer}}}
]};

break;

case DEF.VIEW_FRIENDS_NONE:
sText = {span: {cls: "f14", content: "Keine Freunde vorhanden."}};
break;
}

if(this._cType == DEF.VIEW_FRIENDS_SEARCH)
{
oMeta = sText;
}
else
{
oMeta = {div:
{center:
{table:
{cls: "h150 C M w600", tbody: [
{tr:
{td: {cls: "f14", span: sText}}
},
{tr: {td: {cls: "h15", img: {src: LS.img.spacer}}}}
]}
}
}
};
}

}
else
{
oMeta = {div:
{center:
{table:
{cls: "h150 C M w600", tbody: [
{tr:
{td: {cls: "f14", content: '<span class="fB f14 fcBlue">Keine Ergebnisse für <span class="fB f14">'+trim($(this._sFilter).value)+'</span> gefunden.</span>'}}
},
{tr: {td: {cls: "h10", img: {src: LS.img.spacer}}}}
]}
}
}
};
}

this.getContainer().appendChild(ObjectCreator.perform(oMeta));
}
else
{
for(var i=0;i<aData.length;i++)
{
this.getContainer().appendChild(this.createContainer(aData[i]));
}

for(var i=0;i<this._acbFunctions.length;i++)
{
this._acbFunctions[i]();
}
}
},

createContainer: function(oData)
{
oData = Functions.keyExists("note", oData, "");
oData = Functions.keyExists("cid", oData, 0);
oData = Functions.keyExists("contact_date_added", oData, DATE);
oData = Functions.keyExists("status", oData, -1);

var _this = this;

oData = Functions.keyExists("cacheid", oData, -1);

var idContainer = Functions.createUniqueID();
var oLinks = null;
var sStatusClass = null;

if(oData["cacheid"] == -1)
{
oData = Cache.insert(oData);
}

if(oData["uid"] != UID)
{
switch(oData["status"])
{
case 0:
oLinks = [
{tr: [
{td: {cls: "w50", rowspan: 3, a: {href: oData["link"], img: {src: oData["avatar"], cls: "w50 h50"}}}},
{td: {cls: "C", img: {src: LS.img.spacer, cls: "iconWrite12"}}},
{td: {a: {href: PATH_HTTP+"pms/new,"+oData["uid"]+","+oData["username"]+".html", content: "Nachricht schreiben"}}}
]},
{tr: [
{td: {cls: "w20 C", img: {src: LS.img.spacer, cls: "iconRemove12"}}},
{td: {a: {cls: "fcRed", href: "javascript:Contacts.remove(new Array(-1, "+oData["cacheid"]+"), '"+idContainer+"')", cls: "fcRed", content: "l&ouml;schen"}}}
]},
{tr: [
{td: {colspan: 2, content: "&nbsp;"}}
]}
];

sStatusClass = "iconFriends";
break;

case 1:
if(oData["ouid"] == UID)
{
oLinks = [
{tr: [
{td: {cls: "w50", rowspan: 3, a: {href: oData["link"], img: {src: oData["avatar"], cls: "w50 h50"}}}},
{td: {cls: "C", img: {src: LS.img.spacer, cls: "iconWrite12"}}},
{td: {a: {href: PATH_HTTP+"pms/new,"+oData["uid"]+","+oData["username"]+".html", content: "Nachricht schreiben"}}}
]},
{tr: [
{td: {cls: "w20 C", img: {src: LS.img.spacer, cls: "iconRemove12"}}},
{td: {a: {cls: "fcRed", href: "javascript:Contacts.revoke(new Array(-1, "+oData["cacheid"]+"), '"+idContainer+"')", content: "l&ouml;schen"}}}
]},
{tr: [
{td: {colspan: 2, content: "&nbsp;"}}
]}
];
}
else
{
oLinks = [
{tr: [
{td: {cls: "w50", rowspan: 3, a: {href: oData["link"], img: {src: oData["avatar"], cls: "w50 h50"}}}},
{td: {cls: "w20 C", img: {src: LS.img.spacer, cls: "iconApply12"}}},
{td: {a: {href: "javascript:Contacts.accept(new Array(-1, "+oData["cacheid"]+"), '"+idContainer+"')", content: "best&auml;tigen"}}}
]},
{tr: [
{td: {cls: "C", img: {src: LS.img.spacer, cls: "iconWrite12"}}},
{td: {a: {href: PATH_HTTP+"pms/new,"+oData["uid"]+","+oData["username"]+".html", content: "Nachricht schreiben"}}}
]},
{tr: [
{td: {cls: "w20 C", img: {src: LS.img.spacer, cls: "iconRemove12"}}},
{td: {a: {cls: "fcRed", href: "javascript:Contacts.deny(new Array(-1, "+oData["cacheid"]+"), '"+idContainer+"')", content: "ablehnen"}}}
]}
];
}

sStatusClass = "iconPending";
break;

case 2:
oLinks = [
{tr: [
{td: {cls: "w50", rowspan: 3, a: {href: oData["link"], img: {src: oData["avatar"], cls: "w50 h50"}}}},
{td: {cls: "w20 C", img: {src: LS.img.spacer, cls: "iconAccept12"}}},
{td: {a: {href: "javascript:Contacts.add(new Array(-1, "+oData["cacheid"]+"), '"+idContainer+"')", content: "als Freund hinzufügen"}}}
]},
{tr: [
{td: {cls: "C", img: {src: LS.img.spacer, cls: "iconWrite12"}}},
{td: {a: {href: PATH_HTTP+"pms/new,"+oData["uid"]+","+oData["username"]+".html", content: "Nachricht schreiben"}}}
]},
{tr: [
{td: {cls: "C", img: {src: LS.img.spacer, cls: "iconRevoke12"}}},
{td: {a: {cls: "fcRed", href: "javascript:Contacts.remove(new Array(-1, "+oData["cacheid"]+"), '"+idContainer+"')", content: "l&ouml;schen"}}}
]}
];

sStatusClass = "iconNoticed";
break;

default:
oLinks = [
{tr: [
{td: {cls: "w50", rowspan: 3, a: {href: oData["link"], img: {src: oData["avatar"], cls: "w50 h50"}}}},
{td: {cls: "w20 C", img: {src: LS.img.spacer, cls: "iconAccept12"}}},
{td: {a: {href: "javascript:Contacts.add(new Array(-1, "+oData["cacheid"]+"), '"+idContainer+"')", content: "als Freund hinzufügen"}}}
]},
{tr: [
{td: {cls: "C", img: {src: LS.img.spacer, cls: "iconNotice12"}}},
{td: {a: {href: "javascript:Contacts.notice(new Array(-1, "+oData["cacheid"]+"), '"+idContainer+"')", content: "Person merken"}}}
]},
{tr: [
{td: {cls: "C", img: {src: LS.img.spacer, cls: "iconWrite12"}}},
{td: {a: {href: PATH_HTTP+"pms/new,"+oData["uid"]+","+oData["username"]+".html", content: "Nachricht schreiben"}}}
]}
];
break;
}
}
else
{
oLinks = [
{tr: [
{td: {cls: "w50", rowspan: 3, a: {href: oData["link"], img: {src: oData["avatar"], cls: "w50 h50"}}}},
{td: {colspan: 2, content: "&nbsp;"}}
]},
{tr: [
{td: {colspan: 2, content: "&nbsp;"}}
]},
{tr: [
{td: {colspan: 2, content: "&nbsp;"}}
]}
];
}

if(UID == oData["uid"])
{
sStatusClass = "iconSelf";
}

var oNote = null;

if(oData["status"] > 0 && this._cType != DEF.VIEW_FRIENDS_NONE && this._cType != DEF.VIEW_FRIENDS_SEARCH)
{
oNote = [
{tr: {td: {cls: "h3", colspan: 3, img: {src: LS.img.spacer}}}},
{tr: {td: {cls: "h1 bgLightGrey", colspan: 3, img: {src: LS.img.spacer}}}},
{tr: {td: {cls: "h3", colspan: 3, img: {src: LS.img.spacer}}}},
{tr: {td: {colspan: 3, div: [
{div: {cls: "fcGrey h55", content: oData["note"]}},
]}}}
];
}


var idCheckbox = Functions.createUniqueID();
var idCheckboxImage = Functions.createUniqueID();
var idTable = Functions.createUniqueID();

var aClasses = new Object();
aClasses["icon"] = new Object();
aClasses["text"] = new Object();
aClasses["icon"]["image"] = (oData["count_file_images"] > 0) ? "iconImages" : "iconImagesDisabled";
aClasses["icon"]["video"] = (oData["count_file_videos"] > 0) ? "iconVideos" : "iconVideosDisabled";
aClasses["icon"]["audio"] = (oData["count_file_audios"] > 0) ? "iconAudios" : "iconAudiosDisabled";
aClasses["icon"]["application"] = (oData["count_file_files"] > 0) ? "iconFiles" : "iconFilesDisabled";
aClasses["text"]["image"] = (oData["count_file_images"] > 0) ? "" : " fcGrey";
aClasses["text"]["video"] = (oData["count_file_videos"] > 0) ? "" : " fcGrey";
aClasses["text"]["audio"] = (oData["count_file_audios"] > 0) ? "" : " fcGrey";
aClasses["text"]["application"] = (oData["count_file_files"] > 0) ? "" : " fcGrey";

var oSpacer = {td: {rowspan: 2, img: {src: LS.img.spacer, cls:"w18"}}};
var uiQuantityWidth = 30;
var oTableWidth = 200;
var oTableRealWidth = oTableWidth+28;

if(this._bStretch == 1)
{
oSpacer = null;
oTableWidth = 225;
oTableRealWidth = oTableWidth+10;
uiQuantityWidth = 35;
}

var oUsername = null;
var oBlockOut = null;


if(this._bCheckbox == 1)
{
oUsername = {div: [
{cls:"floatLeft"},
{table:
{tbody: [
{tr: [
{td: {cls: "w18", checkbox: {id: idCheckbox, cls: "dN", value: oData["cacheid"]}, img: {id: idCheckboxImage, src: LS.img.spacer, cls: "iconCheckboxOff cPointer",
onclick: function()
{
$(idCheckbox).checked = !$(idCheckbox).checked;
HTML.setClass($(idCheckboxImage), ($(idCheckbox).checked ? "iconCheckboxOn cPointer" : "iconCheckboxOff cPointer"));
HTML.setClass($(idTable), ($(idCheckbox).checked ? "p3 b2 bsSolid bcGreen" : "p4 b1SE8"));
}}}},
{td: {a: {href: oData["link"], cls: "fB f14", title: oData["username"], content: Functions.stringShorter(oData["username"], 20)}}},
{td: {cls: "w20", img: {src: LS.img.spacer, cls: sStatusClass}}}
]},

]}
},
{div: {cls: "fcGrey", content: Functions.parseUsername(oData)}}
]};
}
else
{
oUsername = {div: [
{cls:"floatLeft"},
{table:
{tbody: [
{tr: [
{td: {a: {href: oData["link"], cls: "fB f14", title: oData["username"], content: Functions.stringShorter(oData["username"], 20)}}},
{td: {cls: "w20", img: {src: LS.img.spacer, cls: sStatusClass}}}
]},

]}
},
{div: {cls: "fcGrey", content: Functions.parseUsername(oData)}}
]};
}

if(this._aSettings["close"] == 1)
{
oBlockOut = {div: {cls: "floatRight", img: {src: LS.img.spacer, cls: "iconButtonCloseFade cPointer", onmouseover: function() { HTML.setClass(this, "iconButtonClose cPointer"); }, onmouseout: function() { HTML.setClass(this, "iconButtonCloseFade cPointer"); }, onclick: function() { AjaxFunctions.blockOutUser(oData["uid"], _this.getPaginatorData()); }}}};
}

var oMeta = {div: {cls: "floatLeft w"+(oTableRealWidth), table:
{cls:"w"+(oTableWidth+10), tbody: [
{tr: [
{td: [
{div: {id: idContainer, position: "absolute"}},
{div: {id: idTable, cls:"p4 b1SE8", table:
{cls: "w"+oTableWidth, tbody: [
{tr: {td: [{colspan: 3}, oUsername, oBlockOut]}},
{tr: {td: {colspan: 3, cls: "h3", img: {src: LS.img.spacer}}}},
oLinks,
{tr: {td: {colspan: 3, cls: "h3", img: {src: LS.img.spacer}}}},
{tr: {td: {colspan: 3, table:
{tbody:
{tr: [
{td: {cls: "w20", img: {src: LS.img.spacer, cls: aClasses["icon"]["image"]}}},
{td: {cls: "w"+uiQuantityWidth+aClasses["text"]["image"], content: oData["count_file_images"]}},
{td: {cls: "w20", img: {src: LS.img.spacer, cls: aClasses["icon"]["video"]}}},
{td: {cls: "w"+uiQuantityWidth+aClasses["text"]["video"], content: oData["count_file_videos"]}},
{td: {cls: "w20", img: {src: LS.img.spacer, cls: aClasses["icon"]["audio"]}}},
{td: {cls: "w"+uiQuantityWidth+aClasses["text"]["audio"], content: oData["count_file_audios"]}},
{td: {cls: "w20", img: {src: LS.img.spacer, cls: aClasses["icon"]["application"]}}},
{td: {cls: "w"+uiQuantityWidth+aClasses["text"]["application"], content: oData["count_file_files"]}},
]}
}
}}},
oNote
]}
}}
]},
oSpacer
]},
{tr: {td: {img: {cls: "shadow"+(oTableWidth+10)+"White", src: LS.img.spacer}}}}
]}
}};

return ObjectCreator.perform(oMeta);
}
});
var ViewCollection = Class.create();

ViewCollection.prototype =
{
initialize: function(oContainer, uiUnitsPerLine)
{
this._oContainer = oContainer;
this._uiUnitsPerLine = uiUnitsPerLine;
},

getUnitsPerLine: function(){ return this._uiUnitsPerLine; },

show: function(aCollections)
{
var oTable;

if(aCollections.length > 0)
{
oTable = HTML.createTag("table");
var oTBody = HTML.createTag("tbody");
var oTr, oTd;

oTable.appendChild(oTBody);

HTML.setClass(oTable, "w100p psb0");

for(var i=0;i<aCollections.length;i++)
{
uiFiller = i % this._uiUnitsPerLine;

if(uiFiller == 0)
{
oTr = HTML.createTag("tr");
oTBody.appendChild(oTr);
oTd = HTML.createTagWithContent("td", "");
HTML.setClass(oTd, "w15");
oTr.appendChild(oTd);
}

oTd = HTML.createTag("td");
oTr.appendChild(oTd);

oTd.appendChild(this._createCollectionContainer(aCollections[i]));
}

uiFiller = this._uiUnitsPerLine - uiFiller - 1;

if(uiFiller > 0)
{
for(var i=uiFiller;i>0;i--)
{
oTd = HTML.createTag("td");
oDiv = HTML.createTag("div");

oTr.appendChild(oTd);
oTd.appendChild(oDiv);

HTML.setClass(oDiv, "w210");
}
}

oTd = HTML.createTagWithContent("td", "");
HTML.setClass(oTd, "w15");
oTr.appendChild(oTd);


}
else
{
var oMeta = {div:
{center:
{table:
{cls: "h150 C M w600", tbody: [
{tr:
{td: {cls: "f14", content: "Keine Collection vorhanden"}}
},
{tr: {td: {cls: "h15", img: {src: LS.img.spacer}}}}
]}
}
}
};

oTable = ObjectCreator.perform(oMeta);
}

HTML.cleanContainer(this._oContainer);

var oDivSpacer = HTML.createTag("div");
HTML.setClass(oDivSpacer, "h8");

var oDivShadow = HTML.createTag("div");
var sDivShadow = "shadow980";

if(this.getUnitsPerLine() <= 1)
{
sDivShadow = "shadow265";
}
else if(this.getUnitsPerLine() <= 3)
{
sDivShadow = "shadow700";
}

HTML.setClass(oDivShadow, sDivShadow);

this._oContainer.appendChild(oTable);
this._oContainer.appendChild(oDivSpacer);
this._oContainer.appendChild(oDivShadow);
},

_createCollectionContainer: function(oCollection)
{
var oTable = HTML.createTag("table");
var oTBody = HTML.createTag("tbody");

var oTrSpacerTop = HTML.createTag("tr");
var oTrHeader = HTML.createTag("tr");
var oTrBody = HTML.createTag("tr");
var oTrImages = HTML.createTag("tr");
var oTrVideos = HTML.createTag("tr");
var oTrAudios = HTML.createTag("tr");
var oTrFiles = HTML.createTag("tr");
var oTrStatus = HTML.createTag("tr");
var oTrSpacer = HTML.createTag("tr");
var oTrFooter = HTML.createTag("tr");

var oTdSpacerTop = HTML.createTag("td");
var oTdHeader = HTML.createTag("td");
var oTdBodyLeftLeft = HTML.createTag("td");
var oTdBodyLeftBody = HTML.createTag("td");
var oTdBodyLeftRight = HTML.createTag("td");
var oTdBodyRight = HTML.createTag("td");
var oTdImagesIcon = HTML.createTag("td");
var oTdImagesValue = HTML.createTagWithContent("td", oCollection["quantity_image"]);
var oTdVideosIcon = HTML.createTag("td");
var oTdVideosValue = HTML.createTagWithContent("td", oCollection["quantity_video"]);
var oTdAudiosIcon = HTML.createTag("td");
var oTdAudiosValue = HTML.createTagWithContent("td", oCollection["quantity_audio"]);
var oTdFilesIcon = HTML.createTag("td");
var oTdFilesValue = HTML.createTagWithContent("td", oCollection["quantity_application"]);
var oTdStatus = HTML.createTag("td");
var oTdSpacer = HTML.createTag("td");
var oTdFooter = HTML.createTag("td");

var aLink = HTML.createTagWithContent("a", Functions.stringShorter(oCollection["title"], 23)+"<br><br>");
var aImgLink = HTML.createTag("a");
var aImg = HTML.createTag("img");
var aImgImages = HTML.createTag("img");
var aImgVideos = HTML.createTag("img");
var aImgAudios = HTML.createTag("img");
var aImgFiles = HTML.createTag("img");
var aImgStatus = HTML.createTag("img");

oMetaImageTable = {center:
{table:
{background: oCollection["previewimage"],
tbody:
{tr:
{td: {a: {href: oCollection["link"], img: {src: PATH_IMG+"spacer.gif", cls: "w140 h105", title: oCollection["title"]}}}}
}
}
}
};

HTML.createAttribute("src", PATH_IMG+"spacer.gif", aImg);
HTML.createAttribute("src", PATH_IMG+"spacer.gif", aImgImages);
HTML.createAttribute("src", PATH_IMG+"spacer.gif", aImgVideos);
HTML.createAttribute("src", PATH_IMG+"spacer.gif", aImgAudios);
HTML.createAttribute("src", PATH_IMG+"spacer.gif", aImgFiles);
HTML.createAttribute("src", PATH_IMG+"spacer.gif", aImgStatus);
HTML.createAttribute("href", oCollection["link"], aLink);
HTML.createAttribute("href", oCollection["link"], aImgLink);
HTML.createAttribute("title", oCollection["quantity_image"]+" Bild(er)", aImgImages);
HTML.createAttribute("title", oCollection["quantity_video"]+" Video(s)", aImgVideos);
HTML.createAttribute("title", oCollection["quantity_audio"]+" Musikdateie(n)", aImgAudios);
HTML.createAttribute("title", oCollection["quantity_application"]+" Dateie(n)", aImgFiles);
HTML.createAttribute("title", oCollection["title"], aLink);
HTML.createAttribute("title", oCollection["title"], aImgLink);

HTML.createAttribute("colspan", 5, oTdHeader);
HTML.createAttribute("colspan", 3, oTdFooter);
HTML.createAttribute("rowspan", 7, oTdBodyLeftLeft);
HTML.createAttribute("rowspan", 7, oTdBodyLeftBody);
HTML.createAttribute("rowspan", 7, oTdBodyLeftRight);
HTML.createAttribute("colspan", 2, oTdBodyRight);
HTML.createAttribute("colspan", 2, oTdSpacer);
HTML.createAttribute("rowspan", 2, oTdSpacer);

HTML.setClass(oTable, "bgImgStuffSite w210 psb0");
HTML.setClass(oTdSpacerTop, "h10");
HTML.setClass(oTdHeader, "Header");
HTML.setClass(oTdBodyLeftLeft, "Left");
HTML.setClass(oTdBodyLeftBody, "Body C M");
HTML.setClass(oTdBodyLeftRight, "Right");
HTML.setClass(oTdFooter, "Footer M C f11 fcBlue");

HTML.setClass(oTdImagesIcon, "C h22 w24");
HTML.setClass(oTdVideosIcon, "C h22 w24");
HTML.setClass(oTdAudiosIcon, "C h22 w24");
HTML.setClass(oTdFilesIcon, "C h22 w24");
HTML.setClass(oTdFooter, "Footer B C f11 fcBlue");

switch(oCollection["status"])
{
case DEF.ACCESS_STATUS_PUBLIC: HTML.setClass(aImgStatus, "iconPublicSmall");HTML.createAttribute("title", "Öffentlich", aImgStatus); break;
case DEF.ACCESS_STATUS_PRIVATE: HTML.setClass(aImgStatus, "iconPrivateSmall");HTML.createAttribute("title", "Privat", aImgStatus); break;
case DEF.ACCESS_STATUS_PASSWORDED: HTML.setClass(aImgStatus, "iconPasswordedSmall");HTML.createAttribute("title", "Passwort geschützt", aImgStatus); break;
default: HTML.setClass(aImgStatus, "iconPublicSmall");HTML.createAttribute("title", "Öffentlich", aImgStatus); break;
}

if(oCollection["quantity_image"] > 0)
{
HTML.setClass(oTdImagesValue, "f11");
HTML.setClass(aImgImages, "iconImages");
}
else
{
HTML.setClass(oTdImagesValue, "f11 fcGrey");
HTML.setClass(aImgImages, "iconImagesDisabled");
}

if(oCollection["quantity_video"] > 0)
{
HTML.setClass(oTdVideosValue, "f11");
HTML.setClass(aImgVideos, "iconVideos");
}
else
{
HTML.setClass(oTdVideosValue, "f11 fcGrey");
HTML.setClass(aImgVideos, "iconVideosDisabled");
}

if(oCollection["quantity_audio"] > 0)
{
HTML.setClass(oTdAudiosValue, "f11");
HTML.setClass(aImgAudios, "iconAudios");
}
else
{
HTML.setClass(oTdAudiosValue, "f11 fcGrey");
HTML.setClass(aImgAudios, "iconAudiosDisabled");
}

if(oCollection["quantity_application"] > 0)
{
HTML.setClass(oTdFilesValue, "f11");
HTML.setClass(aImgFiles, "iconFiles");
}
else
{
HTML.setClass(oTdFilesValue, "f11 fcGrey");
HTML.setClass(aImgFiles, "iconFilesDisabled");
}

HTML.setClass(aLink, "f11");

oTable.appendChild(oTBody);
oTBody.appendChild(oTrSpacerTop);
oTBody.appendChild(oTrHeader);
oTBody.appendChild(oTrBody);
oTBody.appendChild(oTrImages);
oTBody.appendChild(oTrVideos);
oTBody.appendChild(oTrAudios);
oTBody.appendChild(oTrFiles);
oTBody.appendChild(oTrStatus);
oTBody.appendChild(oTrSpacer);
oTBody.appendChild(oTrFooter);

oTrSpacerTop.appendChild(oTdSpacerTop);
oTrHeader.appendChild(oTdHeader);
oTrBody.appendChild(oTdBodyLeftLeft);
oTrBody.appendChild(oTdBodyLeftBody);
oTrBody.appendChild(oTdBodyLeftRight);
oTrBody.appendChild(oTdBodyRight);
oTrImages.appendChild(oTdImagesIcon);
oTrImages.appendChild(oTdImagesValue);
oTrVideos.appendChild(oTdVideosIcon);
oTrVideos.appendChild(oTdVideosValue);
oTrAudios.appendChild(oTdAudiosIcon);
oTrAudios.appendChild(oTdAudiosValue);
oTrFiles.appendChild(oTdFilesIcon);
oTrFiles.appendChild(oTdFilesValue);
oTrSpacer.appendChild(oTdSpacer);
oTrFooter.appendChild(oTdFooter);

oTdHeader.appendChild(aImg);
oTdBodyLeftBody.appendChild(ObjectCreator.perform(oMetaImageTable));
oTdImagesIcon.appendChild(aImgImages);
oTdVideosIcon.appendChild(aImgVideos);
oTdAudiosIcon.appendChild(aImgAudios);
oTdFilesIcon.appendChild(aImgFiles);
oTdStatus.appendChild(aImgStatus);

oTdFooter.appendChild(aLink);


return oTable;
}
};
LS.popup = Class.create(
{
initialize: function() { },

createContentContainer: function(sTitle, bType, bCLS, fCallBack, oCreatorData, bButtons, bCloseEveryWhere, uiWidth)
{
uiWidth = Functions.exists(uiWidth, 305);
bButtons = Functions.exists(bButtons, 1);
bCloseEveryWhere = Functions.exists(bCloseEveryWhere, 1);

var oButtons = null;
var fOnMouseOver = function() { Popup.setLock(); };
var fOnMouseOut = function() { Popup.setUnlock(); };
var oDataContainer = {div: {cls: "pLR15", div: oCreatorData }};

if(bButtons == 1)
{
var sTextPositive = bType ? "Ja" : "Nein";
var sTextNegative = !bType ? "Ja" : "Nein";

var sCLSPositive = bCLS ? "buttonGreen" : "buttonRed";
var sCLSNegative = "buttonBlue";

oButtons = {div: [{cls: "pLR15"}, this._createPositiveButton(sTextPositive, sCLSPositive+" floatLeft", fCallBack), this._createNegativeButton(sTextNegative, sCLSNegative+" floatRight")]};
}
else if(bCloseEveryWhere == 1)
{
fOnMouseOver = function() { Popup.setUnlock(); };
fOnMouseOut = function() { Popup.setUnlock(); };
}
else
{
oDataContainer = {div: oCreatorData};
}

var oMeta = {div: [
{div: {cls: "pLR15", div: { cls: "w"+(uiWidth-30)+" f16 fcGreen fB", content: sTitle }}},
{div: {cls: "h8", img: {src: PATH_IMG+"spacer.gif"}}},
{div: {cls: "shadow"+uiWidth, img: {src: PATH_IMG+"spacer.gif"}}},
{div: {cls: "h3", img: {src: PATH_IMG+"spacer.gif"}}},
oDataContainer,
oButtons
]};

var oTable = {div:
{table: {
cls: "PreviewWrapper"+uiWidth,
onmouseover: fOnMouseOver,
onmouseout: fOnMouseOut,
tbody: [
{ tr: {td: {cls: "PWUH", colspan: 3}}},
{ tr: [{td: {cls: "PWCL"}}, {td: {cls: "PWCC w"+uiWidth, div: oMeta}}, {td: {cls: "PWCR"}}]},
{ tr: {td: {cls: "PWLF", colspan: 3}}}
]
}
}
};

return ObjectCreator.perform(oTable);
},

createWrapper: function(sTitle, oCreatorData, aSettings)
{
aSettings = Functions.exists(aSettings, new Object());
aSettings = Functions.keyExists("width", aSettings, 305);/* width */
aSettings = Functions.keyExists("ce", aSettings, 0);/* close everywhere */
aSettings = Functions.keyExists("bl", aSettings, null);/* button left*/
aSettings = Functions.keyExists("br", aSettings, null);/* button right */

var oButtons = new Array();
var fOnMouseOver = function() { Popup.setLock(); };
var fOnMouseOut = function() { Popup.setUnlock(); };

if(!is_null(aSettings["bl"]))
{
oButtons[oButtons.length] = this._createButton(aSettings["bl"], "floatLeft");
}

if(!is_null(aSettings["br"]))
{
oButtons[oButtons.length] = this._createButton(aSettings["br"], "floatRight");
}

if(aSettings["ce"] == 1)
{
fOnMouseOver = function() { Popup.setUnlock(); };
fOnMouseOut = function() { Popup.setUnlock(); };
}

var oMeta = {div:
{table:
{cls: "popupLayer", onmouseover: fOnMouseOver, onmouseout: fOnMouseOut, tbody: [
{ tr: [
{td: {cls: "PTL", img: {src: LS.img.spacer}}},
{td: {cls: "PT", img: {src: LS.img.spacer}}},
{td: {cls: "PTR", img: {src: LS.img.spacer}}}
]},
{ tr: [
{td: {cls: "PL", img: {src: LS.img.spacer}}},
{td: [
{cls: "PC"},
{div: {cls: "popupHeader", div: {cls: "pLR15 pT6 f16 fcGreen fB", content: sTitle }}},
{div: {cls: "h10", img: {src: LS.img.spacer}}},
{div: [{cls: "w"+aSettings["width"]}, oCreatorData]},
{div: {cls: "h10", img: {src: LS.img.spacer}}},
{div: {cls: "h40 popupFooter", div: [{cls: "pLR15 pT10"}, oButtons]}}
]},
{td: {cls: "PR", img: {src: LS.img.spacer}}}
]},
{ tr: [
{td: {cls: "PBL", img: {src: LS.img.spacer}}},
{td: {cls: "PB", img: {src: LS.img.spacer}}},
{td: {cls: "PBR", img: {src: LS.img.spacer}}}
]}
]}
}
};

return ObjectCreator.perform(oMeta);
},

_createButton: function(oData, sExtraCls)
{
oData = Functions.keyExists("title", oData, "");
oData = Functions.keyExists("cls", oData, "");
oData = Functions.keyExists("callback", oData, function () {});

return {table:
{cls: oData["cls"]+" "+sExtraCls, onclick: oData["callback"], tbody:
{tr : [
{td : {cls: "LS"}},
{td : {cls: "CS", content: oData["title"]}},
{td : {cls: "RS"}}
]}
}
};
},

_createPositiveButton: function(sText, sCLS, fCallBack)
{
var aMeta = {table:
{cls: sCLS, onclick: fCallBack, tbody:
{tr : [
{td : {cls: "LS"}},
{td : {cls: "CS", content: sText}},
{td : {cls: "RS"}}
]}
}
};

return aMeta;
},

_createNegativeButton: function(sText, sCLS)
{
var aMeta = {table: {
cls: sCLS,
onclick: function() { Popup.hide(1) },
tbody: {
tr : [
{td : {cls: "LS"}},
{td : {cls: "CS", content: sText}},
{td : {cls: "RS"}}
]
}
}
};

return aMeta;
},

_parseContact: function(aData, sText)
{
sText = Functions.exists(sText, "");

oDataContent = new Array();

for(var i=0;i<aData.length;i++)
{
oDataContent[oDataContent.length] = [{div: this.parseSingleContact(aData[i]) },
{div: {cls: "h8", img: {src: PATH_IMG+"spacer.gif"}}}];
}

var oMeta = { div: [
{div: {content: sText}},
{div: {cls: "h10", img: {src: PATH_IMG+"spacer.gif"}}},
{div: oDataContent}
]
};

return oMeta;
},

parseSingleContact: function(oUser, sFilter, oDate)
{
oDate = Functions.exists(oDate, null);
sFilter = Functions.exists(sFilter, "");
var sFullDetails = "";
var oExtra = null;

sFullDetails = oUser["firstname"]+" "+oUser["lastname"]+" ("+oUser["age"]+")";

if(trim(oUser["city"]).length > 0)
{
sFullDetails += ", "+oUser["city"];
}

sFullDetails = trim(sFullDetails);

if(sFilter.length > 0)
{
oUser["username"] = str_ireplace_paling_recursive(sFilter, "<span class=\"fcRed\">", "</span>", oUser["username"]);
sFullDetails = str_ireplace_paling_recursive(sFilter, "<span class=\"fcRed\">", "</span>", sFullDetails);
}

if(oDate != null)
{
oExtra = {div: {cls: "fcGrey", content: Functions.parseDateToString(oDate, LS.date.d_dmY_hi)}};
}

return oMeta = {table: {
cls: "w100p",
tbody: {
tr: [
{td: {cls: "w50", a: {cls: "fB", href: PATH_HTTP+"user-profile/"+oUser["uid"]+","+oUser["username"]+".html", img: {src: oUser["avatar"], cls: "w50"}}}},
{td: {cls: "w5", img: {src: PATH_IMG+"spacer.gif"}}},
{td: [
{cls: "f11"},
{a: {cls: "fB", href: PATH_HTTP+"user-profile/"+oUser["uid"]+","+oUser["username"]+".html", content: oUser["username"]}, br: {}, span:{cls: "fcGrey fN", content: sFullDetails, title: sFullDetails}},
oExtra
]}
]
}
}};
},

parseSingleFile: function(aData)
{
var oMeta = { table: {
tbody: [{tr: [
{td: {img: {src: str_replace(",140x105,", ",80x60,", aData["thumbnail"]), cls: "w60"}}},
{td: {cls: "w5", img: {src: PATH_IMG+"spacer.gif"}}},
{td: {cls: "fB fcBlue", content: Functions.stringShorter(aData["filename"]+"."+aData["fileextension"], 30)}},
]},
{tr: {td: {colspan: 3, cls: "h5", img: {src: PATH_IMG+"spacer.gif"}}}}
]}
};

return oMeta;
}
});
var Popup_DeleteFavorite = Class.create(LS.popup,
{
initialize: function(oContainer, aData, bRedirect, fCallBack)
{
this._aData = null;

aData = Functions.exists(aData, null);

if(aData != null && aData.length > 0)
{
this.fCallBack = null;

var oData = this.createData(aData, bRedirect, fCallBack);

Popup.show(this.createContentContainer("Favoriten l&ouml;schen", 1, 0, this.fCallBack, oData), oContainer, -10, -50);
}
else
{
Message.setNotice("Du hast keine Datei ausgew&auml;hlt die du aus deinen Favoriten l&ouml;schen willst.");
}
},

createData: function(aData, bRedirect, fCallBack)
{
this._aData = new Array();

var _this = this;
var sText = "Willst du folgende Favoriten wirklich löschen?";

var oMeta = new Array();
oMeta[oMeta.length] = {div: {cls: "fB", content: sText}};
oMeta[oMeta.length] = {div: {cls: "h8", img: {src: PATH_IMG+"spacer.gif"}}};

for(var i=0;i<aData.length;i++)
{
this._aData.push(aData[i]["sfid"]);

oMeta[oMeta.length] = this.parseSingleFile(aData[i]);
}

this.fCallBack = function()
{
AjaxFunctions.deleteFavorite(_this._aData.join("-"), bRedirect, fCallBack);
Popup.hide(1);
};

return oMeta;
}
});
LS.popup.Message = Class.create(LS.popup,
{
initialize: function(sTitle, sMessage, cType, aSettings)
{
sTitle = Functions.exists(sTitle, "Titel Fehlt!");
sMessage = Functions.exists(sMessage, "Nachricht fehlt!");
cType = Functions.exists(cType, null);

aSettings = Functions.exists(aSettings, new Object());

var fOnMouseOver = function() { Popup.setLock(); };
var fOnMouseOut = function() { Popup.setUnlock(); };
var oButtons = {};

switch(cType)
{
case DEF.POPUP_YESNO: oButtons = this._createYesNo(aSettings); break;
default: ;
}

var oMeta = {div: [
{div: {cls: "pLR15", div: { cls: "w275 f16 fcGreen fB", content: sTitle }}},
{div: {cls: "h8", img: {src: PATH_IMG+"spacer.gif"}}},
{div: {cls: "shadow305", img: {src: PATH_IMG+"spacer.gif"}}},
{div: {cls: "h10", img: {src: PATH_IMG+"spacer.gif"}}},
{div: {cls :"pLR15", content: sMessage}},
{div: {cls: "h15", img: {src: PATH_IMG+"spacer.gif"}}},
{div: [{cls :"pLR15"}, oButtons]}
]};

var oTable = {div:
{table:
{cls: "PreviewWrapper305", onmouseover: fOnMouseOver, onmouseout: fOnMouseOut, tbody: [
{ tr: {td: {cls: "PWUH", colspan: 3}}},
{ tr: [{td: {cls: "PWCL"}}, {td: {cls: "PWCC w305", div: oMeta}}, {td: {cls: "PWCR"}}]},
{ tr: {td: {cls: "PWLF", colspan: 3}}}
]}
}
};

Popup.center(ObjectCreator.perform(oTable));
},

_createYesNo: function(aSettings)
{
aSettings = Functions.keyExists("yes", aSettings, function() {});
aSettings = Functions.keyExists("no", aSettings, function() {});

return {table:
{cls: "w275", tbody:
{tr: [
{td: [{cls: "floatLeft"}, this._createButton("Ja", aSettings["yes"])]},
{td: [{cls: "floatRight"}, this._createButton("Nein", aSettings["no"])]}
]}
}
};
},

_createButton: function(sText, fCallBack)
{
return {table:
{cls: "buttonBlue", onclick: function() { fCallBack(); Popup.hide(1); }, tbody:
{tr : [
{td : {cls: "LS"}},
{td : {cls: "CS M fB", content: sText}},
{td : {cls: "RS"}}
]}
}
};
}
});
var Popup_DeleteFriend = Class.create(LS.popup,
{
initialize: function(oContainer, aData)
{
aData = Functions.exists(aData, null);

if(aData != null && aData.length > 0)
{
this.fCallBack = null;

var oData = this.createData(aData);

var sText = (aData.length == 1) ? "Freund l&ouml;schen" : "Freunde l&ouml;schen";
Popup.show(this.createContentContainer(sText, 1, 0, this.fCallBack, oData), oContainer, -10, -50);
}
else
{
Message.setNotice("Du hast keine Person ausgew&auml;hlt.");
}
},

createData: function(aData)
{
var oDataContent = new Array();

var sText = (aData.length == 1) ? 'Willst Du Deinen Freund wirklich l&ouml;schen?<br><span class="fcRed">Alle Freigaben werden automatisch mit gelöscht.</span>' : 'Willst Du Deine Freunde wirklich l&ouml;schen?<br><span class="fcRed">Alle Freigaben werden automatisch mit gelöscht.</span>';
var oMeta = this._parseContact(aData, sText);

this.fCallBack = function()
{
Contacts.performRemove();
Popup.hide(1);
};

return oMeta;
}
});
var Popup_DeleteStuffSite = Class.create(LS.popup,
{
initialize: function(oContainer, aData, bRedirect)
{
this._aData = null;
aData = Functions.exists(aData, null);
bRedirect = Functions.exists(bRedirect, 0);

if(aData != null && aData.length > 0)
{
this.fCallBack = null;

var oData = this.createData(aData, bRedirect);

Popup.center(this.createContentContainer("Stuffseite l&ouml;schen", 1, 0, this.fCallBack, oData), oContainer);
}
else
{
Message.setNotice("Du hast keine Stuffseite zum l&ouml;schen; ausgew&auml;hlt.");
}
},

createData: function(aData, bRedirect)
{
var _this = this;

this._aData = new Array();
var oDataContent = new Array();

for(var i=0;i<aData.length;i++)
{
var oData = aData[i];

this._aData.push(oData["ssid"]);

oDataContent[oDataContent.length] = [
{span: {content: "M&ouml;chtest Du die Stuffseite "}},
{span: {cls:"fB", content: oData["sitename"]}},
{span: {content: " | "}},
{span: {cls:"fB", content: oData["count_files"]}},
{span: {content: " Datei(en), "}},
{span: {cls:"fB", content: Functions.parseSize(oData["storage_used"])}},
{span: {content: " mit allen Inhalten wirklich l&ouml;schen?"}}
];
}

var oMeta = oDataContent;


this.fCallBack = function()
{
AjaxFunctions.deleteStuffSite(_this._aData, bRedirect);
Popup.hide(1);
};

return oMeta;
}
});
var Popup_DeleteStuffFile = Class.create(LS.popup,
{
initialize: function(oContainer, aData, bRedirect, fCallBack)
{
this._aData = null;
aData = Functions.exists(aData, null);
bRedirect = Functions.exists(bRedirect, 0);

if(aData != null && aData.length > 0)
{
this.fCallBack = null;

var oData = this.createData(aData, bRedirect, fCallBack);

Popup.show(this.createContentContainer("Datei l&ouml;schen", 1, 0, this.fCallBack, oData), oContainer, 166, -139);
}
else
{
Message.setNotice("Keine Datei ausgew&auml;hlt.");
}
},

createData: function(aData, bRedirect, fCallBack)
{
this._aData = new Array();

var _this = this;
var sText = "";

if(aData.length > 1)
{
sText = "Willst du folgende Dateien wirklich löschen?";
}
else
{
sText = "Willst du folgende Datei wirklich löschen?";
}

var oMeta = new Array();
oMeta[oMeta.length] = {div: {cls: "fB", content: sText}};
oMeta[oMeta.length] = {div: {cls: "h8", img: {src: PATH_IMG+"spacer.gif"}}};

for(var i=0;i<aData.length;i++)
{
this._aData.push(aData[i]["sfid"]);

oMeta[oMeta.length] = this.parseSingleFile(aData[i]);
}

this.fCallBack = function()
{
AjaxFunctions.deleteStuffFile(_this._aData.join("-"), bRedirect, fCallBack);
Popup.hide(1);
};

return oMeta;
}
});
var Popup_DeleteCollection = Class.create(LS.popup,
{
initialize: function(oContainer, aData, bRedirect)
{


this._aData = null;
aData = Functions.exists(aData, null);
bRedirect = Functions.exists(bRedirect, 0);

if(aData != null && aData.length > 0)
{
this.fCallBack = null;

var oData = this.createData(aData, bRedirect);

Popup.show(this.createContentContainer("Collection l&ouml;schen", 1, 0, this.fCallBack, oData), oContainer, 166, -139);
}
else
{
Message.setNotice("Du hast keine Collection zum l&ouml;schen; ausgew&auml;hlt.");
}
},

createData: function(aData, bRedirect)
{
var _this = this;

this._aData = new Array();
var oDataContent = new Array();

for(var i=0;i<aData.length;i++)
{
var oData = aData[i];

this._aData.push(oData["cid"]);

oDataContent[oDataContent.length] = [
{span: {content: "M&ouml;chtest du die Collection "}},
{span: {cls:"fB", content: oData["title"]+" "}},
{span: {content: " mit allen Verkn&uuml;pfungen wirklich l&ouml;schen?"}}
];
}

var oMeta = oDataContent;


this.fCallBack = function()
{
AjaxFunctions.deleteCollection(_this._aData.join("-"), bRedirect);
Popup.hide(1);
};

return oMeta;
}
});
var Popup_RevokeFriend = Class.create(LS.popup,
{
initialize: function(oContainer, aData)
{
aData = Functions.exists(aData, null);

if(aData != null && aData.length > 0)
{
this.fCallBack = null;

var oData = this.createData(aData);
var sText = (aData.length == 1) ? "Einladung zur&uuml;cknehmen" : "Einladungen zur&uuml;cknehmen";
Popup.show(this.createContentContainer(sText, 1, 0, this.fCallBack, oData), oContainer, -10, -50);
}
else
{
Message.setNotice("Du hast keine Person ausgew&auml;hlt.");
}
},

createData: function(aData)
{
var oDataContent = new Array();

var sText = (aData.length == 1) ? "Freundschaftsanfrage f&uuml;r folgende Person zur&uuml;cknehmen?" : "Freundschaftsanfragen f&uuml;r folgende Personen zur&uuml;cknehmen?";
var oMeta = this._parseContact(aData, sText);

this.fCallBack = function()
{
Contacts.performRevoke();
Popup.hide(1);
};

return oMeta;
}
});
var Popup_DenyFriend = Class.create(LS.popup,
{
initialize: function(oContainer, aData)
{
aData = Functions.exists(aData, null);

if(aData != null && aData.length > 0)
{
this.fCallBack = null;

var oData = this.createData(aData);
var sText = (aData.length == 1) ? "Als Freund ablehnen" : "Als Freunde ablehnen";
Popup.show(this.createContentContainer(sText, 1, 1, this.fCallBack, oData), oContainer, -10, -50);
}
else
{
Message.setNotice("Du hast keine Person ausgew&auml;hlt.");
}
},

createData: function(aData)
{
var sText = (aData.length == 1) ? "Freundschaft ablehnen?" : "Freundschaften ablehnen?";
var oMeta = this._parseContact(aData, sText);

this.fCallBack = function()
{
Contacts.performDeny();
Popup.hide(1);
};

return oMeta;
}
});
var Popup_AcceptFriend = Class.create(LS.popup,
{
initialize: function(oContainer, aData)
{
aData = Functions.exists(aData, null);

if(aData != null && aData.length > 0)
{
this.fCallBack = null;

var oData = this.createData(aData);
var sText = (aData.length == 1) ? "Als Freund best&auml;tigen" : "Als Freunde best&auml;tigen";
Popup.show(this.createContentContainer(sText, 1, 1, this.fCallBack, oData), oContainer, -10, -50);
}
else
{
Message.setNotice("Du hast keine Person ausgew&auml;hlt.");
}
},

createData: function(aData)
{
var sText = (aData.length == 1) ? "Freundschaft annehmen?" : "Freundschaften annehmen?";
var oMeta = this._parseContact(aData, sText);

this.fCallBack = function()
{
Contacts.performAccept();
Popup.hide(1);
};

return oMeta;
}
});
var Popup_AddCollection = Class.create(LS.popup,
{
initialize: function(oContainer, oSeek)
{
this.fCallBack = null;

this._idInput = Functions.createUniqueID();
this._idButtonNew = Functions.createUniqueID();
this._idButtonAdd = Functions.createUniqueID();
this._idTreeContainer = Functions.createUniqueID();
this._idTreeContainerLoader = Functions.createUniqueID();
this._idLoaderClone = Functions.createUniqueID();
this._oTree = null;
this._oTreeRoot = null;
this._uiCID = 0;
this._aID = new Array();

var aData = Functions.getAllCheckBoxValues(oSeek);

for(var i=0;i<aData.length;i++)
{
this._aID.push(aData[i].split("-")[0]);
}


if(this._aID.length == 0)
{
Message.setNotice("Keine Datei ausgew&auml;hlt.");
return 0;
}

var _this = this;

cbAfterCreation = function()
{
var oLoading = new Loading($(_this._idTreeContainerLoader), $(_this._idTreeContainer));
oLoading.load();

new Ajax.Request(PATH_HTTP+"ajax/load-collection.html", {
method: 'post',
onSuccess: function(oTransport)
{
_this._oTree = new Ext.tree.TreePanel({
el:_this._idTreeContainer,
border: false,
animate:true,
autoScroll:true,
autoHeight: true,
enableDD: false,
rootVisible: false,
containerScroll: true
});

// add a tree sorter in folder mode
new Ext.tree.TreeSorter(_this._oTree, {sortType: function(oNode)
{
var sText = oNode.text.toLowerCase();

// directories
if(oNode.id.split("-")[1] == 0)
{
return "1"+sText;
}
// stuffsites
else
{
return "2"+sText;
}
}
});

// set the root node
_this._oTreeRoot = new Ext.tree.TreeNode({id: 0});
_this._oTree.setRootNode(_this._oTreeRoot);

/**
* Listener Registrieren
*/

_this._oTree.addListener("click", function (oNode, eEventObject)
{
if(oNode.id.split("-")[1] > 0)
{
_this._uiCID = oNode.id.split("-")[1];
}
});

var oData = JSON.parse(oTransport.responseText);
var oNodes = new Object();
oNodes[0] = _this._oTreeRoot;

for(var i=0;i<oData["folder"].length;i++)
{
oNodes[oData["folder"][i]["cdid"]] = new Ext.tree.TreeNode({text: oData["folder"][i]["title"], iconCls: "folder", id: "d"+oData["folder"][i]["cdid"]+"-"+"0"});
oNodes[oData["folder"][i]["parent"]].appendChild(oNodes[oData["folder"][i]["cdid"]]);
}

for(var i=0;i<oData["sites"].length;i++)
{
oNodes[oData["sites"][i]["cdid"]].appendChild(new Ext.tree.TreeNode({text: oData["sites"][i]["title"], iconCls: "collection", id: "s"+oData["sites"][i]["cid"]+"-"+oData["sites"][i]["cid"]}));
}

Functions.hide($(_this._idLoaderClone));
_this._oTree.render();
_this._oTreeRoot.expand(false, false);

oLoading.finished();

HTML.setClass($(_this._idButtonNew), "buttonGreen");
HTML.setClass($(_this._idButtonAdd), "buttonGreen");

$(_this._idButtonNew).onclick = function() { _this.newCollection(); };
$(_this._idButtonAdd).onclick = function() { _this.addCollection(); };

},
onFailure: function(oTransport)
{
Message.setError("richtiger fehlschlag");
}
});
};

var oMeta = this.createData();

Popup.center(this.createContentContainer("zur Collection hinzufügen", 0, 0, this.fCallBack, oMeta, 0, 0, 305), oContainer, cbAfterCreation);
},

createData: function()
{
var oMeta = [
{div:
{cls: "pLR15", table:
{cls: "w275", tbody: [
{tr: {td: {colspan: 2, cls: "fB", content: "Neue Collection"}}},
{tr: {td: {colspan: 2, cls: "h3", img: {src: PATH_IMG+"spacer.gif"}}}},
{tr: [
{td: {cls: "w175", input: {id: this._idInput, cls: "w170"}}},
{td: {
div: {
cls: "floatRight",
table: {
id: this._idButtonNew,
cls: "buttonGrey",
tbody: {
tr : [
{td : {cls: "LS"}},
{td : {cls: "CS M", content: "anlegen"}},
{td : {cls: "RS"}}
]
}
}
}
}}
]}
]}
}
},
{div: {cls: "h8", img: {src: PATH_IMG+"spacer.gif"}}},
{div: {cls: "pLR10", div: {cls: "bgLightGrey w285 h1", img: {src: PATH_IMG+"spacer.gif"}}}},
{div: {cls: "h8", img: {src: PATH_IMG+"spacer.gif"}}},
{div: {cls: "pLR15", div: {cls: "w275 fB", content: "Collection auswählen"}}},
{div: {cls: "h10", img: {src: PATH_IMG+"spacer.gif"}}},
{div: {cls: "pLR15", div: [
{cls: "w275"},
{div: {id: this._idTreeContainerLoader}},
{div: {div: {id: this._idTreeContainer, div: {id: this._idLoaderClone, cls: "h200", img: {src: PATH_IMG+"spacer.gif"}}}}}
]}},
{div: {cls: "h10", img: {src: PATH_IMG+"spacer.gif"}}},
{div:
{cls: "pLR15", table:
{cls: "w275", tbody:
{tr: [
{td: {div: {
cls: "floatLeft",
table: {
id: this._idButtonAdd,
cls: "buttonGrey",
tbody: {
tr : [
{td : {cls: "LS"}},
{td : {cls: "CS M", content: "hinzuf&uuml;gen"}},
{td : {cls: "RS"}}
]
}
}
}}
},
{td: {div: {
cls: "floatRight",
table: {
cls: "buttonBlue",
onclick: function() { Popup.hide(1); },
tbody: {
tr : [
{td : {cls: "LS"}},
{td : {cls: "CS M", content: "schlie&szlig;en"}},
{td : {cls: "RS"}}
]
}
}
}}
}
]}
}
}
}
];

this.fCallBack = function() { Popup.hide(1); };

return oMeta;
},

newCollection: function()
{
var _this = this;

aData = new Array();
aData[aData.length] = "title="+$(this._idInput).value;

new Ajax.Request(PATH_HTTP+"ajax/new-collection.html", {
method: 'post',
parameters: aData.join("&"),
onSuccess: function(oTransport)
{
var oData = JSON.parse(oTransport.responseText);

if(oData["ec"] == EC.SUCCESS)
{
var oNode = new Ext.tree.TreeNode({text: oData["title"], iconCls: "collection", id: "s"+oData["cid"]+"-"+oData["cid"]});


_this._oTreeRoot.appendChild(oNode);
_this._uiCID = oData["cid"];

oNode.select();

Message.setSuccess("Collection erfolgreich angelegt.");
}
else
{
Message.setError("Anlegen der Collection ist fehlgeschlagen.");
}
},
onFailure: function(oTransport)
{
Message.setError("richtiger fehlschlag");
}
});
},

addCollection: function()
{
var _this = this;

if(this._uiCID == 0)
{
Message.setNotice("Bitte wähle vorher eine Collection aus.");
return 0;
}

aData = new Array();
aData[aData.length] = "cid="+this._uiCID;
aData[aData.length] = "sfid="+this._aID.join("-");

new Ajax.Request(PATH_HTTP+"ajax/add-collection.html", {
method: 'post',
parameters: aData.join("&"),
onSuccess: function(oTransport)
{
var oData = JSON.parse(oTransport.responseText);

if(oData["ec"] == EC.SUCCESS)
{
Message.setSuccess("Daten erfolgreich zur Collection hinzugefügt.");
Popup.hide(1);
}
else
{
Message.setError("Hinzufügen zur Collection fehlgeschlagen.");
}
},
onFailure: function(oTransport)
{
Message.setError("richtiger fehlschlag");
}
});
}
});
var Popup_AddFriend = Class.create(LS.popup,
{
initialize: function(oContainer, aData)
{
aData = Functions.exists(aData, null);

if(aData != null && aData.length > 0)
{
this.fCallBack = null;

var oData = this.createData(aData);

var sText = (aData.length == 1) ? "Als Freund hinzuf&uuml;gen" : "Als Freunde hinzuf&uuml;gen";
Popup.show(this.createWrapper(sText, oData, {bl: {title: "Ja", cls: "buttonGreen", callback: this.fCallBack}, br: {title: "Nein", cls: "buttonBlue", callback: function() { Popup.hide(1); }}}), oContainer, -10, -50);
}
else
{
Message.setNotice("Du hast keine Person ausgew&auml;hlt.");
}
},

createData: function(aData)
{
var oDataContent = new Array();

var sText = (aData.length == 1) ? "Folgende Person als Freund hinzuf&uuml;gen?" : "Folgende Personen als Freunde hinzuf&uuml;gen?";
var sTextExtra = (aData.length == 1) ? "Schreib Deinem Freund eine kurze Nachricht." : "Schreib Deinen Freunden eine kurze Nachricht.";
var idTextarea = Functions.createUniqueID();
var idMaxLength = Functions.createUniqueID();
var oUser = this._parseContact(aData, sText);

var oMeta = {div: [
{cls: "pLR15"},
oUser,
{div: {content: sTextExtra}},
{div: {cls: "h5", img: { src: PATH_IMG+"spacer.gif"}}},
{textarea: {cls :"F_TA w275 h55", id: idTextarea, onkeydown: function() { return ((140-$(idTextarea).value.length) >= 0); }, onkeyup: function() { if($(idTextarea).value.length > 140) { $(idTextarea).value = $(idTextarea).value.substr(0, 140); } $(idMaxLength).innerHTML = (140-$(idTextarea).value.length);  }}},
{div: {cls: "h5", img: { src: PATH_IMG+"spacer.gif"}}},
{div: [
{span: {content : "noch "}},
{span: {cls: "fB", content: "140", id: idMaxLength}},
{span: {content : " Zeichen verf&uuml;gbar"}}
]}
]};

this.fCallBack = function()
{
Contacts.performAdd($(idTextarea));
Popup.hide(1);
};

return oMeta;
}
});
var Popup_NoticeFriend = Class.create(LS.popup,
{
initialize: function(oContainer, aData)
{
aData = Functions.exists(aData, null);

if(aData != null && aData.length > 0)
{
this.fCallBack = null;

var sText = (aData.length == 1) ? "Person merken" : "Personen merken";
var oData = this.createData(aData);

Popup.show(this.createContentContainer(sText, 1, 1, this.fCallBack, oData), oContainer, -10, -50);
}
else
{
Message.setNotice("Du hast keine Person ausgew&auml;hlt.");
}
},

createData: function(aData)
{
var oDataContent = new Array();



var sText = (aData.length == 1) ? "Diese Person merken?" : "Diese Personen merken?";
var sTextExtra = "Diese Notiz ist nur für Dich sichtbar. Gemerkte Personen kannst Du jederzeit unter <strong>Freunde</strong> im Tab <strong>Gemerkt</strong> einsehen.";
var idTextarea = Functions.createUniqueID();
var idMaxLength = Functions.createUniqueID();
var oUser = this._parseContact(aData, sText);

var oMeta = [
oUser,
{div: {content: sTextExtra}},
{div: {cls: "h5", img: { src: PATH_IMG+"spacer.gif"}}},
{textarea: {cls :"F_TA w275 h80", id: idTextarea, onkeydown: function() { return ((140-$(idTextarea).value.length) >= 0); }, onkeyup: function() { if($(idTextarea).value.length > 140) { $(idTextarea).value = $(idTextarea).value.substr(0, 140); } $(idMaxLength).innerHTML = (140-$(idTextarea).value.length);  }}},
{div: {cls: "h5", img: { src: PATH_IMG+"spacer.gif"}}},
{div: [
{span: {content : "noch "}},
{span: {cls: "fB", content: "140", id: idMaxLength}},
{span: {content : " Zeichen verf&uuml;gbar"}}
]}
];

this.fCallBack = function()
{
Contacts.performNotice($(idTextarea));
Popup.hide(1);
};

return oMeta;
}
});
var Popup_RemovePrivateMessage = Class.create(LS.popup,
{
initialize: function(oContainer, aData)
{
this._aData = null;

aData = Functions.exists(aData, null);

if(aData != null && aData.length > 0)
{
this.fCallBack = null;

var oData = this.createData(aData);
var sText = (oData.length == 1) ? "Nachricht l&ouml;schen" : "Nachrichten l&ouml;schen";
Popup.show(this.createContentContainer(sText, 1, 0, this.fCallBack, oData), oContainer, -10, -50);
}
else
{
Message.setNotice("Du hast keine Nachricht ausgew&auml;hlt.");
}
},

createData: function(aData)
{
var _this = this;
var oMeta = new Array();
this._aData = new Array();

for(var i=0;i<aData.length;i++)
{
this._aData.push(aData[i]["pmid"]);

var sIcon = (aData[i]["pm"]["readed"] == 1) ? "iconReaded" : "iconUnread";
var sClass = (aData[i]["pm"]["readed"] == 1) ? "" : "fB";

oMeta[oMeta.length] = { table:
{tbody: [
{tr: [
{td: {img: {src: LS.img.spacer, cls: sIcon}}},
{td: {img: {src: LS.img.spacer, cls: "w5"}}},
{td: {cls: sClass, content: Functions.stringShorter(aData[i]["pm"]["subject"], 45)}}
]},
{tr: {td: {cls: "h3", colspan: 3, img: {src: LS.img.spacer}}}}
]}
};
}

this.fCallBack = function()
{
PrivateMessageSystem.performRemoveInbox(_this._aData);
Popup.hide(1);
};

return oMeta;
}
});
var Popup_HidePrivateMessage = Class.create(LS.popup,
{
initialize: function(oContainer, aData)
{
this._aData = null;

aData = Functions.exists(aData, null);

if(aData != null && aData.length > 0)
{
this.fCallBack = null;

var oData = this.createData(aData);

var sText = (oData.length == 1) ? "Nachricht l&ouml;schen" : "Nachrichten l&ouml;schen";
Popup.show(this.createContentContainer(sText, 1, 0, this.fCallBack, oData), oContainer, -10, -50);
}
else
{
Message.setNotice("Du hast keine Nachricht ausgew&auml;hlt.");
}
},

createData: function(aData)
{
var _this = this;
var oMeta = new Array();
this._aData = new Array();

for(var i=0;i<aData.length;i++)
{
this._aData.push(aData[i]["pmid"]);

var sIcon = (aData[i]["pm"]["readed"] == 1) ? "iconReaded" : "iconUnread";
var sClass = (aData[i]["pm"]["readed"] == 1) ? "" : "fB";

oMeta[oMeta.length] = { table:
{tbody: [
{tr: [
{td: {img: {src: LS.img.spacer, cls: sIcon}}},
{td: {img: {src: LS.img.spacer, cls: "w5"}}},
{td: {cls: sClass, content: Functions.stringShorter(aData[i]["pm"]["subject"], 45)}}
]},
{tr: {td: {cls: "h3", colspan: 3, img: {src: LS.img.spacer}}}}
]}
};
}

this.fCallBack = function()
{
PrivateMessageSystem.performRemoveOutbox(_this._aData);
Popup.hide(1);
};

return oMeta;
}
});
var Popup_Preview = Class.create(LS.popup,
{
initialize: function(oContainer, oData, uiWidth, uiHeight)
{
uiWidth = Functions.exists(uiWidth, 0);
uiHeight = Functions.exists(uiHeight, 0);

this.callBackOnFinished = null;

oData = Functions.exists(oData, null);

if(oData != null)
{
var oCreatedContainer = this.createWrapper("Vorschau", this.createData(oData), {width: ((oData["mimetype"] == "video" && oData["duration"] > 0) ? 700 : 305), br: {title: "schlie&szlig;en", cls: "buttonBlue", callback: function() { Popup.hide(1); }}});

oData = Functions.keyExists("img_height", oData, 199);

if(oData["mimetype"] == "video" && oData["duration"] > 0)
{
Popup.center(oCreatedContainer, oContainer, this.callBackOnFinished);
}
else
{
Popup.show(oCreatedContainer, oContainer, uiWidth, uiHeight-Math.ceil(oData["img_height"]/2), this.callBackOnFinished);
}
}
},

createData: function(oStuffFile)
{
if(oStuffFile["mimetype"] != "video" || oStuffFile["duration"] == 0)
{
oStuffFile = Functions.keyExists("sitepath", oStuffFile, "");
oStuffFile = Functions.keyExists("sitename", oStuffFile, "");

var oExtraData = null;
var oExtraStuffSite = null;
var oExtraUser = null;
var oContent = null;

if(trim(oStuffFile["sitepath"]).length > 0)
{
oExtraStuffSite = {tr : [
{td: {img: {src: PATH_IMG+"spacer.gif", cls: "iconDetailStuffsite", title: "Stuffseite "+oStuffFile["sitename"]}}},
{td: {a : {href: oStuffFile["sitepath"], content: Functions.stringShorter(oStuffFile["sitename"], 40), title: "Stuffseite "+oStuffFile["sitename"]}}}
]};
}

if(trim(oStuffFile["userpath"]).length > 0)
{
oExtraUser = {tr : [
{td: {img: {src: PATH_IMG+"spacer.gif", cls: "iconDetailUser", title: "User "+oStuffFile["username"]}}},
{td: {a : {href: oStuffFile["userpath"], content: Functions.stringShorter(oStuffFile["username"], 40), title: "User "+oStuffFile["username"]}}}
]};
}



if(oStuffFile["mimetype"] == "image")
{
oStuffFile = Functions.keyExists("real_img_width", oStuffFile, 0);
oStuffFile = Functions.keyExists("real_img_height", oStuffFile, 0);

oContent = { img: {src: str_replace(DEF.IMAGE_RES_NORMAL, DEF.IMAGE_RES_PREVIEW, oStuffFile["thumbnail"])}};
oExtraData = {tr : [
{td: {img: {src: PATH_IMG+"spacer.gif", cls: "iconDetailResolutions", title: "Auflösung "+oStuffFile["real_img_width"] + "x" + oStuffFile["real_img_height"]}}},
{td: {content: oStuffFile["real_img_width"] + "x" + oStuffFile["real_img_height"], title: "Auflösung "+oStuffFile["real_img_width"] + "x" + oStuffFile["real_img_height"]}}
]};
}
else if(oStuffFile["mimetype"] == "video" || oStuffFile["mimetype"] == "audio")
{
oStuffFile = Functions.keyExists("duration", oStuffFile, 0);

if(oStuffFile["filelink"].length > 3)
{
var idContent = Functions.createUniqueID();

oContent = {div: {id: idContent}};

var aParams = {};
var aAttributes = {};
var aFlashvars = {};
aFlashvars.skin = PATH_HTTP+"resources/flash/jwflvplayer/skin.swf";
aFlashvars.file = PATH_HTTP+"getform/xml-collection/"+oStuffFile["sfid"]+".xml";
aFlashvars.streamer = PATH_HTTP+"xmoov.php";
aFlashvars.image = oStuffFile["thumbnail"];

this.callBackOnFinished = function() { swfobject.embedSWF(PATH_HTTP+"resources/flash/jwflvplayer/player.swf", idContent, "265", "228", "9.0.0","", aFlashvars, aParams, aAttributes); };
}
else
{
oContent = { img: {src: str_replace(DEF.IMAGE_RES_NORMAL, DEF.IMAGE_RES_PREVIEW, oStuffFile["thumbnail"])}};
}

oExtraData = {tr : [
{td: {img: {src: PATH_IMG+"spacer.gif", cls: "iconDetailLength", title: "Laufzeit "+Functions.parseLength(oStuffFile["duration"])}}},
{td: {content: Functions.parseLength(oStuffFile["duration"]), title: "Laufzeit "+Functions.parseLength(oStuffFile["duration"])}}
]};
}
else
{
oContent = { img: {src: str_replace(DEF.IMAGE_RES_NORMAL, DEF.IMAGE_RES_PREVIEW, oStuffFile["thumbnail"])}};
}

var oExtraTags = new Array();

var aTags = oStuffFile["tags"].split(",");

for(var i=0;i<aTags.length;i++)
{
if(trim(aTags[i]).length > 1)
{
var oTagMeta = {table:
{cls: "floatLeft", tbody:
{tr: [
{td: {img: {src: PATH_IMG+"spacer.gif", cls: "iconTag"}}},
{td: {img: {src: PATH_IMG+"spacer.gif", cls: "w2"}}},
{td: {a: {href: PATH_HTTP+"search/"+encodeURI(trim(aTags[i]))+".html", content: str_replace(" ", "&nbsp;", trim(aTags[i]))}}},
{td: {img: {src: PATH_IMG+"spacer.gif", cls: "w5"}}}
]}
}
};

oExtraTags.push(oTagMeta);
}
}

var oMeta = {div:
{cls: "pLR15", table:
{cls: "TablePreview", tbody: [
{tr : {td: {cls: "TPC p4 C", colspan: 2, div: {cls: "w265", span: oContent}}}},
{tr : [
{td: {cls: "TPD", rowspan: 2, table:
{tbody: [
{tr: {td: {cls: "pT3 w235", colspan: 2, a: {href: oStuffFile["link"], content: Functions.stringShorter(oStuffFile["filename"], 30), title: oStuffFile["filename"]}}}},
{tr : [
{td: {cls: "w15", img: {src: PATH_IMG+"spacer.gif", cls: "iconDetailStorageSize", title: "Dateigröße "+Functions.parseSize(oStuffFile["filesize"], 2, 0)}}},
{td: {cls: "w220", content: Functions.parseSize(oStuffFile["filesize"]), title: "Dateigröße "+Functions.parseSize(oStuffFile["filesize"], 2, 0)}}
]},
{tr : [
{td: {img: {src: PATH_IMG+"spacer.gif", cls: "iconDetailDateAdded", title: "Uploaddatum "+Functions.parseDate(oStuffFile["date_added"], LS.date.dmY)}}},
{td: {content: Functions.parseDate(oStuffFile["date_added"], LS.date.dmY), title: "Uploaddatum "+Functions.parseDate(oStuffFile["date_added"], LS.date.dmY)}}
]},
oExtraData,
oExtraUser,
oExtraStuffSite,
{tr: {td: [{colspan: 2}, oExtraTags]}}
]}
}},
{td: {cls: "TPPL M C", a: {href: oStuffFile["link"], title: "zur Detailansicht", img: {src: PATH_IMG+"spacer.gif", cls: "iconPreview"}}}}
]},
{tr: {td: {div: {cls: "h50", img: {src: PATH_IMG+"spacer.gif"}}}}},
]}
}
};
}
else
{
var idContent = Functions.createUniqueID();

var aParams = {};
var aAttributes = {};
var aFlashvars = {};
aFlashvars.skin = PATH_HTTP+"resources/flash/jwflvplayer/skin.swf";
aFlashvars.file = PATH_HTTP+"getform/xml-collection/"+oStuffFile["sfid"]+".xml";
aFlashvars.streamer = PATH_HTTP+"xmoov.php";
aFlashvars.image = oStuffFile["thumbnail"];

this.callBackOnFinished = function() { swfobject.embedSWF(PATH_HTTP+"resources/flash/jwflvplayer/player.swf", idContent, "700", "628", "9.0.0","", aFlashvars, aParams, aAttributes); };

oMeta = {div: {id: idContent, img: {src: LS.img.spacer, height: 628}}};
}

return oMeta;
}
});
var Popup_StuffSitePreview = Class.create(LS.popup,
{
initialize: function(oContainer, oImg, oStuffSite, aSettings)
{
aSettings = Functions.exists(aSettings, new Array());
aSettings = Functions.keyExists("type", aSettings, DEF.STUFFSITE);
aSettings = Functions.keyExists("sessionid", aSettings, "");

this._aSettings = aSettings;
this.fCallBack = null;
this._oImg = oImg;

this._idView = Functions.createUniqueID();
this._idLoader = Functions.createUniqueID();
this._idPaginator = Functions.createUniqueID();
this._idImage = Functions.createUniqueID();
this._idStatus = Functions.createUniqueID();
this._idButton = Functions.createUniqueID();
this._idButtonContainer = Functions.createUniqueID();
this._oPaginatorData = null;

var oData = this.createData(oStuffSite);
var _this = this;

cbAfterCreation = function()
{
var oView = new ViewSelectableAlbum($(_this._idView), 6, DEF.CREATE_ONLY_BY_DATA, oStuffSite, [$(_this._idImage), oImg]);

oStuffSite = Functions.keyExists("ssid", oStuffSite, 0);
oStuffSite = Functions.keyExists("cid", oStuffSite, 0);

_this._oPaginatorData = new PaginatorData(18, "files", oView);
_this._oPaginatorData.setAjaxURL(PATH_HTTP+"ajax/loadpreview-stufffile.html");
_this._oPaginatorData.setParameter("uid", 1);
_this._oPaginatorData.setParameter("ssid", oStuffSite["ssid"]);
_this._oPaginatorData.setParameter("cid", oStuffSite["cid"]);
_this._oPaginatorData.setParameter("type", aSettings["type"]);

var oPaginator = new Paginator($(_this._idPaginator), 18, 18, _this._oPaginatorData);
oPaginator.setLoadClass(new Loading($(_this._idLoader), $(_this._idView)));
oPaginator.toSite(1);

oHandleStuffSitePreview = new HandleStuffSitePreview($(_this._idStatus), oStuffSite, [$(_this._idImage), oImg]);

var settings =
{
upload_url: PATH_HTTP+"form/stuffsite-upload.html",

button_placeholder_id : _this._idButtonContainer,
button_width: $(_this._idButton).getWidth(),
button_height: 20,
button_text: "",
button_text_style: "",
button_text_left_padding: 0,
button_text_top_padding: 0,
button_action: SWFUpload.BUTTON_ACTION.SELECT_FILES,
button_disabled: false,
button_cursor: SWFUpload.CURSOR.HAND,
button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,

post_params : { PHPSESSID : Functions.getSessionID(),
session : Functions.getSessionID(),
ssid: oStuffSite["ssid"],
cid: oStuffSite["cid"]},

file_size_limit : "5000",
file_types : "*.jpg;*.gif;*.png",
file_types_description : "JPG, GIF, PNG Bilder",
file_upload_limit : "0",

file_queue_error_handler : oHandleStuffSitePreview.fileQueueError,
file_dialog_complete_handler : oHandleStuffSitePreview.fileDialogComplete,
upload_progress_handler : oHandleStuffSitePreview.uploadProgress,
upload_error_handler : oHandleStuffSitePreview.uploadError,
upload_success_handler : oHandleStuffSitePreview.uploadSuccess,

flash_url : PATH_HTTP+"resources/flash/swfupload/swfupload.swf?r="+Functions.getRandomNumber(100000000, 999999999)
};

swfu = new SWFUpload(settings);
};

Popup.center(this.createWrapper("Vorschaubild &auml;ndern <span class=\"f16 fcBlack fB\">("+oStuffSite["sitename"]+")</span>", oData, {width: 700, br: {title: "schlie&szlig;en", cls: "buttonBlue", callback: function() { Popup.hide(1); }}}), oContainer, cbAfterCreation);
},

createData: function(oData, bRedirect)
{
var idShowName = Functions.createUniqueID();

var _this = this;

var cbImagesStuffSite = function()
{
_this._oPaginatorData.setParameter("ssid", oData["ssid"]);
_this._oPaginatorData.setParameter("type", DEF.STUFFSITE);
_this._oPaginatorData.clearData();
_this._oPaginatorData.getPaginator().toSite(1);
};

var cbImagesAll = function()
{
_this._oPaginatorData.setParameter("ssid", 0);
_this._oPaginatorData.setParameter("type", DEF.STUFFSITE);
_this._oPaginatorData.clearData();
_this._oPaginatorData.getPaginator().toSite(1);
};

var cbImagesCollectionsSingle = function()
{
_this._oPaginatorData.setParameter("cid", oData["cid"]);
_this._oPaginatorData.setParameter("type", DEF.COLLECTION);
_this._oPaginatorData.clearData();
_this._oPaginatorData.getPaginator().toSite(1);
};

var cbImagesCollectionsAll = function()
{
_this._oPaginatorData.setParameter("cid", 0);
_this._oPaginatorData.setParameter("type", DEF.COLLECTION);
_this._oPaginatorData.clearData();
_this._oPaginatorData.getPaginator().toSite(1);
};

var cbImagesFavorites = function()
{
_this._oPaginatorData.setParameter("type", DEF.FAVORITE);
_this._oPaginatorData.clearData();
_this._oPaginatorData.getPaginator().toSite(1);
};

var cbImagesMy = function()
{
_this._oPaginatorData.setParameter("ssid", 0);
_this._oPaginatorData.setParameter("type", DEF.STUFFSITE);
_this._oPaginatorData.clearData();
_this._oPaginatorData.getPaginator().toSite(1);
};

var sHeaderText = "&Auml;ndere das Vorschaubild Deiner Collection. Du kannst Dir ein  neues <strong>Bild hochladen</strong> oder Dir ein <strong>Bild aus der  aktuellen Collection anzeigen</strong> lassen. Du kannst ebenfalls ein Bild aus <strong>allen Deinen Collections</strong> oder <strong>Deinen Favoriten</strong> w&auml;hlen.";
var oTableOptions = {table:
{tbody: [
{tr:[
{td: {cls: "w20", input: {type: "radio", name: idShowName, onclick: cbImagesCollectionsSingle, checked: "checked"}}},
{td: {cls: "w5", img: {src: PATH_IMG+"spacer.gif"}}},
{td: {cls: "w200", content: "Bilder der Collection anzeigen"}},
{td: {cls: "w50", img: {src: PATH_IMG+"spacer.gif"}}},
{td: {cls: "w20", input: {type: "radio", name: idShowName, onclick: cbImagesFavorites}}},
{td: {cls: "w5", img: {src: PATH_IMG+"spacer.gif"}}},
{td: {cls: "w200",content: "Meine Favoritenbilder anzeigen"}}
]},
{tr: {td: {colspan: 3, cls: "h5", img: {src: PATH_IMG+"spacer.gif"}}}},
{tr:[
{td: {input: {type: "radio", name: idShowName, onclick: cbImagesCollectionsAll}}},
{td: {cls: "w5", img: {src: PATH_IMG+"spacer.gif"}}},
{td: {content: "Meine Collectionbilder anzeigen"}},
{td: {cls: "w50", img: {src: PATH_IMG+"spacer.gif"}}},
{td: {cls: "w20", input: {type: "radio", name: idShowName, onclick: cbImagesMy}}},
{td: {cls: "w5", img: {src: PATH_IMG+"spacer.gif"}}},
{td: {cls: "w200",content: "Meine Bilder anzeigen"}}
]}
]}
};

if(this._aSettings["type"] == DEF.STUFFSITE)
{
sHeaderText = "&Auml;ndere das Vorschaubild Deiner Stuffseite. Du kannst Dir ein neues <strong>Bild hochladen</strong> oder Dir ein <strong>Bild deiner Stuffseite anzeigen</strong> lassen. W&auml;hle die Option <strong>Alle Bilder anzeigen</strong>, wenn du Dir ein Bild aus allen deinen Stuffseiten aussuchen m&ouml;chtest.";
var oTableOptions = {table:
{tbody: [
{tr:[
{td: {cls: "w20", input: {type: "radio", name: idShowName, onclick: cbImagesStuffSite, checked: "checked"}}},
{td: {cls: "w5", img: {src: PATH_IMG+"spacer.gif"}}},
{td: {cls: "w200", content: "Bilder der Stuffseite anzeigen"}},
]},
{tr: {td: {colspan: 3, cls: "h5", img: {src: PATH_IMG+"spacer.gif"}}}},
{tr:[
{td: {input: {type: "radio", name: idShowName, onclick: cbImagesAll}}},
{td: {cls: "w5", img: {src: PATH_IMG+"spacer.gif"}}},
{td: {content: "Alle Bilder anzeigen"}},
]}
]}
};
}



var oMeta = {div:
[
{div:
{cls: "pLR15", table:
{cls: "w670", tbody:
{tr: [
{td:
[{cls: "w170"},
{table:
{cls:"bgImgStuffSiteWithoutBottom", tbody:
[
{tr: {td: {colspan: 3, cls:"Header"}}},
{tr: [
{td: {cls: "Left"}},
{td: {cls: "Body C M", img: {id: this._idImage, cls: "h105 w140", src: oData["previewimage"]}}},
{td: {cls: "Right"}}
]},
{tr: {td: {colspan: 3, cls:"Footer"}}},
]
}
}]
},
{td:[
{cls: "T"},
{span: {div: {content: sHeaderText}}},
{div: {cls: "h10", img: {src: PATH_IMG+"spacer.gif"}}},
{div: {cls: "positionAbsolute", div: {id: this._idButtonContainer}}},
{table:
{tbody: [
{tr:[
{td: {table: {
id: this._idButton,
cls: "buttonBlue",
tbody: {
tr : [
{td : {cls: "LS"}},
{td : {cls: "CS M", content: "Bild hochladen"}},
{td : {cls: "RS"}}
]
}
}}},
{td: {cls: "w10", img: {src: PATH_IMG+"spacer.gif"}}},
{td: {div: {id: this._idStatus}}}
]}
]}
},
{div: {cls: "h10", img: {src: PATH_IMG+"spacer.gif"}}},
{div: oTableOptions}
]}
]}
}
}
},
{div: {id: this._idLoader}},
{div: {id: this._idView, img: {cls:"h200", src: PATH_IMG+"spacer.gif"}}},
{div: {cls: "h10", img: {src: PATH_IMG+"spacer.gif"}}},
{div: {cls:"pLR15 h20", id: this._idPaginator}},
]
};

this.fCallBack = function() { };

return oMeta;
}
});
var Popup_ChangeLicense = Class.create(LS.popup,
{
initialize: function(oContainer, uiSFID, uiStatus, aStaten)
{
this._aIDStatus = null;
uiSFID = Functions.exists(uiSFID, null);
uiStatus = Functions.exists(uiStatus, null);

if(uiSFID != null && uiSFID >= 0 && uiStatus != null && uiStatus >= 0)
{
this.fCallBack = null;

var oData = this.createData(uiSFID, uiStatus, aStaten);

Popup.show(this.createContentContainer("Status der Datei ändern", 1, 1, this.fCallBack, oData), oContainer, -14, -90);
this.setStatus(uiStatus);
}
},

createData: function(uiSFID, uiStatus, aStaten)
{
var _this = this;
this._aIDStatus = new Array();

var oStaten = new Array();

for(var i=0;i<aStaten.length;i++)
{
this._aIDStatus[i] = Functions.createUniqueID();

if(i > 0)
{
oStaten[oStaten.length] = {tr: {td: {colspan: 3, cls: "h3", img: {src: PATH_IMG+"spacer.gif"}}}};
oStaten[oStaten.length] = {tr: {td: {colspan: 3, cls: "h1 bgLightGrey", img: {src: PATH_IMG+"spacer.gif"}}}};
oStaten[oStaten.length] = {tr: {td: {colspan: 3, cls: "h3", img: {src: PATH_IMG+"spacer.gif"}}}};
}

oStaten[oStaten.length] = this.createLicense(aStaten[i], i);
}

var oMeta = {table: {cls:"w270", tbody: oStaten}};

this.fCallBack = function()
{
StuffFileEdit.performStatusChange(uiSFID, _this._uiStatus);
Popup.hide(1);
};

return oMeta;
},

createLicense: function(oStaten, i)
{
var _this = this;

var oMeta = {tr: [
{td: {img: {id: this._aIDStatus[i], src: PATH_IMG+"spacer.gif", cls: "iconCCL"+i+"Off cPointer", onclick: function() { _this.setStatus(i);}}}},
{td: {img: {src: PATH_IMG+"spacer.gif", cls: "w5"}}},
{td: {id: this._aIDStatus[i]+"Content", content: oStaten, onclick: function() { _this.setStatus(i);}}}
]};

return oMeta;
},

setStatus: function(uiStatus)
{
for(var i=0;i<this._aIDStatus.length;i++)
{
if(uiStatus == i)
{
HTML.setClass($(this._aIDStatus[i]), "iconCCL"+i+"Over cPointer");
HTML.setClass($(this._aIDStatus[i]+"Content"), "fcBlue cPointer");
}
else
{
HTML.setClass($(this._aIDStatus[i]), "iconCCL"+i+"Off cPointer");
HTML.setClass($(this._aIDStatus[i]), "iconCCL"+i+"Off cPointer");
HTML.setClass($(this._aIDStatus[i]+"Content"), "fcBlack cPointer");
}
}

this._uiStatus = uiStatus;
}
});
LS.tree = Class.create(
{
initialize: function(uiSortWeight, bCanHaveChilds, sIdType, uiID, sTitle, aSettings)
{
aSettings = Functions.exists(aSettings, new Object());
aSettings = Functions.keyExists("visible", aSettings, 0);
aSettings = Functions.keyExists("sort", aSettings, 0);
aSettings = Functions.keyExists("onclick", aSettings, function() {});
aSettings = Functions.keyExists("ondblclick", aSettings, function() {});
aSettings = Functions.keyExists("afterMove", aSettings, function() {});

this._oParent = null;// das Elternelement
this._bCanHaveChilds = bCanHaveChilds;// besagt ob der Knoten Kinder haben kann oder nicht
this._sTitle = sTitle;// der titel des Objektes
this._uiSortWeight = uiSortWeight;// wird zum sortieren genutzt um eine feste reihenfolge der Elemente zu sichern, mehr ist stärker
this._aChilds = new Array();// die kinder des knotens (als leaf gibt es keine kinder)
this._aSettings = null;// behält die einstellungen vor für das System
this._aNodeSettings = aSettings;// behält die einstellungen vor für das System
this._oObjects = new Object();// wird im root verwendet, um alle nodes direkt zu referenzieren
this._bSelectedNode = null;// gibt den Selectierten Node an
this._oRoot = null;
this._bBuildOnce = 0;

this._idData = Functions.createUniqueID()+"|"+sIdType+"_"+uiID;
this._idWrapper = Functions.createUniqueID()+"|"+sIdType+"_"+uiID;


},

setParameter: function(sValue, mObject)
{
this._aNodeSettings[sValue] = mObject;
},

getParameter: function(sValue)
{
return this._aNodeSettings[sValue];
},

getCallBack: function(sFunction)
{
return this.getRootNode().getParameter(sFunction);
},

canSort: function()
{
return this.getRootNode().getParameter("sort");
},

getWrapper: function()
{
return this._idWrapper;
},

setSelectedNode: function(oNode)
{
if(this.getSelectedNode() != null)
{
HTML.setClass($(this.getSelectedNode().getWrapper()), "");
}
this.getRootNode()._bSelectedNode = oNode;
HTML.setClass($(oNode.getWrapper()), "bgBlue");

this.getRootNode()._aNodeSettings["onclick"](oNode);
},

getSelectedNode: function()
{
return this.getRootNode()._bSelectedNode;
},

isSelectedNode: function()
{
return (this.getSelectedNode() == this);
},

getVisible: function()
{
return this.getParameter("visible");
},

setVisible: function(bVisible)
{
return this.setParameter("visible", bVisible);
},

viewBuild: function(aSettings)
{
aSettings = Functions.exists(aSettings, new Object());
aSettings = Functions.keyExists("width", aSettings, 0);
aSettings = Functions.keyExists("container", aSettings, null);
aSettings = Functions.keyExists("init", aSettings, 0);

if(this.getRootNode()._bBuildOnce == 0 || aSettings["init"] == 0)
{
var oWidth = null;

if(aSettings["width"] > 0)
{
oWidth = {width: aSettings["width"]};
}

this._aSettings = aSettings;

HTML.cleanContainer($(this._aSettings["container"]), ObjectCreator.perform({div: [{cls: "bgWhite", overflow: "auto"}, oWidth, this._viewBuild(1)]}));

ObjectCreator.performFunctions();

this.getRootNode()._bBuildOnce = 1;
}
},

calcWidth: function(uiDepth)
{
var uiWidth = this.getRootNode()._aSettings["width"] - ((uiDepth+1) * 18) - 6;

if(uiWidth <= 0)
{
uiWidth = null;
}

return uiWidth;
},

getCanHaveChilds: function()
{
return this._bCanHaveChilds;
},

getTitle: function()
{
return this._sTitle;
},

setParent: function(oParent)
{
this._oParent = oParent;
},

getParent: function()
{
return this._oParent;
},

getChilds: function()
{
return this._aChilds;
},

setChilds: function(aChilds)
{
this._aChilds = aChilds;
},

getSortWeight: function()
{
return this._uiSortWeight;
},

addChild: function(oTree)
{
if(this.getCanHaveChilds())
{
oTree.setParent(this);
var _this = this;
var aChilds = this.getChilds();
aChilds[aChilds.length] = oTree;

oTree._oRoot = this.getRootNode();

aChilds.sort(_this.sortNodes);

this.registerNode(oTree);
this.setChilds(aChilds);
}
},

haveChilds: function()
{
return (this.getChilds().length > 0);
},

remove: function(oObject)
{
var _this = this;
var aNewChilds = new Array();
var aChilds = this.getChilds();

for(var i=0;i<aChilds.length;i++)
{
if(aChilds[i].encryptID() != oObject.encryptID())
{
aNewChilds[aNewChilds.length] = aChilds[i];
}
}

aNewChilds.sort(_this.sortNodes);

this.setChilds(aNewChilds);
},

sortNodes: function(oRefA, oRefB)
{
var uiSortWeight = oRefB.getSortWeight() - oRefA.getSortWeight();

if(uiSortWeight == 0)
{
var sTitleA = Functions.prepareStringForSort(oRefA.getTitle());
var sTitleB = Functions.prepareStringForSort(oRefB.getTitle());

return (sTitleA == sTitleB) ? 0 : (sTitleA > sTitleB) ? 1 : -1;
}

return uiSortWeight;
},

encryptID: function()
{
return this._idData
},

getID: function(sID)
{
return sID.split("|")[1].split("_")[1];
},

getType: function(sType)
{
return sType.split("|")[1].split("_")[0];
},

existsAsChild: function(sType, uiID)
{
var uiReturn = 0;

if(sType == "dir")
{
var sID = this.encryptID();

if(this.getID(sID) == uiID && this.getType(sID) == sType)
{
uiReturn = 1;
}
else if(this.getParent() != null)
{
uiReturn = this.getParent().existsAsChild(sType, uiID);
}
}

return uiReturn;
},

registerNode: function(oNode)
{
this.getRootNode()._oObjects[oNode.getType(oNode.encryptID())+"_"+oNode.getID(oNode.encryptID())] = oNode;
},

getNode: function(sType, uiID)
{
return this.getRootNode()._oObjects[sType+"_"+uiID];
},

rebuildView: function()
{
this.getRootNode().viewBuild(this.getRootNode()._aSettings);
},

getRootNode: function()
{
if(this._oRoot != null)
{
return this._oRoot;
}
else if(this.getParent() != null)
{
return this.getParent().getRootNode();
}
else
{
return this;
}
}
});
LS.tree.Node = Class.create(LS.tree,
{
initialize: function($super, uiID, sTitle, aSettings)
{
$super(1, 1, "dir", uiID, sTitle, aSettings);
},

_viewBuild: function(uiDepth)
{
var _this = this;
var idContainer = Functions.createUniqueID();
var idImage = Functions.createUniqueID();
var idDirectory = Functions.createUniqueID();
var idDragArea = this.encryptID();


var fOnClickSwitch = {};
var fOnClick = function()
{
_this.setSelectedNode(_this);
};

var sClsDir = "TreeDirClose";
var sClsSwitch = "TreeClose cPointer";
var sClsMarked = "";


if(this.haveChilds())
{
fOnClickSwitch = function()
{
_this.setVisible(Functions.toggleNode($(idContainer), [$(idImage), $(idDirectory)], [["TreeClose cPointer", "TreeOpen cPointer"], ["TreeDirClose", "TreeDirOpen"]]));
_this.getCallBack("ondblclick")(_this);
};

if(this.getVisible() == 1)
{
sClsDir = "TreeDirOpen";
sClsSwitch = "TreeOpen cPointer";
}
}

var oMetaSpacer = {};

if(uiDepth > 1)
{
oMetaSpacer = {td: {img: {src: LS.img.spacer, width: ((uiDepth-1) * 18), height: 18}}};
}

if(this.isSelectedNode())
{
sClsMarked = "bgBlue";
}

var oMeta = {table:
{id: this.getWrapper(), cls: sClsMarked, tbody:
{tr: [
oMetaSpacer,
{td: {img: {src: LS.img.spacer, cls: (this.haveChilds() ? sClsSwitch : ""), id: idImage, onclick: fOnClickSwitch, width: 18, height: 18}}},
{td: {img: {src: LS.img.spacer, cls: sClsDir, id: idDirectory, width: 18, height: 18}}},
{td: {div: {id: idDragArea, content: str_replace(" ", "&nbsp;", this.getTitle()), cls: "drag pLR3 cPointer", onclick: fOnClick, ondblclick: fOnClickSwitch, width: this.calcWidth(uiDepth)}}}
]}
}
};

var aChilds = this.getChilds();
var aData = new Array();

for(var i=0;i<aChilds.length;i++)
{
aData[aData.length] = aChilds[i]._viewBuild(uiDepth+1);
}

if(this.canSort())
{
ObjectCreator.addFunction(function()
{
new Draggable(idDragArea, {revert: true});
Droppables.add(idDragArea, {
accept: 'drag',
hoverclass: 'hovered',
onDrop: function(oDrop)
{
// prüfe ab ob die Operation erlaubt ist!
if(_this.existsAsChild(_this.getType(oDrop.id), _this.getID(oDrop.id)))
{
Debug.add("nicht erlaubt!");
}
else
{
var oRootNode = _this.getRootNode();
var oObject = oRootNode.getNode(_this.getType(oDrop.id), _this.getID(oDrop.id));
oObject.getParent().remove(oObject)
oObject.setParent(_this);

_this.addChild(oObject);
_this.rebuildView();

_this.getCallBack("afterMove")(oObject, _this);
}
}
});
});
}

return [oMeta, {div: {id: idContainer, div: aData, display: (this.getVisible() ? "" : "none")}}];
}
});
LS.tree.Leaf = Class.create(LS.tree,
{
initialize: function($super, uiID, sTitle, aSettings)
{
$super(0.5, 0, "site", uiID, sTitle, aSettings);
},

_viewBuild: function(uiDepth)
{
var _this = this;
var idDragArea = this.encryptID();
var sClsMarked = "";
var sClsSite = "TreeSitePublic";

var fOnClick = function()
{
_this.setSelectedNode(_this);
};


if(this.isSelectedNode())
{
sClsMarked = "bgBlue";
}

switch(this.getParameter("status"))
{
case DEF.ACCESS_STATUS_PUBLIC: sClsSite = "TreeSitePublic"; break;
case DEF.ACCESS_STATUS_PRIVATE: sClsSite = "TreeSitePrivate"; break;
case DEF.ACCESS_STATUS_PASSWORDED: sClsSite = "TreeSitePassworded"; break;
default: sClsSite = "TreeSitePublic"; break;
}


var oMeta = {table:
{id: this.getWrapper(), cls: sClsMarked, tbody:
{tr: [
{td: {img: {src: LS.img.spacer, width: (uiDepth-1) * 18, height: 18}}},
{td: {img: {src: LS.img.spacer, width: 18, height: 18}}},
{td: {img: {src: LS.img.spacer, cls: sClsSite, width: 18, height: 18}}},
{td: {div: {id: idDragArea, content: str_replace(" ", "&nbsp;", this.getTitle()), cls: "drag pLR3 cPointer", onclick: fOnClick, width: this.calcWidth(uiDepth)}}}
]}
}
};

if(this.canSort())
{
ObjectCreator.addFunction(function()
{
new Draggable(idDragArea, {revert: true});
});
}

return oMeta;
}
});
LS.popup.ProfileAvatar = Class.create(LS.popup,
{
initialize: function(oContainer, aSettings)
{
aSettings = Functions.exists(aSettings, new Array());

this._idButtonContainer = Functions.createUniqueID();
this._idButton = Functions.createUniqueID();
this._idStatus = Functions.createUniqueID();

var oData = this.createData(aSettings);
var _this = this;

cbAfterCreation = function()
{
oHandleProfileAvatar = new HandleProfileAvatar($(_this._idStatus), aSettings);

var settings =
{
upload_url: PATH_HTTP+"form/profileavatar-upload.html",

button_placeholder_id : _this._idButtonContainer,
button_width: $(_this._idButton).getWidth(),
button_height: 20,
button_text: "",
button_text_style: "",
button_text_left_padding: 0,
button_text_top_padding: 0,
button_action: SWFUpload.BUTTON_ACTION.SELECT_FILES,
button_disabled: false,
button_cursor: SWFUpload.CURSOR.HAND,
button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,

post_params : {PHPSESSID : Functions.getSessionID(), session : Functions.getSessionID()},

file_size_limit : "5000",
file_types : "*.jpg;*.gif;*.png",
file_types_description : "JPG, GIF, PNG Bilder",
file_upload_limit : "0",

file_queue_error_handler : oHandleProfileAvatar.fileQueueError,
file_dialog_complete_handler : oHandleProfileAvatar.fileDialogComplete,
upload_progress_handler : oHandleProfileAvatar.uploadProgress,
upload_error_handler : oHandleProfileAvatar.uploadError,
upload_success_handler : oHandleProfileAvatar.uploadSuccess,

flash_url : PATH_HTTP+"resources/flash/swfupload/swfupload.swf?r="+Functions.getRandomNumber(100000000, 999999999)
};

swfu = new SWFUpload(settings);
};

Popup.center(this.createContentContainer("Profilbild &auml;ndern", 0, 0, this.fCallBack, oData, 0, 0, 490), oContainer, cbAfterCreation);
},

createData: function(aData)
{
var _this = this;

var oMeta = {div: [
{div: {cls: "pLR15", span: [
{div: {content: "W&auml;hle eine Bilddatei (maximal 5 MB) auf Deinem Computer aus. Deine Bilddatei  wird in der maximalen Gr&ouml;&szlig;e von 235x400 Pixel dargestellt."}},
{div: {cls: "h8", img: {src: LS.img.spacer}}},
{div: {cls: "positionAbsolute", div: {id: this._idButtonContainer}}},
{div: {table:
{tbody:
{tr: [
{td : {table:
{cls: "buttonBlue", id: this._idButton, tbody:
{tr: [
{td : {cls: "LS"}},
{td : {cls: "CS M fB", content: "Profilbild ausw&auml;hlen"}},
{td : {cls: "RS"}}
]}
}
}},
{td : {cls: "w10", img: {src: LS.img.spacer}}},
{td : {div: {id: this._idStatus, content: "Bild ausw&auml;hlen..."}}}
]}
}}
},
{div: {cls: "h8", img: {src: LS.img.spacer}}},
{div: {cls: "fcGrey", content: "Durch das Hochladen einer Datei best&auml;tigst Du, dass Du das  Recht hast, dieses Bild zu ver&ouml;ffentlichen und es nicht gegen die Allgemeinen  Gesch&auml;ftsbedingungen verst&ouml;&szlig;t."}}
]}},
{div: {cls: "h8", img: {src: LS.img.spacer}}},
{div: {cls: "pLR10 h1 bgLightGrey", img: {src: LS.img.spacer}}},
{div: {cls: "h8", img: {src: LS.img.spacer}}},
{div: {cls: "pLR15", content: "Du kannst Dein Profilbild jederzeit entfernen und wieder den Standard-Avatar anzeigen lassen."}},
{div: {cls: "h8", img: {src: LS.img.spacer}}},
{div: {cls: "pLR15", table:
{cls: "buttonRed", id: this._idButton, onclick: function() { AjaxFunctions.resetProfileAvatar(aData); }, tbody:
{tr: [
{td : {cls: "LS"}},
{td : {cls: "CS M fB", content: "Profilbild zur&uuml;cksetzten"}},
{td : {cls: "RS"}}
]}
}
}},
{div: {cls: "h8", img: {src: LS.img.spacer}}},
{div: {cls: "shadow490", img: {src: LS.img.spacer}}},
{div: {cls: "h5", img: {src: LS.img.spacer}}},
{div: [
{cls: "pLR15"},
{div: {cls: "floatRight", table:
{cls: "floatRight buttonBlue", onclick: function() { Popup.hide(1) }, tbody:
{tr : [
{td : {cls: "LS"}},
{td : {cls: "CS M fB", content: "schlie&szlig;en"}},
{td : {cls: "RS"}}
]}
}
}}
]}
]};

return oMeta;
}
});
LS.popup.StuffSite = Class.create(LS.popup,
{
initialize: function(oContainer, oStuffSite, aSettings)
{
aSettings = Functions.exists(aSettings, new Array());
aSettings = Functions.keyExists("type", aSettings, DEF.STUFFSITE);

this._idOption = Functions.createUniqueID();

var oData = this.createData(oStuffSite);
var _this = this;

var cbFunctionOnFinished = function()
{
if(oStuffSite["uid"] == UID)
{
if(aSettings["type"] == DEF.STUFFSITE)
{
new OptionMenu($(_this._idOption), {fields: {pc: oContainer, d: oStuffSite}, items: ["stuffsite_edit", "stuffsite_manage", "stuffsite_delete"]});
}
else if(aSettings["type"] == DEF.COLLECTION)
{
new OptionMenu($(_this._idOption), {fields: {pc: oContainer, d: oStuffSite}, items: ["collection_edit", "collection_manage", "collection_delete"]});
}
}
};

var sSitename = oStuffSite["sitename"];

if(aSettings["type"] == DEF.STUFFSITE)
{
sSitename = '<table><tr><td class="f16 fcGreen fB">'+oStuffSite["sitename"]+'</td><td class="f11 fcBlack fB">&nbsp;('+Functions.parseSize(oStuffSite["storage_used"])+')</td></tr></table>';
}

Popup.center(this.createWrapper(sSitename, oData, {width: 490, br: {title: "schlie&szlig;en", cls: "buttonBlue", callback: function() { Popup.hide(1); }}}), oContainer, cbFunctionOnFinished);
},

createData: function(oData, bRedirect)
{
var _this = this;

var oCls = new Object();
oCls["icon_image"] = (oData["count_file_images"] > 0) ? "iconImagesBig" : "iconImagesBigDisabled";
oCls["text_image"] = (oData["count_file_images"] > 0) ? "f11" : "f11 fcGrey";
oCls["icon_video"] = (oData["count_file_videos"] > 0) ? "iconVideosBig" : "iconVideosBigDisabled";
oCls["text_video"] = (oData["count_file_videos"] > 0) ? "f11" : "f11 fcGrey";
oCls["icon_audio"] = (oData["count_file_audios"] > 0) ? "iconAudiosBig" : "iconAudiosBigDisabled";
oCls["text_audio"] = (oData["count_file_audios"] > 0) ? "f11" : "f11 fcGrey";
oCls["icon_application"] = (oData["count_file_files"] > 0) ? "iconFilesBig" : "iconFilesBigDisabled";
oCls["text_application"] = (oData["count_file_files"] > 0) ? "f11" : "f11 fcGrey";
oCls["rating"] = (oData["count_rating_users"] > 0) ? Math.ceil(oData["count_rating_points"] / oData["count_rating_users"]) : 0;

var oStatus = {td: {colspan: 4, img: {src: LS.img.spacer}}};

if(oData["status"] != -1)
{
switch(oData["status"])
{
case DEF.ACCESS_STATUS_PUBLIC: oCls["icon_status"] = "iconPublic"; oCls["text_status"] = "Öffentlich"; break;
case DEF.ACCESS_STATUS_PASSWORDED: oCls["icon_status"] = "iconPassworded"; oCls["text_status"] = "Passwort geschützt"; break;
case DEF.ACCESS_STATUS_PRIVATE: oCls["icon_status"] = "iconPrivate"; oCls["text_status"] = "Privat"; break;
}

oStatus = [{td: {img: {cls: oCls["icon_status"], src: LS.img.spacer}}}, {td: {colspan: 3, content: oCls["text_status"]}}];
}

var oExtraTags = null;
var oTmpTags = new Array();
var aTags = oData["tags"].split(",");

for(var i=0;i<aTags.length;i++)
{
if(trim(aTags[i]).length > 1)
{
var oTagMeta = {table:
{cls: "floatLeft", tbody:
{tr: [
{td: {img: {src: PATH_IMG+"spacer.gif", cls: "iconTag"}}},
{td: {img: {src: PATH_IMG+"spacer.gif", cls: "w2"}}},
{td: {a: {href: PATH_HTTP+"search/"+encodeURI(trim(aTags[i]))+".html", content: str_replace(" ", "&nbsp;", trim(aTags[i]))}}},
{td: {img: {src: PATH_IMG+"spacer.gif", cls: "w5"}}}
]}
}
};

oTmpTags.push(oTagMeta);
}
}

if(oTmpTags.length > 0)
{
oExtraTags = [
{table: {tbody: {tr: {td: oTmpTags}}}},
{div: {cls : "h8", img: {src: LS.img.spacer}}}
];
}

var oMeta = {div: [
{div: [
{cls: "pLR15"},
{table:
{cls: "w460", tbody: [
{tr: [
{td: [
{cls: "w170", rowspan: 6},
{table:
{cls:"bgImgStuffSiteWithoutBottom", tbody: [
{tr: {td: {colspan: 3, cls:"Header"}}},
{tr: [
{td: {cls: "Left"}},
{td: {cls: "Body C M", a: {href: oData["link"], img: {cls: "h105 w140", src: oData["previewimage"]}}}},
{td: {cls: "Right"}}
]},
{tr: {td: {colspan: 3, cls:"Footer"}}},
]
}
}
]},
{td: {cls: "h5", colspan: 9, img: {src: LS.img.spacer}}},
]},
{tr: [
{td: {cls: "h28", img: {src: LS.img.spacer, cls: oCls["icon_image"]}}},
{td: {span: {cls: oCls["text_image"], content: oData["count_file_images"]}}},
{td: {cls: "w7", rowspan: 4, img: {src: LS.img.spacer}}},
{td: {cls: "bgLightGrey w1", rowspan: 4, img: {src: LS.img.spacer}}},
{td: {cls: "w7", rowspan: 4, img: {src: LS.img.spacer}}},
{td: {colspan: 4, table:
{tbody:
{tr: [
{td: {img: {cls: "StarsSmall"+oCls["rating"], src: LS.img.spacer}}},
{td: {content: "("+oData["count_rating_users"]+")"}}
]}
}
}}
]},
{tr: [
{td: {cls: "h28 w30", img: {src: LS.img.spacer, cls: oCls["icon_video"]}}},
{td: {cls: "w62", span: {cls: oCls["text_video"], content: oData["count_file_videos"]}}},
{td: {cls: "w30", img: {cls: "iconViewsBig", src: LS.img.spacer}}},
{td: {cls: "w61", content: oData["count_view"]}},
{td: {cls: "w30", img: {cls: "iconDownloadsBig", src: LS.img.spacer}}},
{td: {cls: "w61", content: oData["count_download"]}},
]},
{tr: [
{td: {cls: "h28", img: {src: LS.img.spacer, cls: oCls["icon_audio"]}}},
{td: {span: {cls: oCls["text_audio"], content: oData["count_file_audios"]}}},
{td: {img: {cls: "iconDateBig", src: LS.img.spacer}}},
{td: {content: Functions.parseDateToString(oData["date_added"], LS.date.dmY)}},
{td: {img: {cls: "iconCommentsBig", src: LS.img.spacer}}},
{td: {content: oData["count_comment"]}}
]},
{tr: [
{td: {cls: "h28", img: {src: LS.img.spacer, cls: oCls["icon_application"]}}},
{td: {span: {cls: oCls["text_application"], content: oData["count_file_files"]}}},
oStatus
]},
{tr: {td: {colspan: 9, img: {src: LS.img.spacer}}}}
]}
},
oExtraTags,
{div: {content: Functions.parseBBCode(oData["description"])}}
]},
{div: {cls: "h10", img: {src: LS.img.spacer}}},
{div: {cls: "pLR15", id: this._idOption}}
]};

return oMeta;
}
});
var MenuStuffSite = Class.create();

MenuStuffSite.prototype =
{

initialize: function()
{
this.ID_CONTAINER_MENU = "idHMMCSS";
this.ID_CONTAINER_TREE = "idHMMCSST";

this._oRoot = null;
this._oTree = null;
this._uiDuration = 0.5;
this._bLock = 0;
},

setRootNode: function(oRoot) { this._oRoot = oRoot; },
setLock: function(){ this._bLock = 1; },
setUnlock: function(){ this._bLock = 0; },

getRootNode: function() { return this._oRoot; },

isUnlocked: function(){ return (this._bLock == 1) ? 0 : 1; },

initFolder: function()
{
var _this = this;

this._oTree = new Ext.tree.TreePanel({
el:_this.ID_CONTAINER_TREE,
border: false,
animate:true,
autoScroll:true,
autoHeight: true,
enableDD: false,
rootVisible: false,
containerScroll: true
});

// add a tree sorter in folder mode
new Ext.tree.TreeSorter(this._oTree, {sortType: function(oNode)
{
var sText = oNode.text.toLowerCase();

// directories
if(oNode.id.split(",")[0] == "md")
{
return "1"+sText;
}
// stuffsites
else
{
return "2"+sText;
}
}
});

// set the root node
var root = new Ext.tree.TreeNode({id:'superNodeMenu'});
this._oTree.setRootNode(root);
this.setRootNode(root);

/**
* Listener Registrieren
*/
this._oTree.addListener("click", function (oNode, eEventObject)
{
aData = oNode.id.split(",");

if(aData[0] == "mss")
{
Functions.toStuffSite(aData[1], aData[2], aData[3]);
}
});

// render the tree
this._oTree.render();
root.expand(false, false);

},

hideMenu: function()
{
if($(this.ID_CONTAINER_MENU).style.display == "")
{
EventRegistry.Fade($(this.ID_CONTAINER_MENU), {duration: this._uiDuration});
}
},

toggleMenu: function()
{
EventRegistry.FadeAppearToggle($(this.ID_CONTAINER_MENU), this._uiDuration);
}
};
var Menu = Class.create();

Menu.prototype =
{

initialize: function()
{
this._oItems = new Object();
this._sClassNone = "popupNone";
this._sClassBlack = "popupBlack";

this._uiTimer = 20;
},

registerItem: function(uiID, oMain, oSub)
{
this._oItems[uiID] = new Object();
this._oItems[uiID]["main"] = oMain;
this._oItems[uiID]["sub"] = oSub;
},

hide: function(uiID)
{
var _this = this;

TimerAction.start("MenuMain"+uiID, 'hide', {object: this._oItems[uiID]["sub"]}, this._uiTimer);
TimerAction.start("MenuSub"+uiID, 'callback', function() { HTML.setClass(_this._oItems[uiID]["main"], _this._sClassNone); }, this._uiTimer);
},

show: function(uiID)
{
for(var uiTmpID in this._oItems)
{
var oItem = this._oItems[uiTmpID];

if(typeof oItem == "object")
{
TimerAction.stop("MenuMain"+uiTmpID);
TimerAction.stop("MenuSub"+uiTmpID);

if(uiTmpID == uiID)
{
HTML.setClass(oItem["main"], this._sClassBlack);
Functions.show(oItem["sub"]);
}
else
{
HTML.setClass(oItem["main"], this._sClassNone);
Functions.hide(oItem["sub"]);
}
}
}
}
};
var TabBar = Class.create();

TabBar.prototype =
{

initialize: function(oTabBar)
{
this._oTabBar = oTabBar;
this._aTabs = new Array();
this._oLastShowedContainer = null;


var aChildNodes = this._oTabBar.getElementsByTagName("td");
aChildNodes[i];


for(var i=0;i<aChildNodes.length;i+=2)
{
var oData = new Object();

oData["object"] = aChildNodes[i];
oData["cls"] = (HTML.getClass(aChildNodes[i]) == "TB") ? "TB" : "TG";

this._aTabs.push(oData);
}
},

activate: function(oTab, oChangeContainer)
{
for(var i=0;i<this._aTabs.length;i++)
{
var sClass = ((this._aTabs[i]["object"] == oTab) ? "TW" : this._aTabs[i]["cls"]);

HTML.setClass(this._aTabs[i]["object"], sClass);
this.setClassToAllSubNodes(this._aTabs[i]["object"], sClass);
}

if(oChangeContainer)
{
this.changeContainer(oChangeContainer);
}
},

changeContainer: function(oChangeContainer)
{
if(this._oLastShowedContainer != null)
{
this._oLastShowedContainer.style.display = 'none';
}

this._oLastShowedContainer = oChangeContainer;
this._oLastShowedContainer.style.display = 'block';
},

setClassToAllSubNodes: function(oNode, sClass)
{
for(var i=0;i<oNode.childNodes.length;i++)
{
if(typeof oNode.childNodes[i] == "object" && oNode.childNodes[i].style != null)
{
this.setClassToAllSubNodes(oNode.childNodes[i], sClass);
HTML.setClass(oNode.childNodes[i], sClass);
}
}
}
};
var InlineTabBar = Class.create();

InlineTabBar.prototype =
{

initialize: function(oTabBar)
{
this._oTabBar = oTabBar;
this._aTabs = new Array();
this._oLastShowedContainer = null;
},

activate: function(oTab, oChangeContainer)
{
var aChildNodes = this._oTabBar.getElementsByTagName("td");
var oChildNode;
var iStep = 2;

for(var i=1;i<aChildNodes.length-1;i+=iStep)
{
oChildNode = aChildNodes[i];

if(oChildNode == oTab)
{
HTML.setClass(oChildNode, "MA C");
}
else
{
HTML.setClass(oChildNode, "MO C");
}
}

if(oChangeContainer)
{
this.changeContainer(oChangeContainer);
}
},

changeContainer: function(oChangeContainer)
{
if(this._oLastShowedContainer != null)
{
this._oLastShowedContainer.style.display = 'none';
}

this._oLastShowedContainer = oChangeContainer;
this._oLastShowedContainer.style.display = 'block';
}
};
LS.modify = {};
var Loading = Class.create();

Loading.prototype =
{
initialize: function (oContainerLoading, oContainer)
{
oContainerLoading = Functions.exists(oContainerLoading, null);
oContainer = Functions.exists(oContainer, null);

this._oContainer = oContainer;
this._oContainerLoading = oContainerLoading;
},

load: function()
{
HTML.cleanContainer(this._oContainerLoading, this.createContainer());
},

finished: function()
{
HTML.cleanContainer(this._oContainerLoading);
},

createContainer: function()
{
var oMeta = {table:
{height: (this._oContainer.getHeight()-10), width: this._oContainer.getWidth(), cls: "opacityWhite80", position: "absolute", tbody:
{tr:
{td:
{cls: "M C", div: {center:
{table: {cls: "w250 h80 bgWhite b1 bsSolid bcLightGrey", tbody:
{tr:
{td: {cls: "M C", div:
[
{div: {img: {src: PATH_IMG+"misc/loadingbig.gif"}}},
{div: {cls: "h5", img: {src: PATH_IMG+"spacer.gif"}}},
{div: {content: "Daten werden geladen..."}}
]
}}
}
}}
}}
}
}
}
};

return ObjectCreator.perform(oMeta);
}
};
var SelectMenu = Class.create();

SelectMenu.prototype =
{
initialize: function (oContainer, sLabel, oCallBackClass, oCallBackMethod, sStyleClass, bUseSetImage, sClassName)
{
EventRegistry.addOnClickEvent(this, "hide");

this.CLASS_ASC = "iconSortArrowDown";
this.CLASS_DESC = "iconSortArrowUp";

this._oContainer = oContainer;
this._oShowContainer = null;
this._oSelectContainer = null;
this._oSelectItemContainer = null;
this._oCallBackClass = oCallBackClass;
this._oCallBackMethod = oCallBackMethod;
this._sLabel = sLabel;
this._sClassName = sClassName;
this._sStyleClass = sStyleClass;
this._bUseImage = 0;
this._bUseSetImage = bUseSetImage;
this._bUseSorter = 0;
this._aEntry = new Array();
this._uiDuration = 0.5;
this._uiSelectedIndex = 0;
this._bSaveSettings = 1;

this.createContainer();
this.createSelectItems();
},

setLabel: function(sParam){ this._sLabel = sParam; },
setUseImage: function(bParam){ this._bUseImage = bParam; },
setUseSetImage: function(bParam){ this._bUseSetImage = bParam; },
setUseSorter: function(bParam){ this._bUseSorter = bParam; },
setShowContainer: function(oParam){ this._oShowContainer = oParam; },
setSelectContainer: function(oParam){ this._oSelectContainer = oParam; },
setSelectItemContainer: function(oParam){ this._oSelectItemContainer = oParam; },
setCallBackClass: function(oParam){ this._oCallBackClass = oParam; },
setCallBackMethod: function(oParam){ this._oCallBackMethod = oParam; },
setStyleClass: function(sParam){ this._sStyleClass = sParam; },

getLabel: function(){ return this._sLabel; },
getUseImage: function(){ return this._bUseImage; },
getUseSetImage: function(){ return this._bUseSetImage; },
getUseSorter: function(){ return this._bUseSorter; },
getDuration: function(){ return this._uiDuration; },
getClassName: function(){ return this._sClassName; },
getShowContainer: function(){ return this._oShowContainer; },
getSelectContainer: function(){ return this._oSelectContainer; },
getSelectItemContainer: function(){ return this._oSelectItemContainer; },
getSelectedIndex: function(){ return this._uiSelectedIndex; },
getCallBackClass: function(){ return this._oCallBackClass; },
getCallBackMethod: function(){ return this._oCallBackMethod; },
getStyleClass: function(){ return this._sStyleClass; },

setNoSave: function(){ this._bSaveSettings = 0; },

addItem: function(sValue, sImgClass, sShowValue, sSetValue, bSelect, cbFunction, sSaveValue)
{
if(sImgClass != null)
{
this.setUseImage(1);
}

var oSelectMenuItem = new SelectMenuItem(sValue, sImgClass, sShowValue, sSetValue, bSelect, cbFunction, sSaveValue);

this._aEntry[this._aEntry.length] = oSelectMenuItem;

return oSelectMenuItem;
},

createContainer: function()
{
var oTable = HTML.createTag("table");
var oTBody = HTML.createTag("tbody");
var oTr = HTML.createTag("tr");
var oTdLabel = HTML.createTagWithContent("td", this.getLabel());
var oTdShow = HTML.createTag("td");
var oTdSelect = HTML.createTag("td");

var oDivContainer = HTML.createTag("div");
var oShowContainer = HTML.createTag("div");
var oSelectContainer = HTML.createTag("div");
var oSelectItemContainer = HTML.createTag("div");



var oLink = HTML.createTag("a");
var oImg = HTML.createTag("img");

var _this = this;

oTdShow.onclick = function() { _this.toggle(); };
oTdSelect.onclick = function() { _this.toggle(); };

if(this.getUseSetImage())
{
oImgShowContainer = HTML.createTag("img");

HTML.createAttribute("src", PATH_IMG+"spacer.gif", oImgShowContainer);
HTML.setClass(oImgShowContainer, "h18 "+this.getStyleClass());
oShowContainer.appendChild(oImgShowContainer);

this.setShowContainer(oImgShowContainer);
}
else
{
this.setShowContainer(oShowContainer);
}

oTable.appendChild(oTBody);
oTBody.appendChild(oTr);

if(this.getLabel() != null)
{
oTr.appendChild(oTdLabel);
}

oTr.appendChild(oTdShow);
oTr.appendChild(oTdSelect);

oTdShow.appendChild(oSelectContainer);
oTdShow.appendChild(oShowContainer);

oSelectContainer.appendChild(oSelectItemContainer);

oTdSelect.appendChild(oLink);
oLink.appendChild(oImg);

HTML.createAttribute("src", PATH_IMG+"spacer.gif", oImg);

this.registerCloseOnClick(oImg, this);

oSelectContainer.style.display = "none";
oSelectContainer.style.position = "absolute";

if(this.getUseSetImage())
{
HTML.setClass(oSelectContainer, "mT18 b1 bsSolid bcLightGrey bgWhite");
}
else
{
HTML.setClass(oSelectContainer, "mT16 b1 bsSolid bcLightGrey bgWhite");
}

if(this.getStyleClass() == "w0")
{
HTML.setClass(oSelectContainer, "mT9 b1 bsSolid bcLightGrey bgWhite");
HTML.setClass(oTdShow, "L h18 cPointer w0");
}
else
{
HTML.setClass(oTdShow, "b1SE8 L bgBlue h18 cPointer "+this.getStyleClass());
}


HTML.setClass(oTable, "h20");
HTML.setClass(oShowContainer, "fcWhite fB C");
HTML.setClass(oImg, "iconArrowDown");

HTML.setClass(oTdSelect, "bgWhite b1SE8 cPointer");
HTML.setClass(oTdLabel, "pR5");

oSelectContainer.style.zIndex = 2;

this.setSelectContainer(oSelectContainer);
this.setSelectItemContainer(oSelectItemContainer);
this._oContainer.appendChild(oTable);
},

selectItemByValueAndSetSortDirection: function(mValue, cDirection)
{
var oSelectMenuItem;

for(var i=0;i<this._aEntry.length;i++)
{
oSelectMenuItem = this._aEntry[i];

if(oSelectMenuItem.getSetValue() == mValue)
{
if(cDirection == oSelectMenuItem.ASC)
{
oSelectMenuItem.setSortDirection(oSelectMenuItem.ASC);
}
else
{
oSelectMenuItem.setSortDirection(oSelectMenuItem.DESC);
}

return this.selectItem(i, 1);
}
}
},

selectItemByValue: function(mValue, bInit)
{
bInit = Functions.exists(bInit, 1);

var oSelectMenuItem;

for(var i=0;i<this._aEntry.length;i++)
{
oSelectMenuItem = this._aEntry[i];

if(oSelectMenuItem.getSaveValue() == mValue)
{
return this.selectItem(i, bInit);
}
}
},

selectItem: function(uiIndex, bInit)
{
this._uiSelectedIndex = uiIndex;
var oSelectMenuItem;

for(var i=0;i<this._aEntry.length;i++)
{
oSelectMenuItem = this._aEntry[i];
oSelectMenuItem.setSelected(0);

if(i == uiIndex)
{
oSelectMenuItem.setSelected(1);

if(this.getUseSetImage())
{
HTML.setClass(this.getShowContainer(), oSelectMenuItem.getShowValue());
}
else
{
this.getShowContainer().innerHTML = oSelectMenuItem.getShowValue();
}

if(bInit != 1)
{
if(typeof(oSelectMenuItem.getCallBack()) == "function")
{
oSelectMenuItem.getCallBack()(oSelectMenuItem);
}

if(this.getCallBackClass() != null)
{
this.getCallBackClass()[this.getCallBackMethod()](this, oSelectMenuItem);
}

if(this._bSaveSettings == 1)
{
this.saveSetting(oSelectMenuItem);
}
}

if(this.getUseSorter())
{
if(oSelectMenuItem.getSortDirection() == oSelectMenuItem.ASC)
{
oSelectMenuItem.setSortDirection(oSelectMenuItem.DESC);
HTML.setClass(oSelectMenuItem.getSortContainer(), this.CLASS_DESC);
}
else
{
oSelectMenuItem.setSortDirection(oSelectMenuItem.ASC);
HTML.setClass(oSelectMenuItem.getSortContainer(), this.CLASS_ASC);
}
}
}
else if(this.getUseSorter())
{
oSelectMenuItem.setSortDirection(oSelectMenuItem.ASC);
HTML.setClass(oSelectMenuItem.getSortContainer(), this.CLASS_ASC);
}

this._aEntry[i] = oSelectMenuItem;
}
},

createSelectItems: function()
{
var oSelectMenuItem;
var oSelectItemContainer = this.getSelectItemContainer();
var oSpanImg, oSpanValue, oSpanSort;
var oImg;

for(var i=0;i<this._aEntry.length;i++)
{
oSelectMenuItem = this._aEntry[i];

var oDivContainer = HTML.createTag("div");
var oTable = HTML.createTag("table");
var oTBody = HTML.createTag("tbody");
var oTr = HTML.createTag("tr");
var oTdImg = HTML.createTag("td");
var oTdValue = HTML.createTagWithContent("td", oSelectMenuItem.getValue());
var oTdSort = HTML.createTag("td");

oDivContainer.appendChild(oTable);
oTable.appendChild(oTBody);
oTBody.appendChild(oTr);

if(this.getUseImage() == 1 && oSelectMenuItem.getImgClass() != null)
{
if(typeof oSelectMenuItem.getImgClass() == "object")
{
aImages = oSelectMenuItem.getImgClass();
}
else
{
aImages = new Array();
aImages.push(oSelectMenuItem.getImgClass());
}

for(var j=0;j<aImages.length;j++)
{
oImage = aImages[j];

var oMeta = {td: {img: {src: PATH_IMG+"spacer.gif", cls: oImage}}};

oTr.appendChild(ObjectCreator.perform(oMeta));
}


oTr.appendChild(ObjectCreator.perform({td: {img: {src: PATH_IMG+"spacer.gif", cls : "w3"}}}));
}

oTr.appendChild(oTdValue);

if(this.getUseSorter() == 1)
{
oTr.appendChild(oTdSort);

oImg = HTML.createTag("img");
HTML.createAttribute("src", PATH_IMG+"spacer.gif", oImg);

oSelectMenuItem.setSortContainer(oImg);

if(oSelectMenuItem.getImgClass() != null)
{
HTML.setClass(oImg, this.CLASS_ASC);
}

oTdSort.appendChild(oImg);
}

HTML.setClass(oDivContainer, "pT1 pB1 pLR10 cPointer L");

oSelectMenuItem.setContainer(oDivContainer);

this.registerDivContainerOnClick(oDivContainer, i, this);
this.registerDivContainerOnMouseOver(oDivContainer, i, this);
this.registerDivContainerOnMouseOut(oDivContainer, i, this);

oSelectItemContainer.appendChild(oDivContainer);

this._aEntry[i] = oSelectMenuItem;
}
},

registerDivContainerOnClick: function(oObject, uiIndex, _this)
{
oObject.onclick = function() { _this.selectItem(uiIndex); };
},

registerCloseOnClick: function(oObject, _this)
{
oObject.onclick = function() { _this.toggle(); }
},

registerDivContainerOnMouseOver: function(oObject, uiIndex, _this)
{
oObject.onmouseover = function() { HTML.setClass(_this._aEntry[uiIndex].getContainer(), "bgLightGrey pT1 pB1 pLR10 cPointer L"); };
},

registerDivContainerOnMouseOut: function(oObject, uiIndex, _this)
{
oObject.onmouseout = function() { HTML.setClass(_this._aEntry[uiIndex].getContainer(), 'pT1 pB1 pLR10 cPointer L'); };
},

clearSelectContainer: function()
{
while(this.getSelectItemContainer().hasChildNodes())
{
this.getSelectItemContainer().removeChild(this.getSelectItemContainer().firstChild);
}
},

clearSelectItems: function()
{
this._aEntry = new Array();
},

toggle: function()
{
if(this.getSelectContainer().style.display == "none")
{
EventRegistry.SlideDown(this.getSelectContainer(), {duration: this.getDuration()});
}
else
{
EventRegistry.SlideUp(this.getSelectContainer(), {duration: this.getDuration()});
}
},

hide: function()
{
if(this.getSelectContainer().style.display == "")
{
EventRegistry.SlideUp(this.getSelectContainer(), {duration: this.getDuration()});
}
},

saveSetting: function(oSelectMenuItem)
{
aData = new Array();
aData[0] = "savevalue="+(oSelectMenuItem.getSaveValue() ? oSelectMenuItem.getSaveValue() : oSelectMenuItem.getSetValue());
aData[1] = "selectmenu="+this.getClassName();

if(this.getUseSorter())
{
aData[2] = "sortdirection="+oSelectMenuItem.getSortDirection();
}

new Ajax.Request(PATH_HTTP+"ajax/save-selectmenu.html", {
method: 'post',
parameters: aData.join("&"),
onSuccess: function(oTransport)
{
}
});
}
};
var SelectMenuItem = Class.create();

SelectMenuItem.prototype =
{
initialize: function (sValue, sImgClass, sShowValue, sSetValue, cbFunction, sSaveValue)
{
this.ASC = "asc";
this.DESC = "desc";

this._sSortDirection = this.ASC;// Sortierrichtung des Objekts
this._sValue = sValue;// Anzeige wert
this._sImgClass = sImgClass;// Bildklasse
this._sShowValue = sShowValue;// Der Wert der im InnerHTML gesetzt wird
this._sSetValue = sSetValue;// Der Wert der als Parameter gesetzt wird
this._cbFunction = cbFunction;// CallBackfunction beim aufruf

if(sSaveValue)
{
this._sSaveValue = sSaveValue;// Speicherwert | Ladewert, falls der normale Set wert nicht nutzbar ist
}
else
{
this._sSaveValue = sSetValue;// Speicherwert | Ladewert, falls der normale Set wert nicht nutzbar ist
}


this._bSelect = 0;// Ausgewählt?
this._bSortable = 0;// Sortierbar?
this._oContainer = null;// Div-Container
this._oSortContainer = null;// Sortier Bild
},

setValue: function(sParam){ this._sValue = sParam; },
setImgClass: function(sParam){ this._sImgClass = sParam; },
setShowValue: function(sParam){ this._sShowValue = sParam; },
setSetValue: function(sParam){ this._sSetValue = sParam; },
setCallBack: function(cbParam){ this._cbFunction = cbParam; },
setSaveValue: function(sParam){ this._sSaveValue = sParam; },
setSelected: function(bParam){ this._bSelect = bParam; },
setSortable: function(bParam){ this._bSortable = bParam; },
setContainer: function(oParam){ this._oContainer = oParam; },
setSortContainer: function(oParam){ this._oSortContainer = oParam; },
setSortDirection: function(sParam){ this._sSortDirection = sParam; },

getValue: function(){ return this._sValue; },
getImgClass: function(){ return this._sImgClass; },
getShowValue: function(){ return this._sShowValue; },
getSetValue: function(){ return this._sSetValue; },
getCallBack: function(){ return this._cbFunction; },
getSaveValue: function(){ return this._sSaveValue; },
getSelected: function(){ return this._bSelect; },
getSortable: function(){ return this._bSortable; },
getContainer: function(){ return this._oContainer; },
getSortContainer: function(){ return this._oSortContainer; },
getSortDirection: function(){ return this._sSortDirection; }
};
var SelectMenuPaginatorData = Class.create();

SelectMenuPaginatorData.prototype =
{
initialize: function()
{
this._oPaginator = null;
this._oCallBackPaginator = null;
this._oSelectMenu = null;
},

setPaginator: function(oParam) { this._oPaginator = oParam; },
setSelectMenu: function(oParam) { this._oSelectMenu = oParam;  },
setCallBackPaginator: function(oParam) { this._oCallBackPaginator = oParam;  },


getPaginator: function() { return this._oPaginator; },
getSelectMenu: function() { return this._oSelectMenu;  },
getCallBackPaginator: function() { return this._oCallBackPaginator;  },

cbAmount: function(oSelectMenu, oSelectMenuItem)
{
this.changeAmount(oSelectMenu, oSelectMenuItem);
},
changeAmount: function(oSelectMenu, oSelectMenuItem)
{
oSelectMenu.hide();
this.getPaginator().setShowAmount(oSelectMenuItem.getSetValue());
this.getPaginator().toSite(1);
},

cbView: function(oSelectMenu, oSelectMenuItem)
{
this.changeView(oSelectMenu, oSelectMenuItem);
},
changeView: function(oSelectMenu, oSelectMenuItem)
{
oSelectMenu.hide();

this.getSelectMenu().clearSelectContainer();
this.getSelectMenu().clearSelectItems();

var aUnitsPerLine = oSelectMenuItem.getSetValue().getShowUnitsPerSite();

for(var i=0;i<aUnitsPerLine.length;i++)
{
if(aUnitsPerLine[i] == 0)
{
}
else
{
this.getSelectMenu().addItem(aUnitsPerLine[i], null, aUnitsPerLine[i], aUnitsPerLine[i]);
}
}

this.getCallBackPaginator().setViewClass(oSelectMenuItem.getSetValue());
this.getSelectMenu().createSelectItems();
this.getSelectMenu().selectItem(2);
},

cbSort: function(oSelectMenu, oSelectMenuItem)
{
this.changeSorting(oSelectMenu, oSelectMenuItem);
},
changeSorting: function(oSelectMenu, oSelectMenuItem)
{
oSelectMenu.hide();

this.getCallBackPaginator().setParameter("sortfield", oSelectMenuItem.getSetValue());
this.getCallBackPaginator().setParameter("sortdir", oSelectMenuItem.getSortDirection());
this.getCallBackPaginator().clearData();
this.getPaginator().toSite(1);
}
};
var OptionMenu = Class.create();

OptionMenu.prototype =
{

initialize: function (oContainer, aSettings)
{

aSettings = Functions.exists(aSettings, new Object);
aSettings = Functions.keyExists("fields", aSettings, new Object());
aSettings = Functions.keyExists("items", aSettings, new Array());


var oSM = new SelectMenu(oContainer, null, null, null, "w75", 0);

for(var i=0;i<aSettings["items"].length;i++)
{
var sField = aSettings["items"][i];

switch(sField)
{
case "null":
oSM.addItem("keine Optionen vorhanden", null, "Optionen", 1, function() { });
break;

case "download":
oSM.addItem("Download", "iconDownload", "Optionen", 1, function() { Functions.multiDownload(aSettings["fields"]["c"]); });
break;

case "fileedit":
oSM.addItem("Dateien&nbsp;bearbeiten", "iconMenuFileEdit", "Optionen", 1, function() { Functions.multiEdit(aSettings["fields"]["c"]); });
break;

case "filedelete":
oSM.addItem("<span class=\"fcRed\">Datei&nbsp;l&ouml;schen</span>", "iconMenuDelete", "Optionen", 1, function()
{
Functions.multiDelete(aSettings["fields"]["c"], aSettings["fields"]["pc"], 0, function(aData)
{
aSettings["fields"]["tbac"].innerHTML = aSettings["fields"]["pd"].getPaginator().getTotalAmount()-aData["sub"];
aSettings["fields"]["pd"].clearData();
aSettings["fields"]["pd"].getPaginator().setTotalAmount(aSettings["fields"]["pd"].getPaginator().getTotalAmount()-aData["sub"], 1);
});
});
break;

case "play_stufffile":
oSM.addItem("<span class=\"fcGreen fb\">Abspielen</span>", null, "Optionen", 1, null);
oSM.addItem("Abspielen", ["iconMenuDottedMiddle", "iconPlay"], "Optionen", 1, function() { Functions.play(aSettings["fields"]["c"], 0, "stufffile-play", "stuffsite-"+aSettings["fields"]["d"]); });
oSM.addItem("ShufflePlay", ["iconMenuDottedEnd", "iconShuffle"], "Optionen", 1, function() { Functions.play(aSettings["fields"]["c"], 1, "stufffile-play", "stuffsite-"+aSettings["fields"]["d"]); });
break;

case "play_stufffile_image":
oSM.addItem("<span class=\"fcGreen fb\">Abspielen</span>", null, "Optionen", 1, null);
oSM.addItem("Abspielen", ["iconMenuDottedMiddle", "iconPlay"], "Optionen", 1, function() { Functions.play(aSettings["fields"]["c"], 0, "stufffile-play", "stuffsite-"+aSettings["fields"]["d"]); });
break;

case "play_stuffsite":
oSM.addItem("Abspielen", ["iconMenuDottedMiddle", "iconPlay"], "Optionen", 1, function() { Functions.play(aSettings["fields"]["c"], 0, "stuffsite-play", "stuffsite-"+aSettings["fields"]["d"]); });
break;

case "play_collection_image":
oSM.addItem("<span class=\"fcGreen fb\">Abspielen</span>", null, "Optionen", 1, null);
oSM.addItem("Abspielen", ["iconMenuDottedMiddle", "iconPlay"], "Optionen", 1, function() { Functions.play(aSettings["fields"]["c"], 0, "stufffile-play", "collection-"+aSettings["fields"]["d"]); });
break;

case "play_collection":
case "play":
oSM.addItem("<span class=\"fcGreen fb\">Abspielen</span>", null, "Optionen", 1, null);
oSM.addItem("Abspielen", ["iconMenuDottedMiddle", "iconPlay"], "Optionen", 1, function() { Functions.play(aSettings["fields"]["c"], 0, "stufffile-play", "collection-"+aSettings["fields"]["d"]); });
oSM.addItem("ShufflePlay", ["iconMenuDottedEnd", "iconShuffle"], "Optionen", 1, function() { Functions.play(aSettings["fields"]["c"], 1, "stufffile-play", "collection-"+aSettings["fields"]["d"]); });
break;

case "favorite":
oSM.addItem("<span class=\"fcGreen fb\">Hinzuf&uuml;gen</span>", null, "Optionen", 1, null);
oSM.addItem("Zur&nbsp;Collection", ["iconMenuDottedMiddle", "iconCollection"], "Optionen", 1, function() { new Popup_AddCollection(aSettings["fields"]["pc"], aSettings["fields"]["c"]); });
oSM.addItem("Zu&nbsp;Favoriten", ["iconMenuDottedEnd", "iconMenuFavorite"], "Optionen", 1, function() { Favorite.multiFavorite(aSettings["fields"]["c"]); });
break;

case "favorite_delete":
oSM.addItem("<span class=\"fcRed\">Datei&nbsp;l&ouml;schen</span>", "iconMenuDelete", "Optionen", 1, function()
{
Functions.multiDeleteFavorites(aSettings["fields"]["c"], aSettings["fields"]["pc"], 0, function(aData)
{
aSettings["fields"]["tbac"].innerHTML = aSettings["fields"]["pd"].getPaginator().getTotalAmount()-aData["sub"];
aSettings["fields"]["pd"].clearData();
aSettings["fields"]["pd"].getPaginator().setTotalAmount(aSettings["fields"]["pd"].getPaginator().getTotalAmount()-aData["sub"], 1);
});
});
break;

case "stuffsite_edit":
oSM.addItem("Stuffseite bearbeiten", "iconMenuStuffsiteEdit", "Optionen", "Optionen", function() { Functions.relocate(PATH_HTTP+"userstuffsites-modification/"+aSettings["fields"]["d"]["ssid"]+".html"); });
break;

case "stuffsite_manage":
oSM.addItem("Dateien verwalten", "iconMenuStufffileManage", "Optionen", "Optionen", function() { Functions.relocate(PATH_HTTP+"userstuffsites-content-editor/"+aSettings["fields"]["d"]["ssid"]+".html"); });
break;

case "stuffsite_delete":
var aData = new Array();
aData.push(aSettings["fields"]["d"]);

oSM.addItem("<span class=\"fcRed\">L&ouml;schen</span>", "iconMenuDelete", "Optionen", "Optionen", function() { new Popup_DeleteStuffSite(aSettings["fields"]["pc"], aData); });
break;

case "collection_edit":
oSM.addItem("Collection bearbeiten", "iconMenuCollectionEdit", "Optionen", "Optionen", function() { Functions.relocate(PATH_HTTP+"collection-modification/"+aSettings["fields"]["d"]["cid"]+".html"); });
break;

case "collection_manage":
oSM.addItem("Dateien verwalten", "iconMenuStufffileManage", "Optionen", "Optionen", function() { Functions.relocate(PATH_HTTP+"collection-content-editor/"+aSettings["fields"]["d"]["cid"]+".html"); });
break;

case "collection_delete":
var aData = new Array();
aData.push(aSettings["fields"]["d"]);

oSM.addItem("<span class=\"fcRed\">L&ouml;schen</span>", "iconMenuDelete", "Optionen", "Optionen", function() { new Popup_DeleteCollection(aSettings["fields"]["pc"], aData); });
break;

case "friend_apply":
oSM.addItem("best&auml;tigen", "iconApply18", "Optionen", 1, function() { Contacts.accept(Functions.getAllCheckBoxValues(aSettings["fields"]["c"]), aSettings["fields"]["pc"]); });
break;

case "friend_deny":
oSM.addItem("<span class=\"fcRed\">ablehnen</span>", "iconRemove18", "Optionen", 1, function() { Contacts.deny(Functions.getAllCheckBoxValues(aSettings["fields"]["c"]), aSettings["fields"]["pc"]); });
break;

case "friend_remove":
oSM.addItem("<span class=\"fcRed\">l&ouml;schen</span>", "iconRemove18", "Optionen", 1, function() { Contacts.remove(Functions.getAllCheckBoxValues(aSettings["fields"]["c"]), aSettings["fields"]["pc"]); });
break;

case "friend_add":
oSM.addItem("hinzuf&uuml;gen", "iconAccept18", "Optionen", 1, function() { Contacts.add(Functions.getAllCheckBoxValues(aSettings["fields"]["c"]), aSettings["fields"]["pc"]); });
break;

case "friend_revoke":
oSM.addItem("<span class=\"fcRed\">l&ouml;schen</span>", "iconRemove18", "Optionen", 1, function() { Contacts.revoke(Functions.getAllCheckBoxValues(aSettings["fields"]["c"]), aSettings["fields"]["pc"]); });
break;

case "friend_notice":
oSM.addItem("merken", "iconNotice18", "Optionen", 1, function() { Contacts.notice(Functions.getAllCheckBoxValues(aSettings["fields"]["c"]), aSettings["fields"]["pc"]); });
break;

case "pm_outbox":
oSM.addItem("<span class=\"fcRed\">ausblenden</span>", "iconMenuRemove", "Optionen", 1, function() { PrivateMessageSystem.removeOutbox(Functions.getAllCheckBoxValues(aSettings["fields"]["c"]), aSettings["fields"]["pc"]); });
break;

case "pm_inbox":
oSM.addItem("gelesen", "iconMenuReaded", "Optionen", 1, function() { PrivateMessageSystem.setReaded(Functions.getAllCheckBoxValues(aSettings["fields"]["c"]), aSettings["fields"]["pd"]); });
oSM.addItem("ungelesen", "iconMenuUnread", "Optionen", 1, function() { PrivateMessageSystem.setUnreaded(Functions.getAllCheckBoxValues(aSettings["fields"]["c"]), aSettings["fields"]["pd"]); });
oSM.addItem("<span class=\"fcRed\">l&ouml;schen</span>", "iconMenuRemove", "Optionen", 1, function() { PrivateMessageSystem.removeInbox(Functions.getAllCheckBoxValues(aSettings["fields"]["c"]), aSettings["fields"]["pc"]); });
break;
}
}

oSM.setNoSave();
oSM.createSelectItems();
oSM.selectItem(0, 1);
}
};
var HandleStuffSitePreview = Class.create();

HandleStuffSitePreview.prototype =
{
initialize: function(oStatusContainer, oStuffSite, aImageContainer)
{
this._oStatusContainer = oStatusContainer;
this._oStuffSite = oStuffSite;
this._aImageContainer = aImageContainer;
},

fileQueueError: function(file, errorCode, message)
{
switch (errorCode)
{
case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
break;
case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
break;
case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
break;
case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
break;
}
},

fileDialogComplete: function(numFilesSelected, numFilesQueued)
{
if(numFilesQueued > 0)
{
this.startUpload();
}
},

uploadProgress: function(file, bytesLoaded)
{
var percent = Math.ceil((bytesLoaded / file.size) * 100);

if(percent === 100)
{
oHandleStuffSitePreview.setStatus("Erzeuge Vorschau...");
}
else
{
oHandleStuffSitePreview.setStatus("Datei wird hochgeladen ("+percent+"%)...");
}
},


uploadSuccess: function(file, serverData)
{
if(serverData != "-1")
{
for(var i=0;i<oHandleStuffSitePreview._aImageContainer.length;i++)
{
oHandleStuffSitePreview._aImageContainer[i].src = serverData;
oHandleStuffSitePreview._aImageContainer[i].style.backgroundImage = "url("+serverData+")";
}

oHandleStuffSitePreview._oStuffSite["previewimage"] = serverData;
Cache.insert(oHandleStuffSitePreview._oStuffSite);

oHandleStuffSitePreview.setStatus("Vorschau erfolgreich gespeichert.");
}
else
{
oHandleStuffSitePreview.setStatus("Vorschau wurde nicht gespeichert.");
}
},


uploadError: function(file, errorCode, message)
{
switch (errorCode)
{
case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
oHandleStuffSitePreview.setStatus("Vorgang abgebrochen");
break;
}
},

setStatus: function(sStatus)
{
oHandleStuffSitePreview._oStatusContainer.innerHTML = sStatus;
}
};






var SWFUpload;

if (SWFUpload == undefined) {
SWFUpload = function (settings) {
this.initSWFUpload(settings);
};
}

SWFUpload.prototype.initSWFUpload = function (settings) {
try {
this.customSettings = {};// A container where developers can place their own settings associated with this instance.
this.settings = settings;
this.eventQueue = [];
this.movieName = "SWFUpload_" + SWFUpload.movieCount++;
this.movieElement = null;


SWFUpload.instances[this.movieName] = this;

this.initSettings();
this.loadFlash();
this.displayDebugInfo();
} catch (ex) {
delete SWFUpload.instances[this.movieName];
throw ex;
}
};




SWFUpload.instances = {};
SWFUpload.movieCount = 0;
SWFUpload.version = "2.2.0 2009-03-25";
SWFUpload.QUEUE_ERROR = {
QUEUE_LIMIT_EXCEEDED  : -100,
FILE_EXCEEDS_SIZE_LIMIT  : -110,
ZERO_BYTE_FILE  : -120,
INVALID_FILETYPE  : -130
};
SWFUpload.UPLOAD_ERROR = {
HTTP_ERROR  : -200,
MISSING_UPLOAD_URL      : -210,
IO_ERROR  : -220,
SECURITY_ERROR  : -230,
UPLOAD_LIMIT_EXCEEDED  : -240,
UPLOAD_FAILED  : -250,
SPECIFIED_FILE_ID_NOT_FOUND: -260,
FILE_VALIDATION_FAILED  : -270,
FILE_CANCELLED  : -280,
UPLOAD_STOPPED: -290
};
SWFUpload.FILE_STATUS = {
QUEUED : -1,
IN_PROGRESS : -2,
ERROR : -3,
COMPLETE : -4,
CANCELLED : -5
};
SWFUpload.BUTTON_ACTION = {
SELECT_FILE  : -100,
SELECT_FILES : -110,
START_UPLOAD : -120
};
SWFUpload.CURSOR = {
ARROW : -1,
HAND : -2
};
SWFUpload.WINDOW_MODE = {
WINDOW : "window",
TRANSPARENT : "transparent",
OPAQUE : "opaque"
};

SWFUpload.completeURL = function(url) {
if (typeof(url) !== "string" || url.match(/^https?:\/\//i) || url.match(/^\//)) {
return url;
}

var currentURL = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ":" + window.location.port : "");

var indexSlash = window.location.pathname.lastIndexOf("/");
if (indexSlash <= 0) {
path = "/";
} else {
path = window.location.pathname.substr(0, indexSlash) + "/";
}

return /*currentURL +*/ path + url;

};






SWFUpload.prototype.initSettings = function () {
this.ensureDefault = function (settingName, defaultValue) {
this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName];
};

this.ensureDefault("upload_url", "");
this.ensureDefault("preserve_relative_urls", false);
this.ensureDefault("file_post_name", "Filedata");
this.ensureDefault("post_params", {});
this.ensureDefault("use_query_string", false);
this.ensureDefault("requeue_on_error", false);
this.ensureDefault("http_success", []);
this.ensureDefault("assume_success_timeout", 0);

this.ensureDefault("file_types", "*.*");
this.ensureDefault("file_types_description", "All Files");
this.ensureDefault("file_size_limit", 0);// Default zero means "unlimited"
this.ensureDefault("file_upload_limit", 0);
this.ensureDefault("file_queue_limit", 0);

this.ensureDefault("flash_url", "swfupload.swf");
this.ensureDefault("prevent_swf_caching", true);

this.ensureDefault("button_image_url", "");
this.ensureDefault("button_width", 1);
this.ensureDefault("button_height", 1);
this.ensureDefault("button_text", "");
this.ensureDefault("button_text_style", "color: #000000; font-size: 16pt;");
this.ensureDefault("button_text_top_padding", 0);
this.ensureDefault("button_text_left_padding", 0);
this.ensureDefault("button_action", SWFUpload.BUTTON_ACTION.SELECT_FILES);
this.ensureDefault("button_disabled", false);
this.ensureDefault("button_placeholder_id", "");
this.ensureDefault("button_placeholder", null);
this.ensureDefault("button_cursor", SWFUpload.CURSOR.ARROW);
this.ensureDefault("button_window_mode", SWFUpload.WINDOW_MODE.WINDOW);

this.ensureDefault("debug", false);
this.settings.debug_enabled = this.settings.debug;// Here to maintain v2 API

this.settings.return_upload_start_handler = this.returnUploadStart;
this.ensureDefault("swfupload_loaded_handler", null);
this.ensureDefault("file_dialog_start_handler", null);
this.ensureDefault("file_queued_handler", null);
this.ensureDefault("file_queue_error_handler", null);
this.ensureDefault("file_dialog_complete_handler", null);

this.ensureDefault("upload_start_handler", null);
this.ensureDefault("upload_progress_handler", null);
this.ensureDefault("upload_error_handler", null);
this.ensureDefault("upload_success_handler", null);
this.ensureDefault("upload_complete_handler", null);

this.ensureDefault("debug_handler", this.debugMessage);

this.ensureDefault("custom_settings", {});

this.customSettings = this.settings.custom_settings;

if (!!this.settings.prevent_swf_caching) {
this.settings.flash_url = this.settings.flash_url + (this.settings.flash_url.indexOf("?") < 0 ? "?" : "&") + "preventswfcaching=" + new Date().getTime();
}

if (!this.settings.preserve_relative_urls) {
this.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url);
this.settings.button_image_url = SWFUpload.completeURL(this.settings.button_image_url);
}

delete this.ensureDefault;
};

SWFUpload.prototype.loadFlash = function () {
var targetElement, tempParent;

if (document.getElementById(this.movieName) !== null) {
throw "ID " + this.movieName + " is already in use. The Flash Object could not be added";
}

targetElement = document.getElementById(this.settings.button_placeholder_id) || this.settings.button_placeholder;

if (targetElement == undefined) {
throw "Could not find the placeholder element: " + this.settings.button_placeholder_id;
}

tempParent = document.createElement("div");
tempParent.innerHTML = this.getFlashHTML();// Using innerHTML is non-standard but the only sensible way to dynamically add Flash in IE (and maybe other browsers)
targetElement.parentNode.replaceChild(tempParent.firstChild, targetElement);

if (window[this.movieName] == undefined) {
window[this.movieName] = this.getMovieElement();
}

};

SWFUpload.prototype.getFlashHTML = function () {
return ['<object id="', this.movieName, '" type="application/x-shockwave-flash" data="', this.settings.flash_url, '" width="', this.settings.button_width, '" height="', this.settings.button_height, '" class="swfupload">',
'<param name="wmode" value="', this.settings.button_window_mode, '" />',
'<param name="movie" value="', this.settings.flash_url, '" />',
'<param name="quality" value="high" />',
'<param name="menu" value="false" />',
'<param name="allowScriptAccess" value="always" />',
'<param name="flashvars" value="' + this.getFlashVars() + '" />',
'</object>'].join("");
};

SWFUpload.prototype.getFlashVars = function () {
var paramString = this.buildParamString();
var httpSuccessString = this.settings.http_success.join(",");

return ["movieName=", encodeURIComponent(this.movieName),
"&amp;uploadURL=", encodeURIComponent(this.settings.upload_url),
"&amp;useQueryString=", encodeURIComponent(this.settings.use_query_string),
"&amp;requeueOnError=", encodeURIComponent(this.settings.requeue_on_error),
"&amp;httpSuccess=", encodeURIComponent(httpSuccessString),
"&amp;assumeSuccessTimeout=", encodeURIComponent(this.settings.assume_success_timeout),
"&amp;params=", encodeURIComponent(paramString),
"&amp;filePostName=", encodeURIComponent(this.settings.file_post_name),
"&amp;fileTypes=", encodeURIComponent(this.settings.file_types),
"&amp;fileTypesDescription=", encodeURIComponent(this.settings.file_types_description),
"&amp;fileSizeLimit=", encodeURIComponent(this.settings.file_size_limit),
"&amp;fileUploadLimit=", encodeURIComponent(this.settings.file_upload_limit),
"&amp;fileQueueLimit=", encodeURIComponent(this.settings.file_queue_limit),
"&amp;debugEnabled=", encodeURIComponent(this.settings.debug_enabled),
"&amp;buttonImageURL=", encodeURIComponent(this.settings.button_image_url),
"&amp;buttonWidth=", encodeURIComponent(this.settings.button_width),
"&amp;buttonHeight=", encodeURIComponent(this.settings.button_height),
"&amp;buttonText=", encodeURIComponent(this.settings.button_text),
"&amp;buttonTextTopPadding=", encodeURIComponent(this.settings.button_text_top_padding),
"&amp;buttonTextLeftPadding=", encodeURIComponent(this.settings.button_text_left_padding),
"&amp;buttonTextStyle=", encodeURIComponent(this.settings.button_text_style),
"&amp;buttonAction=", encodeURIComponent(this.settings.button_action),
"&amp;buttonDisabled=", encodeURIComponent(this.settings.button_disabled),
"&amp;buttonCursor=", encodeURIComponent(this.settings.button_cursor)
].join("");
};

SWFUpload.prototype.getMovieElement = function () {
if (this.movieElement == undefined) {
this.movieElement = document.getElementById(this.movieName);
}

if (this.movieElement === null) {
throw "Could not find Flash element";
}

return this.movieElement;
};

SWFUpload.prototype.buildParamString = function () {
var postParams = this.settings.post_params;
var paramStringPairs = [];

if (typeof(postParams) === "object") {
for (var name in postParams) {
if (postParams.hasOwnProperty(name)) {
paramStringPairs.push(encodeURIComponent(name.toString()) + "=" + encodeURIComponent(postParams[name].toString()));
}
}
}

return paramStringPairs.join("&amp;");
};

SWFUpload.prototype.destroy = function () {
try {
this.cancelUpload(null, false);


var movieElement = null;
movieElement = this.getMovieElement();

if (movieElement && typeof(movieElement.CallFunction) === "unknown") { // We only want to do this in IE
for (var i in movieElement) {
try {
if (typeof(movieElement[i]) === "function") {
movieElement[i] = null;
}
} catch (ex1) {}
}

try {
movieElement.parentNode.removeChild(movieElement);
} catch (ex) {}
}

window[this.movieName] = null;

SWFUpload.instances[this.movieName] = null;
delete SWFUpload.instances[this.movieName];

this.movieElement = null;
this.settings = null;
this.customSettings = null;
this.eventQueue = null;
this.movieName = null;


return true;
} catch (ex2) {
return false;
}
};


SWFUpload.prototype.displayDebugInfo = function () {
this.debug(
[
"---SWFUpload Instance Info---\n",
"Version: ", SWFUpload.version, "\n",
"Movie Name: ", this.movieName, "\n",
"Settings:\n",
"\t", "upload_url:               ", this.settings.upload_url, "\n",
"\t", "flash_url:                ", this.settings.flash_url, "\n",
"\t", "use_query_string:         ", this.settings.use_query_string.toString(), "\n",
"\t", "requeue_on_error:         ", this.settings.requeue_on_error.toString(), "\n",
"\t", "http_success:             ", this.settings.http_success.join(", "), "\n",
"\t", "assume_success_timeout:   ", this.settings.assume_success_timeout, "\n",
"\t", "file_post_name:           ", this.settings.file_post_name, "\n",
"\t", "post_params:              ", this.settings.post_params.toString(), "\n",
"\t", "file_types:               ", this.settings.file_types, "\n",
"\t", "file_types_description:   ", this.settings.file_types_description, "\n",
"\t", "file_size_limit:          ", this.settings.file_size_limit, "\n",
"\t", "file_upload_limit:        ", this.settings.file_upload_limit, "\n",
"\t", "file_queue_limit:         ", this.settings.file_queue_limit, "\n",
"\t", "debug:                    ", this.settings.debug.toString(), "\n",

"\t", "prevent_swf_caching:      ", this.settings.prevent_swf_caching.toString(), "\n",

"\t", "button_placeholder_id:    ", this.settings.button_placeholder_id.toString(), "\n",
"\t", "button_placeholder:       ", (this.settings.button_placeholder ? "Set" : "Not Set"), "\n",
"\t", "button_image_url:         ", this.settings.button_image_url.toString(), "\n",
"\t", "button_width:             ", this.settings.button_width.toString(), "\n",
"\t", "button_height:            ", this.settings.button_height.toString(), "\n",
"\t", "button_text:              ", this.settings.button_text.toString(), "\n",
"\t", "button_text_style:        ", this.settings.button_text_style.toString(), "\n",
"\t", "button_text_top_padding:  ", this.settings.button_text_top_padding.toString(), "\n",
"\t", "button_text_left_padding: ", this.settings.button_text_left_padding.toString(), "\n",
"\t", "button_action:            ", this.settings.button_action.toString(), "\n",
"\t", "button_disabled:          ", this.settings.button_disabled.toString(), "\n",

"\t", "custom_settings:          ", this.settings.custom_settings.toString(), "\n",
"Event Handlers:\n",
"\t", "swfupload_loaded_handler assigned:  ", (typeof this.settings.swfupload_loaded_handler === "function").toString(), "\n",
"\t", "file_dialog_start_handler assigned: ", (typeof this.settings.file_dialog_start_handler === "function").toString(), "\n",
"\t", "file_queued_handler assigned:       ", (typeof this.settings.file_queued_handler === "function").toString(), "\n",
"\t", "file_queue_error_handler assigned:  ", (typeof this.settings.file_queue_error_handler === "function").toString(), "\n",
"\t", "upload_start_handler assigned:      ", (typeof this.settings.upload_start_handler === "function").toString(), "\n",
"\t", "upload_progress_handler assigned:   ", (typeof this.settings.upload_progress_handler === "function").toString(), "\n",
"\t", "upload_error_handler assigned:      ", (typeof this.settings.upload_error_handler === "function").toString(), "\n",
"\t", "upload_success_handler assigned:    ", (typeof this.settings.upload_success_handler === "function").toString(), "\n",
"\t", "upload_complete_handler assigned:   ", (typeof this.settings.upload_complete_handler === "function").toString(), "\n",
"\t", "debug_handler assigned:             ", (typeof this.settings.debug_handler === "function").toString(), "\n"
].join("")
);
};


SWFUpload.prototype.addSetting = function (name, value, default_value) {
if (value == undefined) {
return (this.settings[name] = default_value);
} else {
return (this.settings[name] = value);
}
};

SWFUpload.prototype.getSetting = function (name) {
if (this.settings[name] != undefined) {
return this.settings[name];
}

return "";
};



SWFUpload.prototype.callFlash = function (functionName, argumentArray) {
argumentArray = argumentArray || [];

var movieElement = this.getMovieElement();
var returnValue, returnString;

try {
returnString = movieElement.CallFunction('<invoke name="' + functionName + '" returntype="javascript">' + __flash__argumentsToXML(argumentArray, 0) + '</invoke>');
returnValue = eval(returnString);
} catch (ex) {
throw "Call to " + functionName + " failed";
}

if (returnValue != undefined && typeof returnValue.post === "object") {
returnValue = this.unescapeFilePostParams(returnValue);
}

return returnValue;
};



SWFUpload.prototype.selectFile = function () {
this.callFlash("SelectFile");
};

SWFUpload.prototype.selectFiles = function () {
this.callFlash("SelectFiles");
};


SWFUpload.prototype.startUpload = function (fileID) {
this.callFlash("StartUpload", [fileID]);
};

SWFUpload.prototype.cancelUpload = function (fileID, triggerErrorEvent) {
if (triggerErrorEvent !== false) {
triggerErrorEvent = true;
}
this.callFlash("CancelUpload", [fileID, triggerErrorEvent]);
};

SWFUpload.prototype.stopUpload = function () {
this.callFlash("StopUpload");
};



SWFUpload.prototype.getStats = function () {
return this.callFlash("GetStats");
};

SWFUpload.prototype.setStats = function (statsObject) {
this.callFlash("SetStats", [statsObject]);
};

SWFUpload.prototype.getFile = function (fileID) {
if (typeof(fileID) === "number") {
return this.callFlash("GetFileByIndex", [fileID]);
} else {
return this.callFlash("GetFile", [fileID]);
}
};

SWFUpload.prototype.addFileParam = function (fileID, name, value) {
return this.callFlash("AddFileParam", [fileID, name, value]);
};

SWFUpload.prototype.removeFileParam = function (fileID, name) {
this.callFlash("RemoveFileParam", [fileID, name]);
};

SWFUpload.prototype.setUploadURL = function (url) {
this.settings.upload_url = url.toString();
this.callFlash("SetUploadURL", [url]);
};

SWFUpload.prototype.setPostParams = function (paramsObject) {
this.settings.post_params = paramsObject;
this.callFlash("SetPostParams", [paramsObject]);
};

SWFUpload.prototype.addPostParam = function (name, value) {
this.settings.post_params[name] = value;
this.callFlash("SetPostParams", [this.settings.post_params]);
};

SWFUpload.prototype.removePostParam = function (name) {
delete this.settings.post_params[name];
this.callFlash("SetPostParams", [this.settings.post_params]);
};

SWFUpload.prototype.setFileTypes = function (types, description) {
this.settings.file_types = types;
this.settings.file_types_description = description;
this.callFlash("SetFileTypes", [types, description]);
};

SWFUpload.prototype.setFileSizeLimit = function (fileSizeLimit) {
this.settings.file_size_limit = fileSizeLimit;
this.callFlash("SetFileSizeLimit", [fileSizeLimit]);
};

SWFUpload.prototype.setFileUploadLimit = function (fileUploadLimit) {
this.settings.file_upload_limit = fileUploadLimit;
this.callFlash("SetFileUploadLimit", [fileUploadLimit]);
};

SWFUpload.prototype.setFileQueueLimit = function (fileQueueLimit) {
this.settings.file_queue_limit = fileQueueLimit;
this.callFlash("SetFileQueueLimit", [fileQueueLimit]);
};

SWFUpload.prototype.setFilePostName = function (filePostName) {
this.settings.file_post_name = filePostName;
this.callFlash("SetFilePostName", [filePostName]);
};

SWFUpload.prototype.setUseQueryString = function (useQueryString) {
this.settings.use_query_string = useQueryString;
this.callFlash("SetUseQueryString", [useQueryString]);
};

SWFUpload.prototype.setRequeueOnError = function (requeueOnError) {
this.settings.requeue_on_error = requeueOnError;
this.callFlash("SetRequeueOnError", [requeueOnError]);
};

SWFUpload.prototype.setHTTPSuccess = function (http_status_codes) {
if (typeof http_status_codes === "string") {
http_status_codes = http_status_codes.replace(" ", "").split(",");
}

this.settings.http_success = http_status_codes;
this.callFlash("SetHTTPSuccess", [http_status_codes]);
};

SWFUpload.prototype.setAssumeSuccessTimeout = function (timeout_seconds) {
this.settings.assume_success_timeout = timeout_seconds;
this.callFlash("SetAssumeSuccessTimeout", [timeout_seconds]);
};

SWFUpload.prototype.setDebugEnabled = function (debugEnabled) {
this.settings.debug_enabled = debugEnabled;
this.callFlash("SetDebugEnabled", [debugEnabled]);
};

SWFUpload.prototype.setButtonImageURL = function (buttonImageURL) {
if (buttonImageURL == undefined) {
buttonImageURL = "";
}

this.settings.button_image_url = buttonImageURL;
this.callFlash("SetButtonImageURL", [buttonImageURL]);
};

SWFUpload.prototype.setButtonDimensions = function (width, height) {
this.settings.button_width = width;
this.settings.button_height = height;

var movie = this.getMovieElement();
if (movie != undefined) {
movie.style.width = width + "px";
movie.style.height = height + "px";
}

this.callFlash("SetButtonDimensions", [width, height]);
};
SWFUpload.prototype.setButtonText = function (html) {
this.settings.button_text = html;
this.callFlash("SetButtonText", [html]);
};
SWFUpload.prototype.setButtonTextPadding = function (left, top) {
this.settings.button_text_top_padding = top;
this.settings.button_text_left_padding = left;
this.callFlash("SetButtonTextPadding", [left, top]);
};

SWFUpload.prototype.setButtonTextStyle = function (css) {
this.settings.button_text_style = css;
this.callFlash("SetButtonTextStyle", [css]);
};
SWFUpload.prototype.setButtonDisabled = function (isDisabled) {
this.settings.button_disabled = isDisabled;
this.callFlash("SetButtonDisabled", [isDisabled]);
};
SWFUpload.prototype.setButtonAction = function (buttonAction) {
this.settings.button_action = buttonAction;
this.callFlash("SetButtonAction", [buttonAction]);
};

SWFUpload.prototype.setButtonCursor = function (cursor) {
this.settings.button_cursor = cursor;
this.callFlash("SetButtonCursor", [cursor]);
};



SWFUpload.prototype.queueEvent = function (handlerName, argumentArray) {

if (argumentArray == undefined) {
argumentArray = [];
} else if (!(argumentArray instanceof Array)) {
argumentArray = [argumentArray];
}

var self = this;
if (typeof this.settings[handlerName] === "function") {
this.eventQueue.push(function () {
this.settings[handlerName].apply(this, argumentArray);
});

setTimeout(function () {
self.executeNextEvent();
}, 0);

} else if (this.settings[handlerName] !== null) {
throw "Event handler " + handlerName + " is unknown or is not a function";
}
};

SWFUpload.prototype.executeNextEvent = function () {

var  f = this.eventQueue ? this.eventQueue.shift() : null;
if (typeof(f) === "function") {
f.apply(this);
}
};

SWFUpload.prototype.unescapeFilePostParams = function (file) {
var reg = /[$]([0-9a-f]{4})/i;
var unescapedPost = {};
var uk;

if (file != undefined) {
for (var k in file.post) {
if (file.post.hasOwnProperty(k)) {
uk = k;
var match;
while ((match = reg.exec(uk)) !== null) {
uk = uk.replace(match[0], String.fromCharCode(parseInt("0x" + match[1], 16)));
}
unescapedPost[uk] = file.post[k];
}
}

file.post = unescapedPost;
}

return file;
};

SWFUpload.prototype.testExternalInterface = function () {
try {
return this.callFlash("TestExternalInterface");
} catch (ex) {
return false;
}
};

SWFUpload.prototype.flashReady = function () {
var movieElement = this.getMovieElement();

if (!movieElement) {
this.debug("Flash called back ready but the flash movie can't be found.");
return;
}

this.cleanUp(movieElement);

this.queueEvent("swfupload_loaded_handler");
};

SWFUpload.prototype.cleanUp = function (movieElement) {
try {
if (this.movieElement && typeof(movieElement.CallFunction) === "unknown") { // We only want to do this in IE
this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");
for (var key in movieElement) {
try {
if (typeof(movieElement[key]) === "function") {
movieElement[key] = null;
}
} catch (ex) {
}
}
}
} catch (ex1) {

}

window["__flash__removeCallback"] = function (instance, name) {
try {
if (instance) {
instance[name] = null;
}
} catch (flashEx) {

}
};

};



SWFUpload.prototype.fileDialogStart = function () {
this.queueEvent("file_dialog_start_handler");
};



SWFUpload.prototype.fileQueued = function (file) {
file = this.unescapeFilePostParams(file);
this.queueEvent("file_queued_handler", file);
};



SWFUpload.prototype.fileQueueError = function (file, errorCode, message) {
file = this.unescapeFilePostParams(file);
this.queueEvent("file_queue_error_handler", [file, errorCode, message]);
};


SWFUpload.prototype.fileDialogComplete = function (numFilesSelected, numFilesQueued, numFilesInQueue) {
this.queueEvent("file_dialog_complete_handler", [numFilesSelected, numFilesQueued, numFilesInQueue]);
};

SWFUpload.prototype.uploadStart = function (file) {
file = this.unescapeFilePostParams(file);
this.queueEvent("return_upload_start_handler", file);
};

SWFUpload.prototype.returnUploadStart = function (file) {
var returnValue;
if (typeof this.settings.upload_start_handler === "function") {
file = this.unescapeFilePostParams(file);
returnValue = this.settings.upload_start_handler.call(this, file);
} else if (this.settings.upload_start_handler != undefined) {
throw "upload_start_handler must be a function";
}

if (returnValue === undefined) {
returnValue = true;
}

returnValue = !!returnValue;

this.callFlash("ReturnUploadStart", [returnValue]);
};



SWFUpload.prototype.uploadProgress = function (file, bytesComplete, bytesTotal) {
file = this.unescapeFilePostParams(file);
this.queueEvent("upload_progress_handler", [file, bytesComplete, bytesTotal]);
};

SWFUpload.prototype.uploadError = function (file, errorCode, message) {
file = this.unescapeFilePostParams(file);
this.queueEvent("upload_error_handler", [file, errorCode, message]);
};

SWFUpload.prototype.uploadSuccess = function (file, serverData, responseReceived) {
file = this.unescapeFilePostParams(file);
this.queueEvent("upload_success_handler", [file, serverData, responseReceived]);
};

SWFUpload.prototype.uploadComplete = function (file) {
file = this.unescapeFilePostParams(file);
this.queueEvent("upload_complete_handler", file);
};


SWFUpload.prototype.debug = function (message) {
this.queueEvent("debug_handler", message);
};




SWFUpload.prototype.debugMessage = function (message) {
if (this.settings.debug) {
var exceptionMessage, exceptionValues = [];

if (typeof message === "object" && typeof message.name === "string" && typeof message.message === "string") {
for (var key in message) {
if (message.hasOwnProperty(key)) {
exceptionValues.push(key + ": " + message[key]);
}
}
exceptionMessage = exceptionValues.join("\n") || "";
exceptionValues = exceptionMessage.split("\n");
exceptionMessage = "EXCEPTION: " + exceptionValues.join("\nEXCEPTION: ");
SWFUpload.Console.writeLine(exceptionMessage);
} else {
SWFUpload.Console.writeLine(message);
}
}
};

SWFUpload.Console = {};
SWFUpload.Console.writeLine = function (message) {
var console, documentForm;

try {
console = document.getElementById("SWFUpload_Console");

if (!console) {
documentForm = document.createElement("form");
document.getElementsByTagName("body")[0].appendChild(documentForm);

console = document.createElement("textarea");
console.id = "SWFUpload_Console";
console.style.fontFamily = "monospace";
console.setAttribute("wrap", "off");
console.wrap = "off";
console.style.overflow = "auto";
console.style.width = "700px";
console.style.height = "350px";
console.style.margin = "5px";
documentForm.appendChild(console);
}

console.value += message + "\n";

console.scrollTop = console.scrollHeight - console.clientHeight;
} catch (ex) {
alert("Exception: " + ex.name + " Message: " + ex.message);
}
};



var SWFUpload;
if (typeof(SWFUpload) === "function") {
SWFUpload.queue = {};

SWFUpload.prototype.initSettings = (function (oldInitSettings) {
return function () {
if (typeof(oldInitSettings) === "function") {
oldInitSettings.call(this);
}

this.queueSettings = {};

this.queueSettings.queue_cancelled_flag = false;
this.queueSettings.queue_upload_count = 0;

this.queueSettings.user_upload_complete_handler = this.settings.upload_complete_handler;
this.queueSettings.user_upload_start_handler = this.settings.upload_start_handler;
this.settings.upload_complete_handler = SWFUpload.queue.uploadCompleteHandler;
this.settings.upload_start_handler = SWFUpload.queue.uploadStartHandler;

this.settings.queue_complete_handler = this.settings.queue_complete_handler || null;
};
})(SWFUpload.prototype.initSettings);

SWFUpload.prototype.startUpload = function (fileID) {
this.queueSettings.queue_cancelled_flag = false;
this.callFlash("StartUpload", [fileID]);
};

SWFUpload.prototype.cancelQueue = function () {
this.queueSettings.queue_cancelled_flag = true;
this.stopUpload();

var stats = this.getStats();
while (stats.files_queued > 0) {
this.cancelUpload();
stats = this.getStats();
}
};

SWFUpload.queue.uploadStartHandler = function (file) {
var returnValue;
if (typeof(this.queueSettings.user_upload_start_handler) === "function") {
returnValue = this.queueSettings.user_upload_start_handler.call(this, file);
}

returnValue = (returnValue === false) ? false : true;

this.queueSettings.queue_cancelled_flag = !returnValue;

return returnValue;
};

SWFUpload.queue.uploadCompleteHandler = function (file) {
var user_upload_complete_handler = this.queueSettings.user_upload_complete_handler;
var continueUpload;

if (file.filestatus === SWFUpload.FILE_STATUS.COMPLETE) {
this.queueSettings.queue_upload_count++;
}

if (typeof(user_upload_complete_handler) === "function") {
continueUpload = (user_upload_complete_handler.call(this, file) === false) ? false : true;
} else if (file.filestatus === SWFUpload.FILE_STATUS.QUEUED) {
continueUpload = false;
} else {
continueUpload = true;
}

if (continueUpload) {
var stats = this.getStats();
if (stats.files_queued > 0 && this.queueSettings.queue_cancelled_flag === false) {
this.startUpload();
} else if (this.queueSettings.queue_cancelled_flag === false) {
this.queueEvent("queue_complete_handler", [this.queueSettings.queue_upload_count]);
this.queueSettings.queue_upload_count = 0;
} else {
this.queueSettings.queue_cancelled_flag = false;
this.queueSettings.queue_upload_count = 0;
}
}
};
}
