var js_basedir = hu+'libs/js/';

var fxm = {
	start: function(){
		if($('search_text')) fxm.inputLostFocus('search_text');
		
		if($$('.ext_links')) {
			$$('.ext_links').each(function(el,i) {
				el.addEvent('click',function(e) {
					el.set('target','_blank');
				});
			});
		}
		if($('accordion')) fxm.navAccordion();
		fxm.mailtolink();
		
		fxm.openCForm();
	},
	
	/** FUNCTIONS **/
	navAccordion: function() {
		
		var myAccordion = new Accordion($('accordion'), 'div.toggler', 'div.element', {
			opacity: false,
			display: (activeAccordion == 'undefined' || activeAccordion == '' ? false : activeAccordion),
			width: false,
			height: true,
			onActive: function(toggler, element){
				//toggler.setStyle('color', '#41464D');
			},
			onBackground: function(toggler, element){
				//toggler.setStyle('color', '#528CE0');
			}
		});
	},
	
	inputLostFocus: function(elm) {
		var txt = $(elm).get('title');
		$(elm).addEvent('focus',function() {
			var cur = $(elm).get('value');
			if(cur == txt) $(elm).set('value','');
		});
		$(elm).addEvent('blur',function() {
			var cur = $(elm).get('value');
			if(cur == '') $(elm).set('value',txt);
		});
	},
	
	makeAjax: function(Rurl,updater) {
		var ran=(Math.round((Math.random()*9999))); 
		var req = new Request({
				url: Rurl+'&ran='+ran,
				method: 'get',
				evalScripts: true,
				encoding: 'utf-8',
				onSuccess: function(resp) {
					$(updater).set('html',resp);
				},
				onFailure: function(resp) {
				
				}
			});
		req.send();
	},
	
	displayQCalendar: function(m,y) {
		var ran_no=(Math.round((Math.random()*9999))); 
		$('quickCalender').set('html','<p style="text-align:center;">Loading...</p>');
		var req = new Request({
				url: hu+'quick_calendar.php?m='+m+'&y='+y+'&ran='+ran_no,
				method: 'get',
				evalScripts: true,
				encoding: 'utf-8',
				onSuccess: function(resp) {
					$('quickCalender').set('html',resp);
				},
				onFailure: function(resp) {
				
				}
			});
		req.send();
	},
	
	showEvents: function(d,m,y,transl,el) {
		//alert(this.getParent());
		//window.console.log(this);
		//alert(d+' - '+m+' - '+y+' - '+transl+' - '+el.getProperty('id'));
		var injected = $(el);//el.getParent();
		if($('eventHolder')) $('eventHolder').dispose();
		//if(window.console) window.console.log('Fetching events: '+d+'.'+m+'.'+y);
		var eventsData = sEvents.eData;
		var holder = new Element('div',{
				'id':'eventHolder',
				'class': 'eventsPopHolder',
				'styles': {'opacity':.9}
			});
		var output = '';
		eventsData.each(function(eD) {
			if( (eD.day == d) && (eD.month == m) && (eD.year == y) ) {
				//window.console.log('Found events :'+eD.link+' - '+eD.desc);
				var edate = eD.year+'-'+eD.month+'-'+eD.day;
				if($defined(iET) && iET == 1) {
					output += '<li id="ev'+eD.id+'"><span class="clickable" title="Click to edit '+eD.desc+'" onclick="javascript:fxm.eventEdit('+eD.id+',\''+edate+'\');" id="event'+eD.id+'">'+eD.desc+'</span> <em class="clickable red" title="Click to delete '+eD.desc+'" onclick="javascript:fxm.eventDelete('+eD.id+',\''+edate+'\');" id="eventDel'+eD.id+'">delete</em></li>';
				} else {
					output += '<li>'+eD.desc+'</li>';
				}
			}
		});
		holder.inject(injected);
		holder.set('html','<p><strong>'+transl+'</strong></p><ul>'+output+'</ul><p id="eventTools" class="closeBtn"> <span onclick="$(\'eventHolder\').dispose();">[close]</span> </p>');
		if($defined(iET) && iET == 1) {
			var eHolder = new Element('div',{
						'id': 'eholder',
						'class': '',
						'text': ''
					});
			eHolder.inject(holder);
			var logger = new Element('div',{
						'id': 'plogger',
						'class': '',
						'text': ''
					});
			logger.inject(holder);
		}
	},
	
	editEvent: function(d,m,y,transl,el) {
		fxm.showEvents(d,m,y,transl,el);
		var edate = y+'-'+m+'-'+d;
		var addBtn = new Element('span',{
				'id':'addEventBtn',
				'class': 'closeBtn',
				'text': '[Add Event]',
				'events': {
					'click': function(e) {
						if(e) e.stop();
						if($('fm')) $('fm').dispose();
						if($('plogger')) $('plogger').empty();
						var fm = new Element('form',{
									'name':'fm',
									'id':'fm',
									'action':hu+'event.php?m=new&edate='+edate,
									'events': {
										'submit': function(e) {
											if(e) e.stop();
											if($('plogger')) $('plogger').addClass('logger').set('text','Processing...');
											this.set('send', {
												//url: 'contact.php', 
												method: 'get',
												evalScripts: true,
												onSuccess: function(res) {
													if($('plogger')) {
														$('plogger').removeClass('failure');
														$('plogger').removeClass('logger').set('html',res);
													}
													if($('ajaxReq')) {
														$('ajaxReq').addEvent('click',function(e) {
															if(e) e.stop();
														});
														var gurl = $('ajaxReq').get('href');
														var gupdater = $('ajaxReq').get('rel');
														fxm.makeAjax(gurl,gupdater);
													}
												},
												onFailure: function(res) {
													if($('plogger'))  {
														$('plogger').removeClass('success');
														$('plogger').removeClass('logger').set('html','Request Failed ('+res.status+')');
													}
												}
											});
											this.send(); 
										}
									}
								});
						var input = new Element('input',{
									'name':'n_event',
									'type':'text'
								});
						fm.inject('eholder');
						input.inject('fm');
					}
				}
			});
		addBtn.inject('eventTools');
	},
	
	eventEdit: function(eid,edate) {
		if($('fm')) $('fm').dispose();
		if($('plogger')) $('plogger').empty();
		var fm = new Element('form',{
					'name':'fm',
					'id':'fm',
					'action':hu+'event.php?m=edit&eid='+eid+'&edate='+edate,
					'events': {
						'submit': function(e) {
							if(e) e.stop();
							if($('plogger')) $('plogger').addClass('logger').set('text','Saving changes...');
							this.set('send', {
								//url: 'contact.php', 
								method: 'get',
								evalScripts: true,
								onSuccess: function(res) {
									if($('plogger')) {
										$('plogger').removeClass('failure');
										$('plogger').removeClass('logger').set('html',res);
									}
									if($('ajaxReq')) {
										$('ajaxReq').addEvent('click',function(e) {
											if(e) e.stop();
										});
										var gurl = $('ajaxReq').get('href');
										var gupdater = $('ajaxReq').get('rel');
										fxm.makeAjax(gurl,gupdater);
									}
								},
								onFailure: function(res) {
									if($('plogger'))  {
										$('plogger').removeClass('success');
										$('plogger').removeClass('logger').set('html','Request Failed ('+res.status+')');
									}
								}
							});
							this.send(); 
						}
					}
				});
		var current = $('event'+eid).get('text');
		var input = new Element('input',{
					'name':'n_event',
					'type':'text',
					'value': current
				});
		fm.inject('eholder');
		input.inject('fm');
	},
	
	eventDelete: function(eid,edate) {
		if($('fm')) $('fm').dispose();
		if($('plogger')) $('plogger').empty();
		var confirmed = fxm.verify('Are you sure want to remove selected event?');
		if(!confirmed) return;
				
		var req = new Request({
				url: hu+'event.php?m=delete&eid='+eid+'&edate='+edate,
				method: 'get',
				evalScripts: true,
				encoding: 'utf-8',
				onSuccess: function(res) {
					if($('plogger')) {
						$('plogger').removeClass('failure');
						$('plogger').removeClass('logger').set('html',res);
					}
					
					if($('ev'+eid)) $('ev'+eid).dispose();
					
					if($('ajaxReq')) {
						$('ajaxReq').addEvent('click',function(e) {
							if(e) e.stop();
						});
						var gurl = $('ajaxReq').get('href');
						var gupdater = $('ajaxReq').get('rel');
						fxm.makeAjax(gurl,gupdater);
					}
				},
				onFailure: function(res) {
					if($('plogger'))  {
						$('plogger').removeClass('success');
						$('plogger').removeClass('logger').set('html','Request Failed ('+res.status+')');
					}
				}
			});
		req.send();
	},
	
	mailtolink: function() {
		if($$('a.fxm_email')) {
			$$('a.fxm_email').each(function(el,i) {
				var eaparams = el.get('title');
				if(eaparams == null || eaparams == '') return;
				var eaObject = {at: '@', dot: '.', subject: '?subject='};
				var eaddress = eaparams.substitute(eaObject);
				if(eaddress.trim() !== '') {
					el.set('href', 'mailto:' + eaddress);
					if(el.hasClass('textOpt')) {
						el.set('text',eaddress);
					}
				}
			});
		}
	},
	
	verify: function(msg) {
		return confirm(msg);
	},
	
	openCForm: function() {
		if($$('a.opencform')) {
			$$('a.opencform').each(function(el,i) {
				el.addEvent('click',function(e) {
					if(e) e.stop();
					if($('cfContainer')) $('cfContainer').dispose();
					var injection = el.getParent();
					var cparams = el.get('rel');
					var params = cparams.split('::'); // blog_id,permalink,type,comment_id
					var container = new Element('div',{'id':'cfContainer','html':'<p><a  href="javascript:;" id="cfClose">CLOSE</a></p>'});
					container.inject(injection);
					if($('cfClose')) {
						$('cfClose').addEvent('click',function(e) {
							if(e) e.stop();
							if($('cfContainer')) $('cfContainer').dispose();
						});
					}
					
					// BUILD FORM
					if(params[0] == '') {
						var halt = new Element('p',{'class':'red','text':'Post is not available.','styles':{'text-align':'center','font-size':'18px'}});
						halt.inject(container);
						return;
					}
					var cfurl = hu+'req?cmd=write_comment&id='+params[0]+'&i='+params[2]+'&reply='+params[3];
					var fm = new Element('form',{
							'name':'cform',
							'id':'cform',
							'action':cfurl+'&validate=1&r='+(Math.round((Math.random()*9999))),
							'events': {
								'submit': function(e) {
									if(e) e.stop();
									if($('cfLoading')) $('cfLoading').addClass('cfpreloader').set('text','Please wait, processing...');
									var button = this.getElement('button');
									button.set('disabled','disabled');
									this.set('send', {
										//url: 'contact.php', 
										method: 'post',
										evalScripts: true,
										onSuccess: function(res) {
											if($('cfLoading')) {
												$('cfLoading').removeClass('failure');
												$('cfLoading').removeClass('cfpreloader').set('html',res);
											}
											button.set('disabled','');											
										},
										onFailure: function(res) {
											if($('cfLoading'))  {
												$('cfLoading').removeClass('success');
												$('cfLoading').removeClass('cfpreloader').set('html','Request Failed ('+res.status+')');
											}
											button.set('disabled','');
										}
									});
									this.send(); 
								}
							}
						});
					fm.inject(container);
					var content = $('cformhide') ? $('cformhide').clone() : false;
					if( content !== false ) content.addClass('cfContent').inject($('cform'));
					
					/*** Get Captcha ***/
					var captcha_cont = ($$('#cform span.captcha_code') ? $$('#cform span.captcha_code') : false);
					if($$('#cform input[name=permalink]')) $$('#cform input[name=permalink]').set('value',cparams);
					fxm.load_captcha(captcha_cont);
					
					var cfLoad = new Element('div',{'id':'cfLoading'});
					cfLoad.inject(container);
					
				});
			});
		}
	},
	
	load_captcha: function(captcha_cont) {
		var get_captcha = new Request({
				url: hu+'req?cmd=r_sc&r='+(Math.round((Math.random()*999999))),
				method: 'get',
				evalScripts: true,
				encoding: 'utf-8',
				onSuccess: function(resp) {
					if(captcha_cont) {
						captcha_cont.set('html','&nbsp;');
						captcha_cont.set('html',resp);
					} 
				},
				onFailure: function(resp) {
					if(captcha_cont) {
						captcha_cont.set('html','&nbsp;');
						captcha_cont.set('html','security check failed');
					}
				}
		});
		get_captcha.send();
	},
	
	formFailed: function(sel) {
		fails.each(function(f) {
			var el = $(sel).getElements('[name='+f+']');
			if(el) {
				el.addClass('fails');
				el.addEvent('blur',function(e) {
					var notfailed = el.get('value');
					if( notfailed == '' ) {
						el.addClass('fails');
					} else {
						el.removeClass('fails');
					}
				});
			}
		});
	}
};

window.addEvent('domready', function(){
	fxm.start();
});