uniqid = (function () { var id = 0; return function () { return id++; }; })();

function getPointerXY(e) {
	var posx = 0;
	var posy = 0;
	
	if (!e) 
		var e = window.event;
		
	if (e.pageX || e.pageY) {
		posx = e.pageX;
		posy = e.pageY;
	} else if (e.clientX || e.clientY) {
		posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
	}
	
	mouseX = posx;
	mouseY = posy;
}

function adjustSize(toResize, elA, elB) {
	s_a = document.getElementById(elA);
	s_b = document.getElementById(elB);

	if(s_a.offsetHeight >= s_b.offsetHeight) {
		document.getElementById(toResize).style.height = s_a.offsetHeight + "px";
	} else if(s_a.offsetHeight < s_b.offsetHeight) {
		document.getElementById(toResize).style.height = s_b.offsetHeight + "px";
	}
}

/*var mouseX = 0;
var mouseY = 0;

document.onmousemove = getPointerXY;*/

function basename(path, suffix) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Ash Searle (http://hexmen.com/blog/)
    // +   improved by: Lincoln Ramsay
    // +   improved by: djmix
    // *     example 1: basename('/www/site/home.htm', '.htm');
    // *     returns 1: 'home'
 
    var b = path.replace(/^.*[\/\\]/g, '');
    if (typeof(suffix) == 'string' && b.substr(b.length-suffix.length) == suffix) {
        b = b.substr(0, b.length-suffix.length);
    }
    return b;
}

var mmToMonth = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");

function showLocalDate(timestamp) {
	  var dt = new Date(timestamp * 1000);  
	  var mins = dt.getMinutes();
	  var hrs = dt.getHours();
	  if (mins === 0) mins = "0"+mins;
	  if (hrs < 10) hrs = "0"+hrs;  
	  date_disp = hrs + ":" + mins;
	  document.write(date_disp);
} 

function returnLocalDate(timestamp) {
	  var dt = new Date(timestamp * 1000);  
	  var mins = dt.getMinutes();
	  var hrs = dt.getHours();
	  
	  if (mins === 0 || mins < 10) {
	  	mins = "0" + mins;
	  }
	  
	  if (hrs < 10) hrs = "0"+hrs;  
	  date_disp = hrs + ":" + mins;
	  return date_disp;
} 

function showLocalTimezone() {
	var d = new Date();
	var utcd = d.getTimezoneOffset();
	utcd = (utcd/60)*(-1); 
	if (utcd > -1) utcd = "+" + utcd;
}

function changeOpacity(el,op) {
   var op = op / 100;
   $(el).setStyle('opacity', op);
}

function enableScrollcontrols() {
	$$('div.scrollControl').each(function(el) {
		var htmlElementPrefix = 'scrollcontroll_';
		if(el.getProperty('rel')) {
			htmlElementPrefix = el.getProperty('rel') + '_';
		}
			 			
		new ScrollControl2(el, {'createControls': true, 'htmlElementPrefix': htmlElementPrefix});
		el.removeClass('scrollControl');
	});
}

window.addEvent('domready', enableScrollcontrols);

function revertElements(elSelector) {
	$$(elSelector).each(function(el) {
		if(el.retrieve('origHTML') != null) {
			el.set('html', el.retrieve('origHTML'));
		}
	});
}

function refreshCaptcha(c_el, c_id_el) {
	$(c_id_el).setProperty('value', $(c_id_el).value + uniqid());
	$(c_el).setProperty('src', '/cptchav1/securimage_show.php?sid=' + $(c_id_el).getProperty('value'));
}

/*
 * Same as comment submission, but with a customizable success func.
 * call: submitForm_json('form_id', function(formId, resp) {  });
 *
 * formid_status should be present, will show activity indicator and possibly status text.
 * Each form input can have a 'label_' + form_input_id element for field description / errors.
 */
