//======VARS
var player_status='';
var player_shuffle=0;
var player_repeat=0;
var player_repeat_playlist=0;
var pq_id ='';
var play_list ='';
var player_items = Array();

//======This function will initialize player items
function init_player_items(my_str){
player_items = my_str.split(',');
player_query(player_items[0],2);
}
//======This function is executed when query done
function player_query_done(id){
  var prev_css='prev2';
  var next_css='next2';
  
  if (id != '') {
    list_items = (play_list != '') ? play_list : player_items;
    
    var item = 0;
    
    for (i = 0; i < list_items.length; i++)
      if (id == list_items[i]) {
        item = i;
      }
    prev_css = ((item > 0) && (list_items.length>1)) ? 'prev' : 'prev2';
    next_css = ((item<list_items.length-1) && (list_items.length > 1)) ? 'next' : 'next2';
    
    document.getElementById('globalPlayerCurrentSongID').value = id;
  }
  
  ch_class('prev_but',prev_css);
  ch_class('next_but',next_css);
}
//======This function sends song query
function player_query(id, qmod) {
  var add_to_pl = document.getElementById('add_to_playlist_pl');
  var add_to_pl_new = document.getElementById('add_to_playlist_pl_new');
  
  if (add_to_pl != null)
    add_to_pl.value=id;
  if (add_to_pl_new !=null)
    add_to_pl_new.value=id;
  if ((id == pq_id) && (qmod != 1) && (qmod!=2))
    flash_call('play_snd','0');
  else
    ld('player_query','&id='+id+'&mod='+qmod,null,'player_query_done("'+id+'")');
}
//======This function updates song votes and button
function player_set_votes(html) {
  var ele = document.getElementById('pl_stars');
  $('#pl_stars').html(html);
  //ele.innerHTML = html;
  /*
  var stars=Math.floor(votes/200000);
  
  if (stars > 5)
    stars = 5;
  //============LIST ITEM
  //==Stars
  var ele = document.getElementById("pl_stars_"+id);
  
  if (ele != null)
    ele.innerHTML = '<img src="images/stars_'+stars+'.png" width="70" height="14" align="absmiddle" />';
  //==Vote button
  var ele = document.getElementById("pl_vote_but_"+id);
  
  if ((ele != null) &&(smode=='done')){
    ele.innerHTML='<strong>Voted!</strong>';
    ch_class("pl_vote_but_"+id,'voted');
  }
  //============PLAYER
  if (pq_id == id) {
    //==Stars
    var ele = document.getElementById("pl_stars");
    if (ele != null)
      ele.innerHTML='<img src="images/stars_'+stars+'.png" width="70" height="14" align="absmiddle" />';
    //==Vote button
    var ele = document.getElementById("pl_vote_but");
    
    if ((ele != null) &&(smode == 'done')) {
      ele.innerHTML = '<span class="globalPlayerVoted">Voted!</span>';
      ch_class("pl_vote_but",'voted');
    }
    if ((ele != null) &&(smode != 'done')) {
      ele.innerHTML = '       <span class="voteTxt-'+ songID +'"><a href="#" class="ajaxVote" id="'+id+'-'+songID+'">Vote!</a></span>';
      ch_class("pl_vote_but",'vote');
    }
  }*/
}

//======This function sets playlist
function player_set_playlist(ids) {
  play_list = ids;
  tmp_id = '';
  if (play_list != '')
    tmp_id = play_list[0];
  player_query(tmp_id, 2);
}

//======This function init sets playlist
function init_player_set_playlist(ids){
  ids2 = ids.split(',');
  player_set_playlist(ids2);
}

//======This function sends playlist query
function player_get_playlist(id){
if (id==''){
play_list ='';
player_set_playlist('');
}
else ld('player_get_playlist','&id='+id,null,'');
}

 //======This function handles html player's buttons
