var prev = new Array;

function displayAd() {
	if($(currentItemId)) {
		   title = $(currentItemId).getProperty('song') ;
   		artist =  $(currentItemId).getProperty('artist')
		$('googlead').src = 'add.php?artist='+artist+'&keywords='+artist+'+'+artist+'+music+music'; //video+clip+cd+dvd+cd+dvd+dvd+music'; 
	}
}

function parseResult(response,id,where) {
	if(id == 'save') {
		alert('Save successful');
		console.log(response);
	} 
	else sethtml(where,response);	
}

function setLoading(where) {
	var el = document.getElementById(where);
	if(el) el.innerHTML = '<br/><br/><br/><center><img src="css/icons/loading.gif"></center>';
}

// ajax request
function queryHandler(id,opts,where) {
	if(lastfm == false && opts == '&view=search') opts = '&view=searchyt';
	else if(lastfm && opts == '&view=searchyt') opts = '&view=search';

	setPrev(id,opts,where);
	if(id == 'search') opts += "&artist=" + $('searchform').get('value');
	setLoading(where);
	dataSource = 'query.php?id=' + id + opts;
	
   var XMLHttpRequestObject = false;

   if(window.XMLHttpRequest && !(window.ActiveXObject)) {
      XMLHttpRequestObject = new XMLHttpRequest();
      XMLHttpRequestObject.overrideMimeType('text/xml');
   } else if(window.ActiveXObject) {
      XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
   }

   if(XMLHttpRequestObject) {
      XMLHttpRequestObject.open('GET',dataSource,true);
      XMLHttpRequestObject.onreadystatechange = function() {
         if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
            parseResult(XMLHttpRequestObject.responseText,id,where); // gets back json response
         }
      };
      XMLHttpRequestObject.send(null);
   }
}

function setPrev(id,opts,where) {
	var el = document.getElementById('prev');
	if(el) {
		var last = prev[prev.length-1];
		if(prev.length > 0) {
			el.innerHTML = "<a href='javascript:prev.pop();javascript:prev.pop();javascript:setLoading(\"contentright\");javascript:"+last+"'>Go back one step</a>";
		}
	}
	prev.push("queryHandler(\""+id+"\",\""+opts+"\",\""+where+"\")");
}

// evaluates the script blocks
// warning, regexps won't work
function sethtml(id,content) {
         var search = content;
         var script;
         
         var is_singleq = 0; var singleq = "'";
         var is_doubleq = 0; var doubleq = '"';
         var is_escaped = 0; var escap = "\\";
         var layer = 0;
			var toEval = new Array(); // only eval once the content has been added
               
         while( script = search.match(/(<script[^>]+javascript[^>]+>\s*(<!--)?)/)) {
            search = search.substr(search.indexOf(RegExp.$1) + RegExp.$1.length);
            if (!(endscript = search.match(/((-->)?\s*<\/script>)/))) break;
            block = search.substr(0, search.indexOf(RegExp.$1));
            search = search.substring(block.length + RegExp.$1.length);
            
            while(func = block.match(/(function(.+?)\((.*?)\)\s*\{)/)) {
               toEval.push(block.substr(0,block.indexOf(RegExp.$1)));
               // for evaluating non functions
               
               block = block.substr(block.indexOf(RegExp.$1) + RegExp.$1.length);
               name = RegExp.$2;
               param = RegExp.$3;
               
               is_singleq = 0;
               is_doubleq = 0;
               is_escaped = 0;
               layer = 0;
               
               
               for(i=0;i<block.length;i++) {
                  c = block.substr(i,1);
                  
                  if ((is_singleq || is_doubleq) && is_escaped) {
                     is_escaped = 0;
                  } else if (!is_doubleq && (c==singleq)) {
                     is_singleq = !is_singleq;
                  } else if (!is_singleq && (c==doubleq)) {
                     is_doubleq = !is_doubleq;
                  } else if ((is_singleq || is_doubleq) && (c==escap)) {
                     is_escaped = 1;
                  } else if ( c=="{") {
                     layer++;
                  } else if ( c=="}") {
                     if ( layer==0 ) {
                        break;
                     }
                     layer--;
                  }
               }
               
               code = block.substr(0,i-1);
               block = block.substr(i +1);
               
               code = code.replace(/\n/g, '\\n');
               code = code.replace(/\r/g, '\\r');
               code = code.replace(/'/g,"\\'");
               
               toEval.push(name + " = new Function('"+param+"','"+code+"');");
            }
            toEval.push(block); // for evaluating non functions
         }
         var temp = document.getElementById(id);
			if(temp) temp.innerHTML=content;
			else document.getElementById('contentright').innerHTML = content; // in case of going back one step for albumdetails in album listing
			for(var i=0; i<toEval.length; i++) {
				eval(toEval[i]);
			}
} 