function submitForm_json(formId, successFunc, errorFunc) {
	if($(formId + '_status')) {
		$(formId + '_status').set('html', '<img src="/static/images/activity.gif" />');
	}

	revertElements('#' + formId + ' .label_resetable');
	
	$(formId).set('send', {
		method: 'post',
		url: $(formId).getProperty('action'),
		onSuccess: function(respText) {
			var resp = JSON.decode(respText);
				
			if(resp.status == 'error') {
				if(typeof errorFunc == 'undefined') {
					var errHash = new Hash(resp.errors);

					errHash.each(function(errorText, errorSubj) {
						labelId = 'label_' + errorSubj;
					
						if($(labelId)) {
							labelEl = $(labelId);
				
							if(!labelEl.retrieve('origHTML')) {
								labelEl.store('origHTML', labelEl.get('html'));
							}
					
							labelEl.empty();
							labelEl.set('html', '<span class="color_pink">' + errorText + '</span>');
						}
					});
				} else {
					errorFunc(formId, resp);
				}
			
				if($(formId + '_status')) {
					$(formId + '_status').empty();
				}
			} else if(resp.status == 'ok' && typeof successFunc != 'undefined') {
				// remove activity indicator
				if($(formId + '_status')) {
					$(formId + '_status').empty();
				}
			
				successFunc(formId, resp);
			}
		}
	});
	
	$(formId).send();
}

function com_disableSaveButton(idPrefix) {
	saveButton = $(idPrefix + '_button');
		
	saveButton.disabled = 'disabled';
	saveButton.addClass('disabled_btn');
}

function com_enableSaveButton(idPrefix) {
	saveButton = $(idPrefix + '_button');
	
	saveButton.disabled = '';
	saveButton.removeClass('disabled_btn');
}

var saveInProgress = false;
function saveComment(whichBox) {
	if(saveInProgress) {
		return false;
	}
	
	saveInProgress = true;

	$(whichBox + '_status').set('html', '<img src="/static/images/activity.gif" style="margin-right: 4px"/>');

	$$('.label_resetable').each(function(el) {
		if(el.retrieve('origHTML')) {
			el.set('html', el.retrieve('origHTML'));
		}
	});
	
	com_disableSaveButton(whichBox);

	$(whichBox).set('send', {method: 'post', url: $(whichBox).getProperty('action'), onSuccess: function(respText) {
		var resp = JSON.decode(respText);
				
		if(resp.status == 'error') {
			var errHash = new Hash(resp.errors);
			errHash.each(function(errorText, errorSubj) {
				labelId = 'label_' + errorSubj;
				
				if($(labelId)) {
					labelEl = $(labelId);
				
					if(!labelEl.retrieve('origHTML')) {
						labelEl.store('origHTML', labelEl.get('html'));
					}
					
					labelEl.empty();
					labelEl.set('html', '<span class="color_pink">' + errorText + '</span>');
				}
			});
			
			$(whichBox + '_status').empty();
		} else if(resp.status == 'ok') {
			$(whichBox + '_status').set('html', 'Thank you for posting. ');
			$(whichBox + '_body').value = '';
			
			injectReplybox(0);
			
			loadCommentPage(commentKey, resp.post_page, resp.post_id,
							typeof commentPP == 'undefined' ? 15 : commentPP,
							typeof commentOrder == 'undefined' ? 'ASC' : commentOrder,
							typeof commentExtra == 'undefined' ? '' : commentExtra);
		} else if(resp.status == 'toosoon') {
			$(whichBox + '_status').set('html', 'Please wait a little while before making another comment.');
		}
		
		com_enableSaveButton(whichBox);
		saveInProgress = false;
	}});
	
	$(whichBox).send();
}

function injectReplybox(parentId) {
	var rbox = $('reply_box_hidden');
	var oldParent = rbox.getParent();
	
	if(oldParent.getProperty('id') == 'rplcont_' + parentId) {
		injectReplybox(0);
		return;
	}
	
	if(parentId) {
		newHome = 'rplcont_' + parentId;
	} else {
		newHome = 'reply_home';
	}
	
	$('reply_parent_id').value = parentId;
	
	rbox.inject(newHome);
	
	if(parentId) {
		rbox.setStyle('display', 'block');
	} else {
		rbox.setStyle('display', 'none');
	}
}