function player_call(action){
switch(action){

case 'play':
if (pq_id!=''){
flash_call('play_snd','0');
}else {
list_items = (play_list!='')?play_list:player_items;
if (list_items[0]!=null) player_query(list_items[0],0);
}
break;

case 'shuffle':
player_repeat=0;
player_shuffle=(player_shuffle==0)?1:0
if (player_shuffle==0) ch_class('shuffle_but','shuffle uiTooltip');
else ch_class('shuffle_but','shuffle_on uiTooltip');
if (player_repeat==0) ch_class('repeat_but','repeat uiTooltip');
else ch_class('repeat_but','repeat_on uiTooltip');
break;


case 'repeat':
player_repeat_playlist=0;
player_shuffle=0;
player_repeat=(player_repeat==0)?1:0
if (player_repeat==0) ch_class('repeat_but','repeat uiTooltip');
else ch_class('repeat_but','repeat_on uiTooltip');
if (player_repeat_playlist==0) ch_class('repeat_list_but','repeat_list uiTooltip');
else ch_class('repeat_list_but','repeat_list_on uiTooltip');
if (player_shuffle==0) ch_class('shuffle_but','shuffle uiTooltip');
else ch_class('shuffle_but','shuffle_on uiTooltip');

break;

case 'repeat_list':
player_repeat=0;
player_repeat_playlist=(player_repeat_playlist==0)?1:0
if (player_repeat_playlist==0) ch_class('repeat_list_but','repeat_list uiTooltip');
else ch_class('repeat_list_but','repeat_list_on uiTooltip');
if (player_repeat==0) ch_class('repeat_but','repeat uiTooltip');
else ch_class('repeat_but','repeat_on uiTooltip');
break;


case 'next':
list_items = (play_list!='')?play_list:player_items;

//===Init next_item with 1st item
var next_item=0;
var cur_item='';
//===Init player has song find next item
if (pq_id!=''){
for (i=0;i<list_items.length ;i++) if (pq_id==list_items[i]){ next_item=i+1;cur_item=i;}
if (player_shuffle==1){
next_item=Math.floor(Math.random()*list_items.length);
if ((next_item==cur_item)&&(list_items.length>1)) while (next_item==cur_item) next_item=Math.floor(Math.random()*list_items.length);
}

}
if (next_item < list_items.length) player_query(list_items[next_item],1);
else if (player_repeat_playlist==1) player_query(list_items[0],1);
break;

case 'prev':
list_items = (play_list!='')?play_list:player_items;

//===Init prev_item with 1st item
var prev_item=0;
var cur_item='';
//===Init player has song find prev item
if (pq_id!=''){
for (i=0;i<list_items.length ;i++) if (pq_id==list_items[i]){ prev_item=i-1;cur_item=i;}
if (player_shuffle==1){
prev_item=Math.floor(Math.random()*list_items.length);
if ((prev_item==cur_item)&&(list_items.length>1)) while (prev_item==cur_item) prev_item=Math.floor(Math.random()*list_items.length);
}

}
if (prev_item >=0) player_query(list_items[prev_item],1);
else if (player_repeat_playlist==1) player_query(list_items[list_items.length],1);
break;

}
}
//======This function is called by the swf for lagging information
function snd_log(log){
/*
var logwin = document.getElementById('logwindow');
logwin.value +=log+'\n';
logwin.scrollTop = logwin.scrollHeight
*/
}


//======This function is called by the swf on status change
function new_status(stat){
//var sndstat = document.getElementById('snd_status');
//sndstat.innerHTML=stat;
player_status = stat;
//==Change play button style
if (stat=='playing') ch_class('play_but','pausee');
else ch_class('play_but','play');
reset_inputs(player_items);
//==Switch
switch(stat){

case 'done':
if (player_repeat==1) flash_call('play_snd','1');
else if (play_list!='') player_call('next');
break;

}
}

//=======This function calls a function in swf with params
function flash_call(func,param){
var obj=getID('player');
if (obj) eval('obj.'+func+"('"+param+"')");
}

//======This function returns an object of an swf
function getID(swfID){
if(navigator.appName.indexOf("Microsoft") != -1)me = window[swfID];
else me = document[swfID];
return me;
}
//======This function changes css class of an element
function ch_class(id,newclass){
var myField = document.getElementById(id); 

if (myField != null)
  myField.className =newclass;
}
//======This function changes css class of an element
function ch_class_main_frame(id,newclass){
var myField = parent.frames['main_frame'].document.getElementById(id); 

if (myField != null)
  myField.className =newclass;
}


