/**
* an on/off button
*/
var toggleSwitch = Class.create();
toggleSwitch.prototype = {
	initialize: function(button, content_id, onAction, offAction, onHandler, offHandler, onVerify, offVerify) {
		this.buttonName = button;
		this.button = $(button);
		this.content_id = content_id;
		this.onAction = onAction;
		this.offAction = offAction;
		this.onHandler = onHandler;
		this.offHandler = offHandler;
		this.onVerify = onVerify;
		this.offVerify = offVerify;
		if(this.button)
		{
			this.button.childNodes[0].onclick = this.toggle.bindAsEventListener(this);
		}
	},
	
	toggle: function () {
		if( this.isOn() ) {
			this.off();
		} else {
			this.on();
		}
		return false;
	},
	
	on: function () {
		if( this.onAction ) {
			if( this.onVerify ) {
				if( ! confirm(this.onVerify) ) {
					return false;
				}
			}
			submitdata = "submit=submit&submitMethod=ajax";
			submitdata += "&content_id=" + this.content_id;
			
			new Ajax.Request(
		         this.onAction + this.content_id,
		         {method:'post', postBody:submitdata, onSuccess:this.onHandler, onFailure:this.errorHandler});
		}
	},
	
	off: function () {
		if( this.offAction ) {
			if( this.offVerify ) {
				if( ! confirm(this.offVerify) ) {
					return false;
				}
			}
			submitdata = "submit=submit&submitMethod=ajax";
			submitdata += "&content_id=" + this.content_id;
			
			new Ajax.Request(
		         this.offAction + this.content_id,
		         {method:'post', postBody:submitdata, onSuccess:this.offHandler, onFailure:this.errorHandler});
		}
	},
	
	isOn: function () {
		if( this.button.childNodes[0].pathname.indexOf(this.offAction) >= 0) {
			return true;
		}
		return false;
	}
}

/**
 * FAVORITE FUNCTIONS
 */
function HandlefavoriteAdd (t) {
	var r = eval('(' + t.responseText + ')');
	if( r.status == 'ok' ) {
		var btn = $('item_fave');
		if( ! btn ) {
			alert( r.message + " Item Faved" );
		}
		btn.childNodes[0].innerHTML = r.message;
		btn.childNodes[0].pathname = btn.childNodes[0].pathname.replace(/add/, 'remove');
		btn.childNodes[0].blur();
	} else {
		alert( t.responseText + " Error: not faved");
	}
}

function HandlefavoriteRemove (t) {
	var r = eval('(' + t.responseText + ')');
	if( r.status == 'ok' ) {
		var btn = $('item_fave');
		if( ! btn ) {
			alert( r.message + " Item UnFaved" );
		}
		btn.className = btn.id + '_off';
		btn.childNodes[0].innerHTML = r.message;
		btn.childNodes[0].pathname = btn.childNodes[0].pathname.replace(/remove/, 'add');
		btn.childNodes[0].blur();
	} else {
		alert( t.responseText + " Error: not unfaved" );
	}
}

/**
 * FLAG FUNCTIONS
 */
function HandleItemFlag(t) {
	if( t.responseText == 'ok' ) {
		var btn = $('item_flag');
		
		btn.className = btn.id + '_on';
		btn.innerHTML = '<span>This item has been flagged as inappropriate</span>';
		btn.blur();
	} else {
		alert( t.responseText + " Error: not flagged" );
	}
}

/**
 * WATCHLIST FUNCTIONS
 */
function HandleStartWatching (t) {
	if( t.responseText == 'ok' ) {
		var btn = $('item_watch_non');
		if( ! btn ) {
			var btn = $('item_watch_own');
		}
		btn.className = btn.id + '_on';
		btn.childNodes[0].innerHTML = 'TRACKING';
		btn.childNodes[0].pathname = btn.childNodes[0].pathname.replace(/start/, 'stop');
		btn.childNodes[0].blur();
	} else {
		alert( t.responseText + " Error: not watched" );
	}
}

function HandleStopWatching (t) {
	if( t.responseText == 'ok' ) {
		var btn = $('item_watch_non');
		if( ! btn ) {
			var btn = $('item_watch_own');
		}
		btn.className = btn.id + '_off';
		btn.childNodes[0].innerHTML = 'TRACK';
		btn.childNodes[0].pathname = btn.childNodes[0].pathname.replace(/stop/, 'start');
		btn.childNodes[0].blur();
	} else {
		alert( t.responseText + " Error: not un watched" );
	}
}


/**
 * PROMOTE/SHARE FUNCTIONS
 */
function showShare() {
	$('share_block').style.display = 'block';
	$('share_show').style.display = 'none';
	$('share_hide').style.display = 'inline';
}

function hideShare() {
	$('share_block').style.display = 'none';
	$('share_show').style.display = 'inline';
	$('share_hide').style.display = 'none';
}


var shareResponse = function(t) {
	hideShare();
	$('share_status').innerHTML = t.responseText;
	$('share_status').style.display = "block";
};

/**
* Tag Functions
*/
var deleteTag = function(tag, content_id) {
	if( ! confirm( "Delete the tag '"+tag+"'?" ) ) {
		return false;
	}
	var submitdata = "tag=" + tag;
	submitdata += "&content_id=" + content_id;
	submitdata += "&submit=submit&submitMethod=ajax&confirm=1";
	
	new Ajax.Updater('tags', '/channel/deletetags/'+tag+'/'+content_id+'/',
							 {method:'post', postBody:submitdata, onFailure:errFunc});
	return false;

}

/**
* Location Functions
*/
var deleteLocation = function(location, content_id) {
	if( ! confirm( "Delete the location '"+location+"'?" ) ) {
		return false;
	}
	var submitdata = "location=" + location;
	submitdata += "&content_id=" + content_id;
	submitdata += "&submit=submit&submitMethod=ajax&confirm=1";
	
	new Ajax.Updater('locs', '/channel/deletelocations/'+location+'/'+content_id+'/',
							 {method:'post', postBody:submitdata, onFailure:errFunc});
	return false;

}


var embedSelect = function(inputEl, size) {
	var imp = $(inputEl);
	imp.value = imp.value.replace(/(mm|dd|sm)\.jpg/, size+'.jpg');
	imp.focus();
	imp.select();
	
	$('embed_select_sm').className = 'embed_select';
	$('embed_select_mm').className = 'embed_select';
	$('embed_select_dd').className = 'embed_select';
	$('embed_select_'+size).className = 'embed_selected';
}
