/*
    Document   : nslib.js
    Created on : 2009-03-26, 10:16:30
    Author     : Witold Graca
*/

/**
 *
 *
 *
 *
 */
function menuSwitch(param) {
	try {
	$$('#menu .mmenu').each(function(item){
		item.style.display = 'none';
	});

	$(param).style.display = 'block';
	($('mmenu').select("li")).each(function (item) {
		item.setStyle("background: url(images/common/b7_off.png) no-repeat");
	});

	$(param+'m').setStyle("background: url(images/common/b7_on.png) no-repeat");
	} catch (err) {
	}

}


var TComboBox = new Class.create({
	initialize: function(id) {
		try {
			this.combo = $(id);
			this.menu = new Element("div",{
				"class": "TComboBoxSelect",
				"id": this.combo.id+"_select"
			});
			this.label = (this.combo.select('.TComboBoxLabel'))[0];
			this.flagImg = (this.label.select('.TComboBoxFlag'))[0];
			this.labelText = (this.label.select('.TComboBoxText'))[0];
			this.onOptionSelectedListener = null;
			this.combo.observe('click',this._onMouseClick.bind(this));
			this.menu.observe('mouseleave',this._onMouseLeave.bind(this));
			this._c = new Array();
		} catch (err) {
			
		}
	},

	_onMouseClick: function (event) {
		if (this.menu) {
			var position = this.combo.cumulativeOffset();

			this.menu.absolutize();
			this.menu.setStyle({"display": "block","width": this.combo.getWidth()+"px"});
			this.menu.style.top = position['top'] + this.combo.getHeight() + "px";
			this.menu.style.left = position['left'] + "px";
		}
	},

	_onMouseLeave: function (event) {
		this.menu.setStyle({"display": "none"});
	},

	_onOptionSelected: function(event) {

	},

	_buildSubmenu: function(){
		ul = new Element("ul");
		len = this._c.size();
		for (i=0; i<len;i++) {
			
			if (this._c[i].active==1) {
				//alert(this._c[i].active + ' ' + this._c[i].label + ' ' + this.flagImg + ' ' + this.labelText);
				this.flagImg.src = this._c[i].img;
				this.labelText.innerHTML = this._c[i].label;
			}

			a = new Element ("a");
			a.href = "javascript:void(0)";
			a.observe("click",this.onOptionSelectedListener.bind(this,this._c[i]));

			// this is image reading
			img = new Element("img",{"style":"margin-left: 5px;margin-right:5px;"});
			img.src = this._c[i].img;
			a.insert(img);

			// this is text reading
			li = new Element("li", {"class": "TComboBoxOption"});
			a.insert(this._c[i].label);

			li.insert(a);

			//alert(li + " " + img);
			ul.insert(li);
		}

		try {
			this.menu.insert(ul);
			($$('body'))[0].insert(this.menu);
		} catch (err) {
			
		}
		return ul;
	},

	config: function(c) {
		this._c = c;
		this._buildSubmenu();
	},

	addOptionSelectedListener: function (listener) {
		this.onOptionSelectedListener = listener;
	}


});