//======This function will reset songs play button
function reset_inputs(ids){
for (i=0;i<ids.length ;i++ ){
if ( ids[i]!=pq_id) ch_class_main_frame('play_but_'+ids[i],'play');
}

if (player_status=='playing') ch_class_main_frame('play_but_'+pq_id,'pausee');
else ch_class_main_frame('play_but_'+pq_id,'play');
}
//======This function will set player properties
function set_player_prop(proper,cur_id) {
  for (set_prop in  proper) {
    var propElement = document.getElementById(set_prop);
    
    if (propElement != null)
      propElement.innerHTML=proper[set_prop];
    
    var propElement = document.getElementById(set_prop+"_"+cur_id);
    
    if (propElement != null)
      propElement.innerHTML=proper[set_prop];
  }
}
//======This function will select a fake select option
function play_list_select(ele,pl_name,pl_id) {
  var holder_div = ele.offsetParent.id;
  var holder_link = document.getElementById(holder_div+'_link');
  var holder_var = document.getElementById(holder_div+'_var');
  var holder_form = document.getElementById(holder_div+'_form');
  
  if (holder_link != null)
    holder_link.innerHTML = pl_name;
  
  if (holder_var != null)
    holder_var.value=pl_id;
  
  //=Rest class of all subdivs
  var sub_items=document.getElementById(holder_div).getElementsByTagName('div');
  
  for (var i = 0; i < sub_items.length; i++) {
    if (sub_items[i].className = 'row_activ')
      sub_items[i].className = 'row';
	}
  //=Set class to clicked item
  ele.className='row_activ';
  //=Hide parent div
  divm(holder_div,3);
  //=========ACTION if form exits submit else change playlist
  if (holder_form != null)
    holder_form.submit();
  else
    player_get_playlist(pl_id);
}

//AJAX
function ld(url,snd,target, after)
{
var xmlhttp;
xmlhttp=null;
// code for Mozilla, etc.
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest()
  }
// code for IE
else if (window.ActiveXObject)
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
  }
if (xmlhttp!=null)
  {
  xmlhttp.open("POST","ajax/ajax."+url+'.php',true);
  xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  xmlhttp.send(snd);
  xmlhttp.onreadystatechange=function()
{

// if xmlhttp shows "loaded"
if (xmlhttp.readyState==4) {
  // if "OK"
  if (xmlhttp.status==200) {
    if (target!=null)
      document.getElementById(target).innerHTML=xmlhttp.responseText;
    else
      eval(xmlhttp.responseText);
    
    if (after !='')
      eval(after);
  }
  else {
    //alert("Problem retrieving data:" + xmlhttp.statusText)
  }
}
}
  }
else {
  //alert("Your browser does not support XMLHTTP.")
}
}

function divm( whichLayer ,me) //------- if me is 2 = show , if me is 3 = hide  else is togle
{
var elem, vis;
if( document.getElementById ) // this is the way the standards work
 elem = document.getElementById( whichLayer );
 else if( document.all ) // this is the way old msie versions work
 elem = document.all[whichLayer];
 else if( document.layers ) // this is the way nn4 works
 elem = document.layers[whichLayer];
if (elem!=null)
{
 vis = elem.style;
 // if the style.display value is blank we try to figure it out here
 if (vis.display==''&&elem.offsetWidth!=undefined&&elem.offsetHeight!=undefined)
 vis.display = (elem.offsetWidth!=0&&elem.offsetHeight!=0)?'block':'none';
 vis.display = (vis.display==''||vis.display=='block')?'none':'block';
 if (me=='2') vis.display = 'block';
 if (me=='3') vis.display = 'none';
}
}

<!--
//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2008 Adobe Systems Incorporated.  All rights reserved.
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
function ControlVersion()
{
	var version;
	var axo;
	var e;
	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}
	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			version = "WIN 6,0,21,0";
			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";
			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	
	return version;
}
// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString        = tempArray[1];			// "2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];
        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}
function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}
function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '';
  if (isIE && isWin && !isOpera)
  {
    str += '<object ';
    for (var i in objAttrs)
    {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params)
    {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '> </embed>';
  }
  document.write(str);
}
function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    
    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblclick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}
// -->
