var xTimer = null;

//Tag it
function tagIt(id) {
	data = $('tagit').serialize(true);
	new Ajax.Request('/modules/tags/tagit.php', {
		asynchronous:true,
		evalScripts:true,
		method: 'post',
		parameters: data,
		onSuccess: function(transport) {
			$('tags_blog_'+id).innerHTML = transport.responseText;
			$('tagit_blog_'+id).innerHTML = '<div class="cpsuccess">Tag has been added successfully. (<b id="timer">5</b>)</div>';
			if (!$('tags_blog_'+id).visible()) Effect.Appear('tags_blog_'+id,{duration:0.3});
			//$('tagit_blog_'+id).innerHTML = transport.responseText;
			timer = $('timer').innerHTML;
			new PeriodicalExecuter(function(pe) {
				$('timer').innerHTML = timer;
				timer = timer-1;
				if(timer < 0) {
					Effect.Fade('tagit_blog_'+id,{duration:0.3});
					pe.stop();
				}
			}, 1);
		}
	});
}

//Tag Blog Post
function tagBlogPost(id) {
	new Ajax.Updater('tagit_blog_'+id,
					 '/modules/tags/form.php?section=blog&id=' + id, {
					 asynchronous:true,
					 evalScripts:true,
					 onSuccess: function() {
						 Effect.toggle('tagit_blog_' + id,'appear',{duration:0.3});
					 }
					});
	return false;
}

//Watch User
function startWatching(rid) {
	var data = $H({ rid: rid});
	new Ajax.Request('/ajax/startwatching/', {
		method: 'post',
		parameters: data.toQueryString(),
		onSuccess: function(result) {
            if(result.responseText == 'Success') {
			    alert('You are now watching this user');
			    $('qi_watch').remove();
            }
            else {
                alert('There was an error. Try again.');
            }
		},
		onFailure: function(result) {
			alert(result.responseText);
		}
	});
	return false;
}


//Send Friend Request
function sendFriendRequest(formName) {
	data = $(formName).serialize(true);
	new Ajax.Request('/ajax/befriend/', {
		method: 'post',
		parameters: data,
		onSuccess: function(result) {
			xTimer = 5;
			$('modal_container').innerHTML = result.responseText;
			new PeriodicalExecuter(function(pe) {
				xTimer = xTimer-1;
				if(xTimer==0) {
					Control.Modal.close();
					pe.stop();
				}
			}, 1);
		},
		onFailure: function(result) {
			alert(result.responseText);
		}
	});	
}

//Add to Dashboard
function addDashboard(id) {
	new Ajax.Request('/ajax/browse/?action=add&eopt='+id, {
		method: 'get',
		onSuccess: function(transport) { 
			$('st_addtobrowse').innerHTML = '<a href="#" title="Remove from your Browse Dashboard" onclick="javascript:removeDashboard(&quot;'+id+'&quot;);return false;"><span>- Dashboard</span></a>'
		}
	});	
}
//Remove from Dashboard
function removeDashboard(id) {
	new Ajax.Request('/ajax/browse/?action=remove&eopt='+id, {
		method: 'get',
		onSuccess: function(transport) { 
			$('st_addtobrowse').innerHTML = '<a href="#" title="Add to your Browse Dashboard" onclick="javascript:addDashboard(&quot;'+id+'&quot;);return false;"><span>+ Dashboard</span></a>'
		}
	});	
}

//Friends View Cookies
var avatarlist=Array();
function ChangeAvatarView(ViewSelectBOX) {
	var ARTicianSiteUrl = '';
	jar = new CookieJar({domain: '.artician.com',path: '/'},"ArticianProfileFriends_");
	var ARTUserList = $$('.usergrid');
	if ($('VewChanger').value=='Avatars') { jar.put('view', 1); }
	else { jar.put('view', 0); }
	var Ni=0;
	ARTUserList.each(function(Gbox) {
		var ARTnewSRC=avatarlist[Ni];
		if ($('VewChanger').value=='Avatars') {
			$(Gbox.getElementsBySelector('a')[0]).toggleClassName('useravatar');
			$(Gbox.getElementsBySelector('img')[0]).src=ARTicianSiteUrl+ARTnewSRC[1];
			
		}
		else {
			$(Gbox.getElementsBySelector('a')[0]).toggleClassName('useravatar');
			$(Gbox.getElementsBySelector('img')[0]).src=ARTicianSiteUrl+ARTnewSRC[0];
		}
		Ni++;
	});
}

//Group Member View
var g_avatarlist=Array();
function g_ChangeAvatarView(ViewSelectBOX) {
	var ARTicianSiteUrl = '';
	jar = new CookieJar({domain: '.artician.com',path: '/'},"ArticianGroupMembers_");
	var ARTUserList = $$('.usergrid');
	if ($('VewChanger').value=='Avatars') { jar.put('view', 1); }
	else { jar.put('view', 0); }
	var Ni=0;
	ARTUserList.each(function(Gbox) {
		var ARTnewSRC=avatarlist[Ni];
		if ($('VewChanger').value=='Avatars') {
			$(Gbox.getElementsBySelector('a')[0]).toggleClassName('useravatar');
			$(Gbox.getElementsBySelector('img')[0]).src=ARTicianSiteUrl+ARTnewSRC[1];
			
		}
		else {
			$(Gbox.getElementsBySelector('a')[0]).toggleClassName('useravatar');
			$(Gbox.getElementsBySelector('img')[0]).src=ARTicianSiteUrl+ARTnewSRC[0];
		}
		Ni++;
	});
}