// namespace for news
var RNews = function() {
	return {
		init: function() {
			try {
				RNews.changeViewType();
				RNews.changePageCategory();
			} catch (err) {
				
			}

			($('mainlayer').select('[id^=bar]')).each(function(item) {

				item.observe('click',function(event) {
					var el = event.element();
					// continue
					var idString = (el.up('.TBar')) ? (el.up('.TBar')).identify() : el.identify();

					(el.up('#mainlayer').select('.TPanel')).each(function (item) {
						item.setStyle({"display": "none"});
					});

					$('pane'+idString.substr(3, 5)).setStyle({"display": "block"});
				});
			});

			// set firs occurence
			$('pane04').setStyle({"display": "block"});
			RNews.loadNewsList(0,null,'pane04');
			
			$("icon").observe('click', function(event) {
				window.open("/cms/libs/testdialog.php","mywindow","menubar=0,resizable=1,width=840,height=800,scrollbars=1");
			});
			
			$("addicon").observe('click', function(event) {
				window.open("/cms/libs/testdialog.php","mywindow","menubar=0,resizable=1,width=840,height=800,scrollbars=1");
			});
			
			$("clearicon").observe('click', function(event) {
				$('icon').value="";
			});
		},
		
		unblockStatusList: function() {
			var li = $('status_list').select('input[type=radio]');
			
			for (var i=0, len = li.length; i < len; i++) {
				li[i].disabled = (li[i].disabled==false) ? true : false;
			}
		},
		
		rejectComment: function(commentID) {
			new Ajax.Request('execute.php',{
				evalJSON: true,
				method: 'post',
				parameters: 'q=news&a=reject-comment&v='+commentID,
				onSuccess: function(transport) {
					json = transport.responseText.evalJSON();
					RNews.loadComments(0,0);
				}
			});

			
		},

		acceptStared: function(commentID) {
			new Ajax.Request('execute.php',{
				evalJSON: true,
				method: 'post',
				parameters: 'q=news&a=accept-stared&v='+commentID,
				onSuccess: function(transport) {
					json = transport.responseText.evalJSON();
					RNews.loadNewsList(0,3,'pane06');
				}
			});
			
		},
		rejectStared: function(commentID) {
			new Ajax.Request('execute.php',{
				evalJSON: true,
				method: 'post',
				parameters: 'q=news&a=reject-stared&v='+commentID,
				onSuccess: function(transport) {
					json = transport.responseText.evalJSON();
					RNews.loadNewsList(0,3,'pane06');
				}
			});

			
		},

		acceptComment: function(commentID) {
			new Ajax.Request('execute.php',{
				evalJSON: true,
				method: 'post',
				parameters: 'q=news&a=accept-comment&v='+commentID,
				onSuccess: function(transport) {
					json = transport.responseText.evalJSON();
					RNews.loadComments(0,0);
				}
			});
			
		},
		
		loadNewsList: function (param, status,pane) {
				var cat = $('current_category').value;
				// setting status
				var s='';
				if (status) {
					s = '&status='+status;
				}
				
				
				new Ajax.Updater(pane,'execute.php',{
					method: 'post',
					parameters: "q=news&a=list&limit=10&c="+cat+"&page="+param+s,
					evalScripts: true,
					onComplete: function(p) {
						var less = ($(pane).select('.x-ttable-less')[0]).observe('click',function(event){
							var el = (event.element()).up('tfoot');
							current = parseInt($F(el.select("input[id=x-ttable-page-2]")[0]));
							total = parseInt($F(el.select("input[id=x-ttable-total-2]")[0]));
							//alert("Less");
							if ((current-1) >= 0)
								RNews.loadNewsList((current-1)*1,status,pane);
						});
						var more = ($(pane).select('.x-ttable-more')[0]).observe('click',function(event){
							var el = (event.element()).up('tfoot');
							current = parseInt($F(el.select("input[id=x-ttable-page-2]")[0]));
							total = parseInt($F(el.select("input[id=x-ttable-total-2]")[0]));
							//alert(el + ' - ' + current + ' - ' + total);
							//alert("More");
							if ((current+1) < total)
								RNews.loadNewsList((current+1),status,pane);
						});
					}
				});
			},

			loadComments: function (param,status) {
				var items = $$('#pane01 input[type=radio]');
				var cat = 0;

				if (items.length > 0) {
					for(var i=0, len=items.length;i< len;i++) {
						if (items[i].checked)
							cat = items[i].value;
					}
				} else {
					cat = $('current_category').value;
				}

				new Ajax.Updater('pane05content','execute.php',{
					method: 'post',
					parameters: "q=news&a=list-comments&limit=10&c="+cat+"&page="+param+"&status="+status,
					evalScripts: true,
					onComplete: function(p) {
						var less = ($('x-foot-1').select('.x-ttable-less'))[0].observe('click',function(event){
							current = parseInt($F('x-ttable-page-1'));
							total = parseInt($F('x-ttable-total-1'));
							//alert("Less");
							if ((current-1) >= 0)
								RNews.loadComments((current-1)*1,status);
						});
						var more = ($('x-foot-1').select('.x-ttable-more'))[0].observe('click',function(event){
							current = parseInt($F('x-ttable-page-1'));
							total = parseInt($F('x-ttable-total-1'));
							if ((current+1) < total)
								RNews.loadComments((current+1)*1,status);
						});
					}
				});
			},
		saveNews : function() {
			input = $('nid-id');

			var bEditor = FCKeditorAPI.GetInstance('wysiwyg') ;
			$('wysiwyg').value = bEditor.GetXHTML();
			
			
			if ($F('lead') == '' || $F('wysiwyg') == '' || $F('title') == '' || $F('popupDateField') == ''
				 || $F('source') == '' || $F('author-id') == '') {
				alert("Żadne z pól nie może pozostać puste. Proszę uzupełnić puste pola");
			} else {
				new Ajax.Request('execute.php',{
					evalJSON: true,
					method: 'post',
					parameters: 'q=news&a=save&'+$('news_content').serialize(),
					onSuccess: function(transport) {
						json = transport.responseJSON;
						try {
							$('nid-id').value=json.nid;
							alert("News został zapisany");
							RNews.clear();
							RNews.loadNewsList(0,null,'pane04');
							$('pane03').style.display = 'none';
							$('pane04').style.display = 'block';
						} catch (err) {
							$('nid-id').value = '';
						}
					}
				});
			}
		},
		request : function() {
			var myTemplate = new Template('<tr><td>#{title}</td><td>#{createDate}</td>' +
				'<td>#{pubDate}</td><td>#{categories}</td><td>#{author}'+
				'<input type="hidden" name="nid" value="#{nid}"</td><td>'+
				'<img src="../images/common/edit.png"/ style="cursor:pointer;" onclick="editNews(#{nid})">'+
				'<img onclick="publish(#{nid})" src="../images/common/webexport.png" style="cursor:pointer"/></td></tr>');

			new Ajax.Request('execute.php',{
				encoding:	'utf-8',
				method:	'post',
				evalJSON:	true,
				onSuccess: function(transport,json) {
					//alert(transport.responseText);
					data = transport.responseJSON;
					newslist = $('newsList');
					(newslist.select('tbody > tr')).each(function(item){
						item.remove();
					});

					for (i=0; i< data.items.length; i++) {
						newslist.insert(myTemplate.evaluate(data.items[i]));
					}
				}
			});
		},
		publish : function(nid) {
			alert('Publishing' + nid);
			
			new Ajax.Request('execute.php',{
				parameters: {"nid": nid,"action": "publish"},
				evalJSON: true,
				method: 'post',
				onSuccess: function(transport) {
					alert(transport.responseText);
					/*data = transport.responseText;
					alert(data);*/
				}
			});
		},

		edit : function(nid) {
			//alert('Editing' + nid);
		
			new Ajax.Request('execute.php',{
				parameters: {"nid": nid,"q": "news","a":"edit"},
				evalJSON: true,
				method: 'post',
				onSuccess: function(transport) {
				//alert('starting');
					//alert(transport.responseText);
					data = transport.responseJSON;
					//$('author').value = 'Szly biedronki';
					
					//this is a buggy part... don't know why this is not being displayed
					$('author-id').value = data['author'];				
					$('title').value = data['title'];
					$('source').value = data['source'];
					$('nid-id').value = data['nid'];
					$('icon').value = data['icon'];
					
					
					try {
						var subcats = $('x-subcat').select('option');
						var subcat = data['subcategory'];
						//alert(subcat);
						
						for (var i =0, len = subcats.length; i < len; i++) {
						//	alert(subcat + " " + subcats[i].value + (subcat == subcats[i].value));
							if (subcat == subcats[i].value) {subcats[i].selected = true; break;}
						}
					} catch (err) {
						// skiping when id not definied
					}
					
					
					//alert('this is id value: '  + $('nid-id').value);
					$('popupDateField').value = data['pub_date'];
					
					// this is lead
					$('lead').value = data['lead'].replace('\"', '"');

					// editing wysiwyg
					oEditor = FCKeditorAPI.GetInstance('wysiwyg');
					oEditor.SetHTML(data['body'].replace('\"', '"'));

					// setting up status
					var status_list = $('status_list').select("input[type=radio]");

					for( var i=0, len = status_list.length; i< len; i++) {
						if (status_list[i].value == data['status']) status_list[i].checked = true;
						try {
							if (parseInt(data['status']) >= 2) status_list[i].disabled = true; else status_list[i].disabled = false;
						} catch (err) {
							alert(data['status']);
						}
					}
					
					// setting up proper category
					var clist = $('category_id').select("option");

					for( var i=0, len = clist.length; i< len; i++) {
						if (clist[i].value == data['category_id']) clist[i].selected = true;
					}

					var result='';
					var currentCategory = $('current_category').value
					
					// edit categories
					//for (var i=0; i<data['categories'].length;i++) {
					result = '<input type="hidden" name="categories[]" id="" value="'+ currentCategory +'"/>';
					//}
					($$('ul.categories')[0]).update(result);
					$('pane03').style.display = 'block';
					$('pane04').style.display = 'none';
				}
			});
		},

		deleteNews: function(nid) {
			if (confirm('Czy na pewno chcesz bezpowrotnie usunąć news?')) {
				new Ajax.Request('execute.php',{
					parameters: {"q": "news","a":"delete-news","nid":nid},
					evalJSON: true,
					method: 'post',
					onSuccess: function(transport) {
						var json = transport.responseJSON;

						if (!json) json = transport.responseText.evalJSON();

						if (json.error==0)
							RNews.loadNewsList(0,null,'pane04');
						else
							alert("Wydaj się że coś poczło nie tak. Spróbuj przeładować stronę.");
						// data = transport.responseJSON;
						//alert("Deleting");
					}
				})
			}
		},

		changeViewType: function() {
			$('pane02').select('input[type=radio]').each(function(item) {
				item.observe('change',function(event){
					el = event.element();
					new Ajax.Request('execute.php',{
						evalJSON: true,
						method: 'post',
						parameters: {'q':'news','a':'set-view','nid':$F('nav_id'),'mid':$F('module_id'),'vid':$F(el)},
						onSuccess: function(transport) {
							var json = transport.responseJSON;
							
							if (!json)
								json = transport.responseText.evalJSON();
								
							if (json.result == true) 
								alert("Zmiana typu widoku zakończyła się sukcesem.");
							else 
								alert("Zmiana typu widoku nie powiodła się");
						}
					})
				});
			});
		},
		_pageCategoryEvents: function(item) {
			item.observe('click',function(event){
				//alert('nid' + $('nav_id') + '||' + 'mid' + $('module_id'));
				el = event.element();
				new Ajax.Request('execute.php',{
					evalJSON: true,
					method: 'post',
					parameters: {'q': 'news', 'a':'set-category','nid':$F('nav_id'),'mid':$F('module_id'),'cid':$F(el) },
					onSuccess: function(transport) {
						//alert(transport.responseText);
						window.location.reload();
					}
				})
			});

/*			img = item.up().down('img');
			img.observe('click',function(event){
				var el = event.element();
				input = el.up('li').down('input');
				//alert(input.value);
				if (confirm("Czy na pewno chcesz usunac kategorie?")) {
					new Ajax.Request('execute.php',{
						parameters: {'q':'news','a':'delete-category','snc_id':input.value},
						method: 'post',
						onSuccess: function(transport) {
							//alert(transport.responseText);
						}
					});
					(el.up('li')).remove();
				}
			});*/
		},

		changePageCategory: function() {
			$('pane01').select('input[type=radio]').each(RNews._pageCategoryEvents);
		},

		itemCategories: function() {
			// marking categories
			($$('.categories')[0]).select('input').each(function(item){
				item.observe('change',function(event){
					el =  event.element();
					li = el.up('li');
					if ( $F(el) == 'on' ) {
						li.addClassName('green');
					} else {
						li.removeClassName('green');
					}
				});
			});
		},

		addNewCategory: function() {
			input = $F('form_add_cat_name');
			alert(input);
			if (input != '') {
				new Ajax.Request('execute.php',{
					parameters: 'q=news&a=add-category&v='+input,
					evalJSON: true,
					method: 'post',
					onSuccess: function(transport) {
						json = transport.responseJSON;
						li = new Element('li');
						var template = new Template('<input type="radio" id="" name="category[]" value="#{0}"/>'+
						'<label for="ch01">#{1}</label>'+
						'<img width="10" src="../images/common/delete.png" style="float: right; margin-top: -15px;"/>');
						var params = new Array();
						params.push(json.snc_id);
						params.push(input);
						//params.push(json.snc_id);
						//params.push(input);
						li.update(template.evaluate(params));
						input = (li.select('input[type="radio"]')[0]);
						RNews._pageCategoryEvents(input);
						($$('#pane01 ul.floated')[0]).insert(li);
						window.location.reload();
					}
				});
			}
		},

		

		clear: function() {
			var oEditor = FCKeditorAPI.GetInstance('wysiwyg');
			oEditor.SetHTML('');
			$('title').value = '';
			$('lead').value = '';
			$('source').value = '';
			$('author-id').value = '';
			$('nid-id').value = '';
			var date = new Date();
			$('popupDateField').value =  ((date.getDate() < 10)? '0'+date.getDate() :date.getDate()) + 
				'/' + ((date.getMonth() < 9)? '0'+(date.getMonth()+1) : (date.getMonth()+1)) + 					
				'/' + date.getFullYear() + ' ' + 
				((date.getHours() < 10)? '0'+date.getHours() :date.getHours()) + ':' +
				((date.getMinutes() < 10)? '0'+date.getMinutes() :date.getMinutes()) + ':' + 
				((date.getSeconds() < 10)? '0'+date.getSeconds() :date.getSeconds());

			var currentCategory = $('current_category').value;
			var result = '<input type="hidden" name="categories[]" id="" value="'+currentCategory+'"/>';
			($$('ul.categories')[0]).update(result);
			try {
				var subcats = $('x-subcat').select('option');
				for (var i =0, len = subcats.length; i < len; i++) {
					if (subcats[i].value == 0) {subcats[i].selected = true;  break;}
				}
			} catch (err) {
				// if there is no object with id definied
			}
			$('pane03').style.display = 'block';
			$('pane04').style.display = 'none';
		},
		
		clearNReturn: function() {
			var oEditor = FCKeditorAPI.GetInstance('wysiwyg');
			oEditor.SetHTML('');
			$('title').value = '';
			$('lead').value = '';
			$('source').value = '';
			$('author-id').value = '';
			$('nid-id').value = '';
			var date = new Date();
			$('popupDateField').value =  ((date.getDate() < 10)? '0'+date.getDate() :date.getDate()) + 
				'/' + ((date.getMonth() < 10)? '0'+(date.getMonth()+1) : (date.getMonth()+1)) + 					
				'/' + date.getFullYear() + ' ' + 
				((date.getHours() < 10)? '0'+date.getHours() :date.getHours()) + ':' +
				((date.getMinutes() < 10)? '0'+date.getMinutes() :date.getMinutes()) + ':' + 
				((date.getSeconds() < 10)? '0'+date.getSeconds() :date.getSeconds());

			var currentCategory = $('current_category').value;
			var result = '<input type="hidden" name="categories[]" id="" value="'+currentCategory+'"/>';
			($$('ul.categories')[0]).update(result);
			try {
				var subcats = $('x-subcat').select('option');
				for (var i =0, len = subcats.length; i < len; i++) {
					if (subcats[i].value == 0) {subcats[i].selected = true;  break;}
				}
			} catch (err) {
				// if there is no object with id definied
			}
			$('pane03').style.display = 'none';
			$('pane04').style.display = 'block';
			RNews.loadNewsList(0,null,'pane04');
		}
	}
	

}();




document.observe("dom:loaded", function() {
	
	//tt = new TTable(config);
	

	Ajax.Responders.register({
	  onCreate: function() {
	  },
	  onComplete: function() {
		//alert('Request Completed');
	  },
	  onException: function(obj,exp) {
		  //alert('Wystąpił wyjątek podczas wykonywania żądania.');
	  },
	  onFailure: function() {
		  alert('Nie udało się wykonać żadania.');
	  },
	  on404: function() {
		  alert('Żądanie nie mogło być zrealizowane z powodu braku połączenia z internetem.'+
			'Sprawdź swoje połączenie internetowe.');
	  },
	  on400: function() {
		  alert('Żądanie nie mogło być zrealizowane z powodu złego adresu dla żadania');
	  }
	});
});

