/**
 * Tools used globally by the site functions
 *
 */

jQuery.fn.contains = function(txt) { 
	return jQuery(this).indexOf(txt) >= 0;
}

function tuneUpdate() {
	$j.getJSON("/api/quicklist/json", "", function(data){
		var nextUpdate = 100000;
		var islive = 0;
		var listeners = 0;
		var countries = 0;
		var linkmode = 0;
		var showduration = false;
		var showcarter = false;
		var userid = 0;
		var countrylist = '';
		var countrylisttext = '';
		var listenertext = '<span class="phat">';
		$j.each(data, function(i,item){
			var nowtime = '';
			var doraters = true;
			$j.each(item, function(j,jtem){
				var titletext = '';
				var currtrack = '';
				var fulltitle = '';
				var duration = 0;
				if(j == "other") {
					islive = jtem.islive;
					listeners = jtem.listeners;
					countries = jtem.countries;
					countrylist = jtem.countrylist;
					linkmode = jtem.linkmode;
					showduration = jtem.showduration;
					showcarter = jtem.showcarter;
					userid = jtem.userid;
				} else {
					if(j != "live") {
						duration = jtem.duration;
					}
					titletext = jtem.artist + " - " + jtem.title;
					if(j == 'next') {
						fulltitle = getTracklink(jtem.artist, jtem.title, jtem.id, jtem.act_id, linkmode, '', 0, islive, duration, (showduration == 4 || showduration == 5 || showduration == 6 || showduration == 7)?true:false, showcarter);
					} else {
						if(j == 'now') {
							if(jtem.requester != '') {
								titletext += ' as ';
								if(islive == 1) {
									titletext += 'requested by ' + jtem.requester;
								} else {
									titletext += 'queued by ' + jtem.requester;
								}
							}
							fulltitle = getTracklink(jtem.artist, jtem.title, jtem.id, jtem.act_id, linkmode, jtem.requester, jtem.requester_id, islive, duration, (showduration == 1 || showduration == 3 || showduration == 5 || showduration == 7)?true:false, showcarter);
						} else {
							fulltitle = getTracklink(jtem.artist, jtem.title, jtem.id, jtem.act_id, linkmode, jtem.requester, jtem.requester_id, islive, duration, (showduration == 2 || showduration == 3 || showduration == 6 || showduration == 7)?true:false, showcarter);
						}
					}
				}
				if(j == "next") {
					fulltitle += ' at ' + jtem.startingat;
					nowtime = 'Now: ' + jtem.timenow;
					var leftUntil = jtem.leftuntil;
					nextUpdate = (jtem.nextminute<leftUntil) ? (jtem.nextminute+1)*1000 : (leftUntil+1)*1000;
					if(nextUpdate < 0) {
						nextUpdate = (nextUpdate-nextUpdate-nextUpdate);
					}
				}
				switch(j) {
					case "other":
						break;
					case "live":
						break;
					case "previous":
						if($j("#prev_span").text() != titletext) {
							$j("#prev_span").html(fulltitle);
						}
						break;
					case "next":
						if($j("#next_span").text() != titletext) {
							$j("#next_span").html(fulltitle);
						}
						break;
					default:
						if(jtem.id > 0) {
							currtrack += '<a href="/track/' + jtem.id + '">' + jtem.artist + ' - ' + jtem.title + '</a>';
							doraters = true;
							$j("#raters").css("visibility", "visible");
						} else {
							currtrack += jtem.artist + ' - ' + jtem.title;
							doraters = false;
							$j("#raters").css("visibility", "hidden");
						}
						if($j("#now_span").text() != titletext) {
							$j("#now_span").html(fulltitle);
							$j("#currtrack").html(currtrack);
							$j("#currtrackid").val(jtem.id);
							if(jtem.moodvote != '') {
								setMooder(jtem.moodvote, 1);
							} else {
								resetMooder();
							}
							var stardiv = '<div id="starrate_';
							stardiv += jtem.id;
							stardiv += '" class="stat ssr_starrater"><div class="statVal"><span class="ui-rater"><span class="ui-rater-starsOff" style="width: 180px;"><span class="ui-rater-starsOn" style="width:';
							var onwidth = jtem.starvote*18;
							stardiv += onwidth;
							stardiv += 'px;"></span></span></span></div></div>';
							$j("#starwrapper").html(stardiv);
							$j('.ssr_starrater .ui-rater-starsOn').css('width',onwidth+'px');
							$j('.ssr_starrater').rater({ 
								postHref: '/ajax/starrating',
								units: 10,
								step: 1
							});
						}
						break;
				}
			});
			if(listeners == 0) {
				listenertext = 'There are no listeners at the moment.';
			} else {
				if(listeners == 1) {
					listenertext += listeners + '</span> listener from ';
					countrylisttext = 'There is a listener from ' + countrylist + ' right now.';
				} else {
					listenertext += listeners + '</span> listeners from ';
					countrylisttext = 'There are people listening from ' + countrylist + ' right now.';
				}
				listenertext += '<span class="phat">';
				if(countries == 1) {
					listenertext += countries + '</span> country.';
				} else {
					listenertext += countries + '</span> countries.';
				}
			}
			$j("#current_time").html(nowtime);
			$j("#listeners").html(listenertext);
			$j("#listeners").attr('title', countrylisttext);
			$j(this).oneTime(nextUpdate, function() {
				tuneUpdate();
			});
			$j('.admcarter').click(function() {
				var vals = $j(this).attr('id').split('_');
				var notifier = "";
				switch(vals[1]) {
					case "act":
						notifier = "Act added to cart.";
						break;
					case "production":
						notifier = "Production added to cart.";
						break;
					default:
						notifier = "Track added to cart.";
						break;
				}
				var url = "/ajax/addtocart?type=" + vals[1] + "&id=" + vals[2];
				$j.ajax({
					type: "GET",
					url: url,
					success: function(items) {
						$j('#admcart').html('<a href="/cart">Cart [' + items + ']</a>');
						$j('#notifier').html(notifier);
						$j('#notifier').show();
						$j(this).oneTime(2000, function() {
							$j('#notifier').fadeOut(1000);
						});
					}
				});
				return false;
			});
		});
	});
}