//Cast Vote g_mod_polls
function castVote(id,container,modular) {
	
	var tdata = $(id).serialize(true);
	
	if (typeof(tdata.pollVote) == 'undefined') {
		alert('You need to select a answer before you can vote!');
		return;
	}
	
	//var data = tdata.toQueryString();
	
	new Ajax.Request('/modules/cp/groups/viewmodule.php?modtag='+modular+'&section=members', {
		method: 'post',
		parameters: tdata,
		evalScripts:true,
		asynchronous:true,
		onSuccess:function(result){
			$(container).replace(result.responseText);
		},

		onFailure: function(result) {
			alert(result.responseText);
		}
	});
	return false;
}

//Toggle Polls
function togglePolls(){
	$$('.pollForm','.pollResults','.showPoll').invoke('toggle');
	if($('st_polls_toggle_span').innerHTML == 'Simple View'){
		$('st_polls_toggle_span').update('Full View');
	}
	else {
		$('st_polls_toggle_span').update('Simple View');
	}
}

function showPoll(id,button){
	Effect.toggle(id,'blind',{duration:0.5});
	if($(button).value == 'Show Poll'){
		$(button).value = 'Hide Poll';
	}
	else{
		$(button).value = 'Show Poll';
	}
	
}


//Change Events Calendar Month
function changeEventMonth(date,container) {
	var data = $H({ 'date': date});
	new Ajax.Request('/modules/cp/groups/viewmodule.php?modtag=g_mod_events&section=members', {
		method: 'post',
		parameters: data.toQueryString(),
		evalScripts:true,
		asynchronous:true,
		onSuccess:function(result){
			$(container).replace(result.responseText);
		},

		onFailure: function(result) {
			alert(result.responseText);
		}
	});
	return false;
}

//Group Discussion: Submit Topic
function topicSubmit(id,container) {
	var tdata = $(id).serialize(true);

	if (typeof(tdata.content) == 'undefined' || tdata.subject == 'Topic Title...') {
		alert('Please enter a title for your topic');
		return;
	}
	
	if (typeof(tdata.subject) == 'undefined' || tdata.subject.length<5) {
		alert('Your topics title must be at least 5 characters long');
		return;
	}
	
	if (typeof(tdata.content) == 'undefined' || tdata.content.length<5) {
		alert('You must enter a message to post');
		return;
	}
	
	new Ajax.Request('/modules/cp/groups/viewmodule.php?modtag=g_page_discussion&section=members', {
		method: 'post',
		parameters: tdata,
		evalScripts:true,
		asynchronous:true,
		onSuccess:function(result){
			Effect.toggle('postNewTopic','slide');
			$(container).replace(result.responseText);
		},

		onFailure: function(result) {
			alert(result.responseText);
		}
	});
	return false;
}

//Open New Topic
function openNewTopic(type){
	if(type == 'scroll'){
		new Effect.ScrollTo('newTopicForm',{afterFinish: function(){
			if(!$('postNewTopic').visible()){
				Effect.toggle('postNewTopic','slide');
				}
			}
		});	
	}
	else{
		Effect.toggle('postNewTopic','slide');
	}
}

//Open New Topic
function replyTopic(type){
	new Effect.ScrollTo('add_replies',{offset:-350});
}

/************************************************/
/*                Join a Group                  */
/************************************************/
function userJoin(gid) {
	new Ajax.Request('/modules/cp/groups/actions.php',{
		method: 'post',
		parameters: 'gid='+gid+'&type=users.join',
		evalScripts:true,
		onFailure:function(transport){
			Control.Modal.close();
			alert(transport.responseText);
		},
		onSuccess:function(transport){
			Control.Modal.close();
			alert(transport.responseText);
		}
	});
}

/************************************************/
/*        Request an Affiliation (Groups)       */
/************************************************/
function requestAffiliate(gid,target) {
	new Ajax.Request('/modules/cp/groups/actions.php',{
		method: 'post',
		parameters: 'gid='+gid+'&target='+target+'&type=affiliates.request',
		evalScripts:true,
		onFailure:function(transport){
			Control.Modal.close();
			alert(transport.responseText);
		},
		onSuccess:function(transport){
			Control.Modal.close();
			alert(transport.responseText);
		}
	});
}

/************************************************/
/*                Pro features?                 */
/************************************************/
function userProFeatures(type){
	$(document.body).insert({bottom:'<a id="userProFeaturesNotice" href="/modules/help/pro/features.php?type='+type+'" style="display:none;"></a>'});
	controlmodel = new Control.Modal('userProFeaturesNotice',{containerClassName: 'interact',overlayClassName: 'interactd',fade:true,duration:0.60,opacity: 0.65,width: 650,height: 440});
	controlmodel.open();
}