function loadCommentPage(key, pageNum, postId, perPage, order, extra) {
	if(!postId) {
		var scrl = new Fx.Scroll(window).toElement('comment_label');
	}
	
	if(typeof perPage == 'undefined') {
		var perPage = 15;
	}
	
	if(typeof order == 'undefined') {
		var order = 'ASC';
	}
	
	if(typeof extra == 'undefined') {
		var extra = '';
	}

	var ajreq = new Request({url: '/ajGetComments.php?key=' + key + '&page=' + pageNum + '&perPage=' + perPage + '&order=' + order + '&extra=' + extra, evalScripts: true, onSuccess: function(responseHTML) {
		$('comment_header').setStyle('display', 'block');
		$('comment_container').set('html', responseHTML);
		
		// if postId is -1, don't do any scrolling
		if(postId && postId != -1) {		
			var scrl = new Fx.Scroll(window).toElement('com_' + postId);
		}
		
		// commentInd comes thru ajax and should be available at this point
		$('comment_pageind').set('html', commentInd);
	}}).send();
}

function commentCallAndReload(callUrl, reloadParams) {
	var ajreq = new Request({url: callUrl, method: 'get', onSuccess: function(responseHTML) {
		loadCommentPage(reloadParams.commentKey, reloadParams.pageNum, reloadParams.postId, reloadParams.perPage, reloadParams.order, reloadParams.extra);
	}}).send();
}

function switchTab(tabId, tabUrl) {
	$(currentTab).toggleClass('ftwid_tab_on');
	$(currentTab).toggleClass('ftwid_tab_off');
	
	$(tabId).toggleClass('ftwid_tab_off');
	$(tabId).toggleClass('ftwid_tab_on');
	
	currentTab = tabId;
	
	$('tabbed_content').innerHTML = pleaseWait;
	var aj = new Request.HTML({url: tabUrl, method: 'get', update: 'tabbed_content', onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript) {	
		replaceDateSpans();
		
		$$('div.scrollControl').each(function(el) {
			var htmlElementPrefix = 'scrollcontroll_';
			if(el.getProperty('rel')) {
				htmlElementPrefix = el.getProperty('rel') + '_';
 			}
 			
			new ScrollControl2(el, {'createControls': true, 'htmlElementPrefix': htmlElementPrefix});
			el.removeClass('scrollControl');
		});
	}}).send();
}

function replaceDateSpans() {
	$$('span.showLocalDate').each(function(el) {
		el.innerHTML = returnLocalDate(el.innerHTML);
		el.removeClass('showLocalDate');
	});
}

suggReq = false;

function loadSuggestions(lookupStr, containerPrefix, teamType) {
	suggEl = $(containerPrefix + '_suggestions');
	suggContent = $(containerPrefix + '_suggestions_content');

	if(suggReq != false) {
		suggReq.cancel();
	}

	if(!lookupStr.length) {
		suggEl.setStyle('display', 'none');
		return;
	}

	lookupUrl = '/ajTeamSuggestions.php?input=' + lookupStr + '&type=' + teamType;
	
	if(suggEl.style.display == 'none') {
		suggContent.set('html', '<img src="/static/images/activity.gif"> Searching...');
		suggEl.setStyle('display', 'block');
	}
	
	suggReq = new Request({url: lookupUrl, link: 'cancel', evalScripts: true, onSuccess: function(responseHTML) {
		suggContent.set('html', responseHTML);
		
		$$('div#' + containerPrefix + '_suggestions a.suggestions_teamLink').each(function(el) {
			el.addEvent('click', function() {
				$(containerPrefix + '_chosen').set('html', '<div class="suggestions_teamLink">' + this.innerHTML + ' <a href="javascript:revertToSearch(\'' + containerPrefix + '\');">Change selection...</a></div>');
				$(containerPrefix + '_chosen').setStyle('display', 'block');
				$(containerPrefix + '_search').setStyle('display', 'none');
				$(containerPrefix + '_value').value = this.getProperty('rel');
			});
		});
		
		suggReq = false;
	}});
	
	suggReq.send();
}

function revertToSearch(containerPrefix) {
	$(containerPrefix + '_chosen').setStyle('display', 'none');
	$(containerPrefix + '_search').setStyle('display', 'block');
	$(containerPrefix + '_value').value = '';
}

function popitup(url,w,h) {
   newwindow=window.open(url, 'name', 'height=' + h + ',width=' + w);
   if (window.focus) { newwindow.focus() }
   return false;
}