function setMooder(mood, skipit) {
	var src = 'http://static.scenesat.com/img/mood_' + mood + '_24.png';
	var id = $j('#currtrackid').val();
	var doapi = true;
	if(skipit == 1) {
		doapi = false;
	}
	$j("#" + mood + "mood2").attr("src", "http://static.scenesat.com/img/mood_" + mood + "_24.png");
	$j("#ssr_mooder").css('display', 'none');
	$j("#ssr_mooder2").css('display', 'block');
	if(doapi) {
		$j.post("/api/mood", {
			mood: mood,
			id: id
		}, "");
	}
	return false;
}

function resetMooder() {
	$j("#ssr_mooder").css('display', 'block');
	$j("#ssr_mooder2").css('display', 'none');
	$j("#lowmood2").attr("src", "http://static.scenesat.com/img/mood_low_24_dis.png");
	$j("#midmood2").attr("src", "http://static.scenesat.com/img/mood_mid_24_dis.png");
	$j("#highmood2").attr("src", "http://static.scenesat.com/img/mood_high_24_dis.png");
}

function addQuickmenuitem(id) {
	var str = $j('#droppie').val();
	arr = str.split("|");
	$j('#qurl_' + id).val(arr[0]);
	$j('#qtitle_' + id).val(arr[1]);
}

function delQuickmenuitem(id) {
	$j('#qurl_' + id).val('');
	$j('#qtitle_' + id).val('');
}

function updateQuickmenu() {
	var str = '';
	var strl = 0;
	var j = 0;
	for(i = 0;i < 9;i++) {
		if($j('#qurl_' + i).val() != '') {
			if(str != '') {
				str = str + '|';
			}
			str = str + $j('#qurl_' + i).val() + '¤' + $j('#qtitle_' + i).val() + '¤' + $j('#qname_' + i).val();
			strl += $j('#qname_' + i).val().length;
			j++;
		}
	}
	$j('#data_quickmenu').val(str);
	switch(j) {
		case 0:
			$j('#qmdisplay').text('No quickmenu items defined.');
			break;
		case 1:
			$j('#qmdisplay').text('1 quickmenu item defined.');
			break;
		default:
			$j('#qmdisplay').text(j + ' quickmenu items defined.');
			break;
	}
	$j('#qmenudiv').toggle();
}