/************************************************/
/*          Twitter Moduler Functions           */
/************************************************/

/* http://github.com/kangax/protolicious/blob/master/get_json.js */
(function(){var C=0,A=$$("head")[0],B=this;B.getJSON=function(E,G){var D=document.createElement("script"),F="__jsonp"+C;B[F]=G;D.src=E.replace(/\?(&|$)/,"__jsonp"+C+"$1");D.onload=function(){D.remove();D=null;delete B[F]};A.appendChild(D);C++}})()

/*  */
function linkify(A){var B={'"':'&quot;','&':'&amp;','<':'&lt;','>':'&gt;'};return A.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/g,function(C){return C.link(C)}).replace(/(^|[^\w])(@[\d\w\-]+)/g,function(E,D,C){return D+'@<a href="http://twitter.com/'+C.substr(1)+'">'+C.substr(1)+"</a>"}).replace(/"&<>/,function(C){return B[C]})}
function relative_time(B){var F=B.split(" "),D=Date.parse(F[1]+" "+F[2]+", "+F[5]+" "+F[3]),C=new Date(D),I=(arguments.length>1)?arguments[1]:new Date(),E=parseInt((I.getTime()-D)/1000),A="";function H(L){var J=L.getHours(),M=L.getMinutes()+"",K="AM";if(J==0){J=12}else{if(J>12){J-=12;K="PM"}}if(M.length==1){M="0"+M}return J+":"+M+" "+K}function G(K){var P=K.toDateString().split(/ /),M=P[1],J=P[2],Q=parseInt(J),L=K.getFullYear(),O=(new Date()).getFullYear(),N="th";if((Q%10)==1&&J.substr(0,1)!="1"){N="st"}else{if((Q%10)==2&&J.substr(0,1)!="1"){N="nd"}else{if((Q%10)==3&&J.substr(0,1)!="1"){N="rd"}}}if(J.substr(0,1)=="0"){J=J.substr(1)}return M+" "+J+N+(O!=L?", "+L:"")}E=E+(I.getTimezoneOffset()*60);if(E<5){A="less than 5 seconds ago"}else{if(E<30){A="half a minute ago"}else{if(E<60){A="less than a minute ago"}else{if(E<120){A="1 minute ago"}else{if(E<(45*60)){A=(parseInt(E/60)).toString()+" minutes ago"}else{if(E<(2*90*60)){A="about 1 hour ago"}else{if(E<(24*60*60)){A="about "+(parseInt(E/3600)).toString()+" hours ago"}else{if(E<(48*60*60)){A=H(C)+" yesterday"}else{A=H(C)+" "+G(C)}}}}}}}}return A}

function getTimeline(options) {
	options = Object.extend({
		'username':'',
		'replies':true,
		'max':20
	}, options || {});
	
	if (options.username != '') {
		$('twitter_container').update('<span class="loading"></span>');
		getJSON('http://twitter.com/users/show.json?screen_name='+options.username+'&suppress_response_codes=1&callback=?',function(user) {
			console.log(user);
			if(user.error) {
				if (user.error == 'Not found') {
					$('twitter_container').update('<span class="error">The user <a href="http://twitter.com/'+options.username+'">'+options.username+'</a> on twitter was not found.</span>');
				} else {
					$('twitter_container').update('<span class="error">Error loading feed: '+user.error+'</span>');
				}
			} else if (user.protected) {
				$('twitter_container').update('<span class="protected"><a href="http://twitter.com/'+options.username+'">'+options.username+'</a> has protected their tweets.</span>');
			} else {
				getJSON('http://twitter.com/statuses/user_timeline.json?screen_name='+options.username+'&count='+options.max+'&suppress_response_codes=1&callback=?',function(data){
					if(data.error) {
						$('twitter_container').update('<span class="error">Error loading: '+data.error+'</span>');
					} else {
						
						var twitterby = new Template('<span class="clear"></span><div class="twitteruser"><a href="http://twitter.com/#{screen_name}"><img src="#{profile_image_url}" /> #{screen_name}</a> on Twitter<span class="clear"></span></p></div>');
						var twittermsg = new Template('<div class="entry"><p class="tweet">#{text}</p><span class="meta"><span class="time"><a href="http://twitter.com/#{screen_name}/statuses/#{id}">#{date}</a></span> <span class="source">from #{source}</span><span class="clear"></span></div>');
						
						$('twitter_container').update('');
						data.each(function(i){
							if (!options.replies && i.text.substr(0, 1) == '@') {
								return;
							}
							var vars = $H(i).merge($H(i.user)).merge($H({
								'text':linkify(i.text),
								'source':i.source,
								'date':relative_time(i.created_at)
							}));
							
							$('twitter_container').insert({
								bottom: twittermsg.evaluate(vars)
							});
						});
						$('twitter_container').insert({
							after: twitterby.evaluate(user)
						});
					}
				});
			}
		});
	}
}