function cancelEditComment(comment_id) {
	com_body = $('comment_body_' + comment_id);
	com_body.empty();
	com_body.set('html', com_body.retrieve('original_value'));
}

function saveEditComment(comment_id) {
	com_form = $('comment_edit_form_' + comment_id);
	
	com_form.set('send', {'onComplete': function(ajHtml) {
		$('comment_body_' + comment_id).set('html', ajHtml);
	}});

	$('comment_edit_form_' + comment_id).send('/ajEditPostHandler.php');
}

function editComment(comment_id) {
	var ajReq = new Request({url: '/ajGetCommentForEdit.php?commentId=' + comment_id, onSuccess: function(ajHtml) {
		com_body = $('comment_body_' + comment_id);
	
		if(!com_body.retrieve('original_value')) {
			com_body.store('original_value', com_body.innerHTML);
		}
		
		com_body.empty();
		
		e_form = new Element('form', {
			'id': 'comment_edit_form_' + comment_id,
			'method': 'post',
			'action': '/ajEditPostHandler.php'
		});
		
		e_hidden = new Element('input', {'type': 'hidden', 'name': 'commentId', 'value': comment_id});
		e_form.grab(e_hidden);
		
		e_texta = new Element('textarea', {
			'name': 'commentBody',
			'styles': {
				'width': '100%',
				'height': '120px'
			}
		});
		
		e_texta.set('text', ajHtml);
		
		e_controls_div = new Element('div', {
			'styles': {
				'text-align': 'right',
				'padding-bottom': '10px'
			}
		});
		
		e_controls_save = new Element('input', {
			'type': 'button',
			'value': 'Save',
			'events': {
				'click': function() {
					saveEditComment(comment_id);
				}
			}
		});
		
		e_controls_cancel = new Element('input', {
			'type': 'button',
			'value': 'Cancel',
			'events': {
				'click': function() {
					cancelEditComment(comment_id);
				}
			}
		});
		
		e_controls_div.grab(e_controls_save);
		e_controls_div.grab(e_controls_cancel);
		
		e_form.grab(e_texta);
		e_form.grab(e_controls_div);
		
		com_body.grab(e_form);
	}}).send();
}

function ftSimpleRequest(ajUrl, ajMethod, ajParams, ajHandler, ajHandlerParams) {
	var req = new Request({
		url: ajUrl,
		method: ajMethod,
		data: ajParams,
		onSuccess: function(respData) {
			ajHandler({params: ajHandlerParams, responseData: respData, status: true});
		},
		onFailure: function(respData) {
			ajHandler({params: ajHandlerParams, responseData: false, status: false});
		}
	}).send(ajParams);
}

function ftLogSharing(video_id, sitename) {
	ftSimpleRequest('/ajLogSharing.php', 'post', 'video_id=' + video_id + '&site=' + sitename, function(dummyp) {}, function(dummyp) {});
}

function cbyline_show_controls(comId) {
	$('cbyline_ateam_' + comId).setStyle('display', 'none');
	$('cbyline_date_' + comId).setStyle('display', 'none');
	
	$('cbyline_ctrla_' + comId).setStyle('display', 'block');
}

function cbyline_hide_controls(comId) {
	$('cbyline_ateam_' + comId).setStyle('display', 'block');
	$('cbyline_date_' + comId).setStyle('display', 'block');
	
	$('cbyline_ctrla_' + comId).setStyle('display', 'none');
}

function loadAjSearch(eprefix) {
	$(eprefix + '_results').set('html', '<div style="text-align: center; margin-top: 7px"><img src="/static/images/ajax-loader.gif" /></div>');

	var ajreq = new Request({url: '/ajsearch.php?q=' + escape($(eprefix + '_box').value), method: 'get', evalScripts: true, onSuccess: function(responseHTML) {
		$(eprefix + '_results').set('html', responseHTML);
	}}).send();
}
function startAjSearch(eprefix,sch) {
	$(eprefix + '_results').set('html', '<div style="text-align: center; margin-top: 7px"><img src="/static/images/ajax-loader.gif" /></div>');
	
	var ajreq = new Request({url: '/ajsearch.php?q=' + escape(sch), method: 'get', evalScripts: true, onSuccess: function(responseHTML) {
		$(eprefix + '_results').set('html', responseHTML);
	}}).send();
}