function updateDurations() {
	var str = '';
	var onoff = 1;
	for(i = 0;i < 10;i++) {
		if(str != '') {
			str = str + ',';
		}
		if($j('#durp_' + i).is(':checked')) {
			str = str + '1';
		} else {
			str = str + '0';
		}
	}
	$j('#data_showduration').val(str);
	$j('#durdiv').toggle();
}

function shouldSaveSettings() {
	if($j('#savesettingsbutton').attr('disabled')) {
		return false;
	} else {
		return true;
	}
}

function settingsChanged() {
	$j('#savesettingsbutton').removeAttr('disabled');
}

function prepGoogleSearch(data) {
	$j('#sitesearch').hide();
	$j('#gSearch').val(data);
	$j('#googlesearch').show();
	$j('#gSearch').focus();
}

function getTracklink(artist, title, id, act_id, linkmode, requester, requester_id, liveon, duration, showduration, showcarter) {
	var rStr = '';
	if(linkmode == 1) {
		if(id > 0) {
			if(act_id > 0) {
				rStr += '<a href="/act/' + act_id + '">' + artist + '</a>';
				if(showcarter) {
					rStr += show_carter(true, false, 'act', act_id);
				}
			} else {
				rStr += artist;
			}
			rStr += ' - ';
			rStr += '<a href="/track/' + id + '">' + title + '</a>';
			if(showcarter) {
				rStr += show_carter(true, false, 'track', id);
			}
		} else {
			if(act_id > 0) {
				rStr += '<a href="/act/' + act_id + '">' + artist + '</a> - ' + title;
				if(showcarter) {
					rStr += show_carter(true, false, 'act', act_id);
				}
			} else {
				rStr += artist + ' - ' + title;
			}
		}
	} else {
		if(id > 0) {
			rStr += '<a href="/track/' + id + '">';
		}
		rStr += artist + ' - ' + title;
		if(id > 0) {
			rStr += '</a>';
		}
		if(showcarter) {
			rStr += show_carter(true, false, 'track', id);
		}
	}
	if(!liveon && duration > 0 && showduration) {
		rStr += ' [' + secs2words(duration) + ']';
	}
	if(requester != '' && requester != undefined) {
		rStr += ' as ';
		if(liveon) {
			rStr += 'requested';
		} else {
			rStr += 'queued';
		}
		rStr += ' by ';
		if(requester_id > 0) {
			rStr  += '<a href="/member/' + requester_id + '">' + requester + '</a>';
		} else {
			rStr += requester;
		}
	}
	return rStr;
}

function secs2words(seconds) {
	ret = "";
	hours = Math.floor(seconds / 3600);
	if(hours > 0) {
		ret += hours;
		ret += ':';
	}
	minutes = Math.floor((seconds / 60)) % 60;
	if(minutes < 10) {
		ret += '0';
	}
	ret += minutes;
	ret += ':';
	seconds = seconds % 60;
	if(seconds < 10) {
		ret += '0';
	}
	ret += seconds;
	return ret;
}

function words2secs(str) {
	var rVal = 0;
	times = str.split(":");
	switch(times.length) {
		case 3:
			rVal += parseInt(times[0]*3600);
			rVal += parseInt(times[1]*60);
			rVal += parseInt(times[2]);
			break;
		case 2:
			rVal += parseInt(times[0]*60);
			rVal += parseInt(times[1]);
			break;
		default:
			rVal += parseInt(times[0]);
			break;
	}
	return rVal;
}

function trimNumber(s) {
	while (s.substr(0,1) == '0' && s.length>1) { s = s.substr(1,9999); }
	return s;
}

function show_carter(showit, uid, type, oid) {
	if(showit && oid > 0) {
		return '<a href="/cart/addto/' + type + '/' + oid + '" class="admcarter" id="acart_' + type + '_' + oid + '" title="Add to cart"><img src="http://static.scenesat.com/img/miniplus.png" alt="" /></a>';
	}
	return '';
}
