﻿/********************
 *   basilisk.ch	*
 *    by baz.ch		*
 ********************/

var refresh_onAir = 30000;		// refresh 30 sec
var refresh_Sendung = 1800000;	// refresh 30 min
var refresh_News = 300000;		// refresh 5 min

// Teplates 4 json-p
var tmplHeadOnAir = jQuery.template('<strong>${artist}</strong><br />${track}');
var tmplPlayerOnAir = jQuery.template('<div class="time">${start}</div> <div class="artist">${artist}</div><br /><div class="track">${track}</div>');
var tmplPlayListOnAir = jQuery.template('<div class="playlist-item ${cssclass}"><div class="time">${start}</div><div class="artist">${artist}</div><div class="track">&nbsp;- ${track}</div></div>');
var tmplPlayerSendung = jQuery.template('${start} - ${end} Uhr<br /><strong>${title}</strong>');
var tmplNews = jQuery.template('${start}<br /><strong>${title}</strong>');

function getContent(selector, method, values, template) {
	var bCheck = true;
	var url = "";
	var sUrl = "";
	// check values
	if (typeof(selector) == 'undefined') 	{ bCheck = false; }
	if (typeof(method) == 'undefined') 		{ bCheck = false; }
	if (typeof(values) == 'undefined')		{ bCheck = false; }
	if (typeof(template) == 'undefined')	{ bCheck = false; }
	
	// provider
	if (method == 'getOnAir') 
		{url = 'http://onair.basilisk.ch/webservice/basilisk/onair.cfc'; }
	else 
		{url = 'http://www.basilisk.ch/webservice/basilisk/service.cfc'; }
	
	sUrl = url + '?method=' + method + values + '&callback=?';
	
	if (bCheck){
		jQuery.getJSON(sUrl, function(json) {
			switch (method) {
				case 'getOnAir':
					if (json.length > 0) {
						if (json.length == 1) {
							jQuery(selector).html(template, {
								start: json[0].START,
								artist: json[0].ARTIST,
								track: json[0].TRACK
							});
							// refresh
							window.setTimeout(getContent, refresh_onAir, selector, method, values, template);
						}
						else {
							// erst mal leeren
							jQuery(selector).html("");
							// speichere den aktuellen titel
							currentTrack = 0;
							for (i = 0; i < json.length; i++) {
								jQuery(selector).append(template, {
									start: json[i].START,
									artist: json[i].ARTIST,
									track: json[i].TRACK,
									cssclass: json[i].CSSCLASS
								});
								if (json[i].CSSCLASS == 'top') 
									currentTrack = i;
							}
							
							// position current track on top
							jQuery("#box-onair-playlist").css({
								marginTop: (-(currentTrack * 26) + 1) + "px"
							});
							
							// refresh 30 sec
							window.setTimeout(getContent, refresh_onAir, selector, method, values, template);
						}
					}
					break;
				case 'getNews':
					if (json.length > 0) {
						jQuery(selector).html(template, {
							start: json[0].START,
							title: json[0].TITLE
						});
					}
					else {
						// wenn keine daten
						jQuery(selector).html('<img src="/_signs/loading_red.gif" alt="Lade News" /> &nbsp; Lade News');
						
					}
					// refresh 60 sec
					window.setTimeout(getContent, refresh_News, selector, method, values, template);
					break;
				case 'getSendung':
					if (json.length > 0) {
						jQuery(selector).html(template, {
							start: json[0].START,
							end: json[0].END,
							title: json[0].TITLE
						});
					}
					else {
						jQuery(selector).html(template, {
							start: '',
							end: '',
							title: ''
						});
					}
					// refresh
					window.setTimeout(getContent, refresh_Sendung, selector, method, values, template);
					break;
			}
		});
	}else{
		//alert(sUrl);
	}
}

