
<!-- //

/**
 *	mediaTable.js
 *
 *	@author: gg@seso.at
 */



function rbm_mediaTable(name) {
	
	var self = this;
	
	this.name = name;

	
	/* CONFIG */
	
	var config = [];
		
		config['imgPath']         = "../imgs/community/";
		config['container']       = "mediaTableContainer";
		config['paginatorTop']    = "paginatorContainerTop";
		config['paginatorBottom'] = "paginatorContainerBottom";
		config['timeline']        = "timelineContainer";
                config['search']          = "searchContainer";



	var state = [];
		
		state['count'] = 0;
		state['actPage'] = 1;
		state['pages'] = 0;

		state['limit'] = 15;
		state['beginDate'] = "2008-01-01";
		state['endDate'] = "2008-12-31";
		
		state['mediaDetails'] = true;
		state['showPublic'] = true;
		state['showPrivate'] = true;
				
		state['showType'] = 'all';
		state['sortBy'] = 'date';
		state['showSelect'] = false;
		state['year'] = 0;
		state['showPriv'] = false;
		state['mt_type'] = 'small';

                state['action'] = "";
		
	var controllState = [];
	
		controllState['img'] = false;
		controllState['mov'] = false;
		
		controllState['rotate'] = false;
		controllState['privileg'] = false;
		controllState['delete'] = false;
	


	var moods = [];
		moods[1] = "fr&ouml;hlich";
		moods[2] = "traurig";
		moods[3] = "b&ouml;se";
		moods[4] = "genervt";
		moods[5] = "frech";
		moods[6] = "nachdenklich";
		moods[7] = "verliebt";
		moods[8] = "cool";
		moods[9] = "m&uuml;de";
		moods[10] = "gelangweilt";
		moods[11] = "verwirrt";
		moods[12] = "&uuml;berrascht";


	var dataCache = [];
	
	var voteSend = false;
	
	var selectedIds = [];
	
        var actMoodId = 1;


	this.setState = function(attr, value) {
		
		state[attr] = value;
	}



	this.init = function() {

		var url = document.URL.split('#');

		if (url[1]) {

			var params = url[1].split('&');

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

				p = params[i].split('=');

				if (p[1] == 'true') p[1] = true;
				else if (p[1] == 'false') p[1] = false;

				if (p[0] != 'RBM') self.setState(p[0], p[1]);
			}

			if (document.getElementById('check_public')) {

				document.getElementById('check_public').checked = (state['showPublic']) ? true : false;
			}

			if (document.getElementById('check_private')) {

				document.getElementById('check_private').checked = (state['showPrivate']) ? true : false;
			}

			if (document.getElementById('check_details')) {

				document.getElementById('check_details').checked = (state['mediaDetails']) ? true : false;
			}

			if (document.getElementById('select_sortieren'))
				selectIndex('select_sortieren', state['sortBy']);

			if (document.getElementById('select_medientyp'))
				selectIndex('select_medientyp', state['showType']);
		}

		loadTimeLine();
                
                self.setYear(state['year']);

		ajax.sendRequest(getStateParams(), self.name+".setData();", 0);
	}



	function selectIndex(id, value) {

		var opts = document.getElementById(id).getElementsByTagName('OPTION');

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

			if (opts[i].getAttribute('value') == value) {

				opts[i].selected = true;
			}
		}

		return -1;
	}
	
	

	function setHash() {

		var r = "RBM";

		for (p in state) {

			r += "&"+p+"="+state[p];
		}

		location.hash = r;
	}


	
	
	function loadTimeLine() {
		
		var swf = new SWFObject("../flash/timeline.swf", "rbm_flash_timeline", "110", "35", "9");
			swf.addParam("quality", "high");
			swf.addParam("wmode", "transparent");
			swf.addParam("allowScriptAccess", "always");
			swf.addParam("FlashVars", "objectName="+self.name+"&showYear="+state['year']+"&beginDate="+state['beginDate']+"&endDate="+state['endDate']+"&activate=false");
			swf.write(config['timeline']);
	}
	
	
	
	this.setYear = function(y) {

		var obj = document.getElementById('rbm_flash_timeline');
                state['year'] = y;
                self.setDateRange(y+"-01-01", y+"-12-31");
		
		if (y === '0') {
			
			if (obj.exists) {
				
				obj.deactivateSlider();
			}
		}
		
		else {
			
			if (obj.exists) {
				
				obj.activateSlider();
				obj.timelineSetYear(y);
			}
	
			
		}
	}	
	
	
	this.setData = function() {
		
		var response = ajax.getResponse();
		
		state['count'] = response.getElementsByTagName('count')[0].firstChild.nodeValue;
		
		dataCache = self.parseXML(response.getElementsByTagName('item'));
		
		draw();
		
		setStateElements();
		
		if (state['showSelect'] === true) setControllState();
	}

	
		
	this.parseXML = function(xml) {

		var node, obj = null;

		var list = new Array();
		
		for (var i=0; i<xml.length; i++) {
			
			obj = new Object();
			
			node = xml[i].firstChild;
			
			do {
				
				if (node.firstChild) {
				
					obj[node.nodeName] = node.firstChild.nodeValue;
				}
			}
			
			while (node = node.nextSibling);

			list.push(obj);
		}
		
		return list;
	}
	
	
	
	function setStateElements() {
		
		
		var p = state['count'] / state['limit'];
		
		if (p%1 > 0) p += 1;
		
		state['pages'] = Math.floor(p);


		// PAGEINATOR

		var container = document.createElement('DIV');
		
		container.innerHTML = "";
		
		var paginatorBottom = document.getElementById(config['paginatorBottom']);
				
		if (paginatorBottom) paginatorBottom.innerHTML = "";
		
		var paginatorTop = document.getElementById(config['paginatorTop']);
				
		if (paginatorTop) paginatorTop.innerHTML = "";

		
		if (state['pages'] > 0) {
		
			container.appendChild(document.createTextNode("Seite "));
			
			if (1 < state['actPage']) {
				
				container.appendChild(createPageLink(1, "<<"));
				container.appendChild(createPageLink(state['actPage']-1, "<"));
			}
			
			
			if (state['pages'] == 1) {
				
				start = end = 1;
			}
			
			else if (state['pages'] == 2) {
				
				start = 1;
				end = 2;
			}
			
			else if (state['pages'] == 3) {

				start = 1;
				end = 3;
			}

			else {
			
				var start = state['actPage']-1;
				
				if (start < 1) start = 1;
				
				var end = start+2;
		
				if (end > state['pages']) {
					
					end = state['pages'];
					start = end-2;
				}
			}
	
			
			for (var i=start; i<=end; i++) {

				container.appendChild(createPageLink(i));
			}

			if (state['pages']-3 > state['actPage']) {

				container.appendChild(document.createTextNode(" ... "));
			}

			if (state['pages']-2 > state['actPage']) {

				container.appendChild(createPageLink(state['pages']));
			}

			if (state['pages'] > state['actPage']) {

				container.appendChild(createPageLink(state['actPage']+1, ">"));
				container.appendChild(createPageLink(state['pages'], ">>"));
			}


			var container2 = container.cloneNode(true);

			if (paginatorTop) {

				paginatorTop.appendChild(container);
			}

			if (paginatorBottom) {

				if (parseInt(state['count']) >= parseInt(state['limit']) && ((state['mt_type'] == 'small' && state['limit'] >= 15) || (state['mt_type'] == 'big' && state['limit'] >= 30))) {
	
					paginatorBottom.appendChild(container2);
				}
			}
		}
	}
	
	
	
	
	function createPageLink(index, text) {
		
		var span = document.createElement('SPAN');
			
		if (index == state['actPage']) {
			
			span.className = "blue";	
			span.appendChild(document.createTextNode(index));			
		}
		
		else {

			var link = document.createElement('A');
				link.href = 'javascript:'+self.name+".changeState('actPage',"+index+");";
				link.title = 'Seite '+index;
				
			var t = (text) ? text : index;
				
			link.appendChild(document.createTextNode(t));
			
			span.appendChild(link);
		}
		
		return span;
	}
	
	
	
	this.changeState = function(attr, value) {

		state[attr] = value;
		
		if (attr == 'limit' || attr == 'showType' || attr == 'showPublic' || attr == 'showPrivate') {
			
			state['actPage'] = 1;
		}		
		
		if (attr == 'mediaDetails') {
		
			showMediaDetails(value);
                        setHash();
		}
		
		else  {
                        setHash();
			ajax.sendRequest(getStateParams(), self.name+".setData();", 0);
		}
	}
	
	
	
	function showMediaDetails(flag) {

		ajax.sendRequest("action=ajax_livecontent&mediaDetailsFlag="+flag, self.name+".emptyResponse();", 0);

		var node = document.getElementById(config['container']).firstChild;

		do {

			node.getElementsByTagName('DIV')[0].style.display = (flag==true) ? 'block' : 'none';
		}

		while (node = node.nextSibling);
	}


	this.emptyResponse = function() {

		var r = ajax.getResponse();
	}

	
	
	
	function getStateParams() {

		var r = "page=community";
		
		for (p in state) {
			
			r += "&"+p+"="+state[p];
		}
		
		return r;
	}
	
	
	
	function draw() {
		
		var data = dataCache;
		
		document.getElementById(config['container']).innerHTML = "";
		
		if (data.length > 0) {
		
			for (var i=0; i<data.length; i++) {
				
				var item = data[i];
				
				var img = new Image();
					img.src = item.thumb;
				
				
				var box = document.createElement('DIV');
					box.className = "mediaBox";
					
				var thumb = document.createElement('IMG');
					thumb.src = img.src;
					thumb.alt = item.desc;
					thumb.width = 126;
					thumb.height = 78;
				
				if (item.href) {
				
					var link = document.createElement('A');
						link.href = item.href;
						if (item.desc) link.title = item.desc;
						
						link.appendChild(thumb);
						
						box.appendChild(link);
				}
				
				else {
					
					box.appendChild(thumb);
				}

				var title = document.createElement('H3');
					title.innerHTML = (item.title) ? item.title : '&nbsp;';
					
				box.appendChild(title);
				
				var detail = document.createElement('DIV');
					detail.style.display = (state['mediaDetails'] == true) ? 'block' : 'none';
					detail.style.position = 'relative';

				if (state['showPriv']) {
														
					var ico = document.createElement('IMG');
					
					var src = (item.publ == 'true') ? 'oeffentlich_setzen.png' : 'privat_setzen.png';

						ico.src = config['imgPath']+"../icons/" + src;
						ico.width = '12';
						ico.height = '15';
						ico.style.position = 'absolute';
						
					detail.appendChild(ico);
					
					var sta = document.createElement('DIV');
						sta.innerHTML = (item.publ == 'true') ? unescape('&ouml;ffentlich') : 'privat';
						sta.style.paddingLeft = '17px';
						sta.style.paddingBottom = '3px';
						
					detail.appendChild(sta);
				}
				
				
				var len = document.createElement('P');
					len.innerHTML = (item.len) ? item.len+'&nbsp;' : '';

					if (item.user) len.innerHTML += "<span class='grey'>von&nbsp;</span><a href='"+encodeURI(item.userLink)+"'>"+item.user+"</a>";
					
					if (!item.user && !item.len) len.innerHTML += '&nbsp;';
			
				detail.appendChild(len);

				
				
				var add = document.createElement('P');
					
				var addSpan = document.createElement('SPAN');
					addSpan.className = "grey";
					addSpan.innerHTML = "hinzugef&uuml;gt:&nbsp;" 
	
				add.appendChild(addSpan);
				
				add.appendChild(document.createTextNode(item.date));
				
				detail.appendChild(add);
				
				
				var voting = document.createElement('P');
				
				var vote = Math.floor(item.vote);
				
				for (var s=1; s<=5; s++) {
					
					src = (s<=vote) ? "star_act.png" : "star.png";
	
					star = document.createElement('IMG');
					star.src = config['imgPath']+src;
					star.alt = "star";
					star.className = "star";
					
					voting.appendChild(star);
				}
				
				var voteSpan = document.createElement('SPAN');
					voteSpan.innerHTML = '&nbsp;'+item.voteNum;
				
				voting.appendChild(voteSpan);
				
				detail.appendChild(voting);
				
				
				var call = document.createElement('P');
					
				var callSpan = document.createElement('SPAN');
					callSpan.className = "grey";
					callSpan.innerHTML = "Aufrufe:&nbsp;"
					
				call.appendChild(callSpan);
	
				call.appendChild(document.createTextNode(item.calls));
				
				detail.appendChild(call);
				
				box.appendChild(detail);
				
				
				
				if (state['showSelect'] === true) {
					
					var sel = document.createElement('DIV');
					
					var inp = document.createElement('INPUT');
						inp.className = "zero";
						inp.type = "checkbox";
						inp.id = "select_"+item.id;
						inp.value = 1;
						
						if (env.isIE) {
					
							inp.attachEvent("onclick", self.selectMedia);
						}
							
						else {
							
							inp.onclick = self.selectMedia;
						}
						
					sel.appendChild(inp);
						
					var lab = document.createElement('LABEL'); 
						lab['for'] = "select_"+item.id;
						lab.appendChild(document.createTextNode("Auswählen"));
						
					sel.appendChild(lab);
					
					box.appendChild(sel);
				}		
	
				document.getElementById(config['container']).appendChild(box);
			}
		}
		
		else {
			
			if (document.getElementById(config['search'])) document.getElementById(config['search']).display = 'block';
		}
	}
	
	
	
	this.setDateRange = function(begin, end) {
		
		state['beginDate'] = begin;
		state['endDate'] = end;
		
		ajax.sendRequest(getStateParams(), self.name+".setData();", 0);

		setHash();
	}
	
	
	
	this.selectMedia = function(e) {
		
		checkMediaSelection();
	}
	
	
	
	function checkMediaSelection() {
		
		controllState['img'] = controllState['mov'] = 0;
		
		selectedIds = [];		
		
		var node = document.getElementById(config['container']).firstChild;
		
		do {
			
			var check = node.getElementsByTagName('INPUT')[0];

			if (check && check.checked == true) {
				
				var id = check.id.split('_');
					id = id[1];
					
					selectedIds.push(id);
					
				var media = getCacheElementById(id);
				
				controllState[media.type]++;
			}
		}
			
		while (node = node.nextSibling);
		
		
		if (controllState['mov'] + controllState['img'] == 0) {
			
			controllState['rotate'] = false;
			controllState['privileg'] = false;
			controllState['delete'] = false;
		}
		
		else {
			
			if (controllState['img'] > 0) {
				
				controllState['rotate'] = true;
				controllState['privileg'] = true;
				controllState['delete'] = true;
			}
			
			if (controllState['mov'] > 0) {
				
				controllState['rotate'] = false;
				controllState['privileg'] = true;
				controllState['delete'] = true;
			}
		}
			
		setControllState();	
	}
	
	
	
	function getCacheElementById(id) {
		
		for (var i=0; i<dataCache.length; i++) {
			
			if (dataCache[i].id == id) return dataCache[i]; 
		}
		
		return null;
	}
	
	
	
	this.selectAll = function(flag) {

		var node = document.getElementById(config['container']).firstChild;
		
		do {

			node.getElementsByTagName('INPUT')[0].checked = (flag==true) ? 'checked' : '';
		}
			
		while (node = node.nextSibling);
		
		checkMediaSelection();
	}
	
	
	
	function setControllState() {
		
		var node, d;
		
		var deck = document.createElement('DIV');
			deck.className = "controllDeck";
		
		for (c in controllState) {
			
			node = document.getElementById('controll_'+c);
			
			if (node) {
				
				d = document.getElementById('deck_'+c);
				
				if (d) {
					
					if (controllState[c] == true) {
					
						d.parentNode.removeChild(d);
					}
				}
				
				else if (controllState[c] == false) {
					
					d = deck.cloneNode(false);
					d.id = 'deck_'+c;
					d.style.height = node.offsetHeight + 'px';
					d.style.width = node.offsetWidth + 'px';
					d.style.top = node.offsetTop + 'px';
					d.style.left = node.offsetLeft + 'px';
						
					node.parentNode.appendChild(d);
				}
			}
		}
	}
	
	
	this.performAction = function(urlBase) {
		
		var id = "&ids=";
		
		for (var i=0; i<selectedIds.length; i++) {
			
			id += selectedIds[i] + ';';
		}
		
		window.location = encodeURI(urlBase+'&'+getStateParams()+id);
	}
	
	
	
	this.sendMediaVoting = function(voting) {

		if (voteSend == false) {
		
			ajax.sendRequest("action=contentVoting&voting="+voting, self.name+".checkMediaVoting();", 0);
			voteSend = true;
		}
		
	}
	
	

	this.checkMediaVoting = function() {
		
		ajax.getResponse();
		
		document.getElementById('voting_success').style.display = 'inline';
	}
	

	
	
	this.vote = function(img_id) {
		
		if (voteSend == false) {

			for (i=1; i <= img_id; i++) {
	
				document.getElementById('vote_img_'+i).src = '../imgs/community/star_big_act.png';
			}
		}
	}
	
	
	
	this.clearVote = function() {
	
		if (voteSend == false) {
	
			for (i=1; i <= 5; i++) {
	
				document.getElementById('vote_img_'+i).src = '../imgs/community/star_big.png';
			}
		}
	}
	

	
	this.performLogin = function() {
		
		var nr = document.getElementById('login_rufnummer').value;
		var code = document.getElementById('login_sms').value;
                var dynParams = document.getElementById('dyn_params').value;
		var save = document.getElementById('login_save').checked;
		
		ajax.sendRequest("action=performLogin&number="+nr+"&smsCode="+code+"&saveLogin="+save+dynParams, self.name+".checkLogin();", 0);
	}
	
	
	
	this.requestCode = function() {
		
		var nr = document.getElementById('login_rufnummer').value;
		var code = document.getElementById('login_sms').value;
		
		ajax.sendRequest("action=requestCode&number="+nr+"&smsCode="+code, self.name+".checkLogin();", 0);
	}
	
	
	
	this.checkLogin = function() {
		
		var response = ajax.getResponse();

		var msg = response.getElementsByTagName('message')[0];
		
		document.getElementById('errorContainer').className = (msg.getAttribute('state') == 'success') ? 'success' : '';

		if (msg.firstChild) document.getElementById('errorContainer').innerHTML = "<p>"+msg.firstChild.nodeValue+"</p>";
		
		if (response.getElementsByTagName('nextPage')[0]) {

			var next = response.getElementsByTagName('nextPage')[0].firstChild;

			if (next) window.location = encodeURI(next.nodeValue);
		}
	}
	
	this.moodState = function(actId) {

		var imgs = document.getElementById('moodContainer').getElementsByTagName('IMG');

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

			id = imgs[i].getAttribute('id').split('_')[1];

			if (id == actId) {

				imgs[i].setAttribute('src', config['imgPath']+"mood_"+id+"_b.png");
				document.getElementById('moodState').innerHTML = unescape(moods[id]);
				document.getElementById('input_moodState').value = id;
			}

			else {

				imgs[i].setAttribute('src', config['imgPath']+"mood_"+id+"_.png");
			}
		}
	}


	this.setMoodState = function(actId) {

		if (actId>0) actMoodId = actId;
	}


	this.resetMoodState = function() {

		self.moodState(actMoodId);
	}



	this.checkSearch = function(formId) {

		var f = document.getElementById(formId);
		var v = document.getElementById('input_suche').value;

		if (v == 'Suchbegriff' || v.length < 3) {

			document.getElementById('searchError').innerHTML = "<p>Der Suchbegriff muss mindestens 3 Zeichen enthalten!</p>";
		}

		else {
                        
                        if (document.getElementById('community_search').value == '1') {
                          document.getElementById('mt_forsearch').value = "private";
                        }

			if (document.getElementById('rbm_anzeigeoptionenTeaser')) {

				for (p in state) {
                                        if (p != 'action') {
                                            var input = document.createElement('INPUT');
                                                    input.type = 'hidden';
                                                    input.name = p;
                                                    input.value = state[p];

                                            f.appendChild(input);
                                            }
				}
			}

			f.submit();
		}
	}



	
}	


// -->