// init on docReady
jQuery(document).ready(function(){
	
	/** search form **/
	jQuery("#slider").css('display','block');
	jQuery("input.clearfield").bind("focus", function() {if(jQuery(this).attr("value") == jQuery(this).attr("rel")){jQuery(this).val("");}});
	jQuery("input.clearfield").bind("blur", function() {if(jQuery(this).attr("value") == ''){jQuery(this).val(jQuery(this).attr("rel"));}});
	
	/** ajax/json caller **/
	// head onair
	getContent('#head-ticker','getOnAir','&nMaxCount=1',tmplHeadOnAir)
	// head news
	getContent('#head-news','getNews','&nLastIndex=1',tmplNews);
	// sideline playlist
	getContent('#box-onair-playlist','getOnAir','&nMaxCount=10',tmplPlayListOnAir);
	
	/** web-radio **/
	// bind webRadioPlayer popup
	jQuery("#head-player").bind("click", function(){
		webradio = window.open('/_webradio/webradio.cfm', "WebRadio", "width=436,height=278,scrollbars=no,scrollbars=no,resizable=no,dependent=no");
		webradio.focus();
		webradio.moveTo(100,100);
	});

	/* PLAYLIST */
	
	// binds
	jQuery("#pl-command-up").click(function(){	playlistMove('up')	});
	jQuery("#pl-command-down").click(function(){ playlistMove('down')});

	// set default to int=0
	jQuery("#box-onair-playlist").css("marginTop","8px");

	function playlistMove(dir){
		var nTop = parseInt(jQuery("#box-onair-playlist").css("margin-top"));
		var nElementHeight = 26;
		var nCurrentTop = nTop;
		var nItemCount = jQuery(".playlist-item").length;
		var nMaxTop = -((nItemCount -3 ) * nElementHeight);
		var nMinTop = 0;
		
		// evalualte new pos
		if(dir == 'up'){
			nTop += nElementHeight;
		}else if(dir == 'down'){
			nTop -= nElementHeight;
		}

		/*** check range ***/

		// no up
		if(nTop > nMinTop){
			nTop = nCurrentTop;
		}else if(nTop >= nMaxTop && nTop < nMinTop){
			jQuery("#pl-command-up img").attr("src","/_signs/up_enabled.gif");
		}else{
			jQuery("#pl-command-up img").attr("src","/_signs/up_enabled.gif");
			jQuery("#pl-command-down img").attr("src","/_signs/down_disabled.gif");
		}

		// no down
		if(nTop < nMaxTop){
			nTop = nCurrentTop;
		}else if(nTop >= nMaxTop && nTop < nMinTop){
			jQuery("#pl-command-down img").attr("src","/_signs/down_enabled.gif");
		}else{
			jQuery("#pl-command-down img").attr("src","/_signs/down_enabled.gif");
			jQuery("#pl-command-up img").attr("src","/_signs/up_disabled.gif");
		}

		// move
		jQuery("#box-onair-playlist").animate({marginTop:nTop + "px"});
	}

});

// zpam spiderguard
function kontaktIt(str1, str2, str3, str4){
	var returnValue = '<a href=\"mailto:' + str1 + '@' + str2 + '\" >';
	if (str3 != undefined && str3.length) 
		returnValue = returnValue + ' class="' + str3 + '" >';
	if (str4 != undefined && str4.length) 
		returnValue = returnValue + str4;
	returnValue = returnValue + str1 + '@' + str2 + '</a>';
	document.write(returnValue);
}

function urlParam( name, url ){
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( url );
  if( results == null )
    return "";
  else
    return results[1];
}

function limitChars(textid, limit, infofield){
	var text = jQuery('#'+textid).val();
	var textlength = text.length;

	if(textlength > limit){
		jQuery(infofield).html('Es können maximal ' +limit+ ' Zeichen eingegeben werden.');
		jQuery('#'+textid).val(text.substr(0,limit));
		return false;
	}else{
		jQuery(infofield).html('Noch ' +(limit - textlength)+ ' Zeichen übrig.');
		return true;
	}
}
function play(htmlid, flashvars, height){
	swfobject.embedSWF("/_exagora2/jwplayer/player.swf", htmlid, "246", height, "9", true, flashvars);
}
