// global flag
var isIE = false;

// global XML object
var xmlObj = null;

//SIG Editor variables
var gWidth = "350px";
var gHeight = "100px";
var gSelect = 1;
var gItem;

var gImgWidth = "100px";
var gImgHeight = "100px"; 

var gAbsLeft = "110px";

var gFont = "sans-serif";
var gSize = "12px";
var gBorderSize = "0px";
var gWeight = "normal";
var gStyle = "normal";

var gTxtColor = "black";
var gTxtBackgroundColor = "inherit";
var gSigBackgroundColor = "white";
var gLineLabel = "On";

var gLineLink = "On";
var gOpener = 'target="_blank" ';

var redoCount = Math.floor(Math.random()*50000); 

function ajaxRead(file){
  
  if(window.XMLHttpRequest){
      xmlObj = new XMLHttpRequest();
  } else if(window.ActiveXObject){
	  isIE = true;
      xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
  } else {
      return;
  }
  xmlObj.onreadystatechange = function(){
    if(xmlObj.readyState == 4){
    // only if "OK"
        if (xmlObj.status == 200) {
		//updateObj('xmlObj', xmlObj.responseText);
		//	alert(xmlObj.responseText);
		//	alert(xmlObj.responseXML.getElementsByTagName("title")[0].firstChild.data);
		//	alert(xmlObj.responseXML.getElementsByTagName("title").length);
	    
            clearTrackList();
            buildTrackList();
        
         } else {
            alert("There was a problem retrieving the XML data:\n" +
                xmlObj.statusText);
         }
    
    //alert(xmlObj.getAllResponseHeaders());
    //alert(xmlObj.responseXML.getElementsByTagName("ttl")[0].firstChild.data); // returns 720
    //alert(xmlObj.responseText);
    
    //updateObj('xmlObj', xmlObj.responseXML.getElementsByTagName('ttl')[0].firstChild.data);
    //updateObj('xmlObj', xmlObj.responseText);
     }
    }
    //alert('file = '+file);
    xmlObj.open ('GET', file, true);
    xmlObj.send ('');
  }
  function updateObj(obj, data){
   //document.getElementById(obj).innerHTML = data;
   document.getElementById(obj).firstChild.data = data;
  }

// retrieve text of an XML document element, including
// elements using namespaces
function getElementTextNS(prefix, local, parentElem, index) {
    var result = "";
	//console.log(prefix, local, parentElem, index);
    if (prefix && isIE) {
        // IE/Windows way of handling namespaces
        result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
    } else {
        // the namespace versions of this method 
        // (getElementsByTagNameNS()) operate
        // differently in Safari and Mozilla, but both
        // return value with just local name, provided 
        // there aren't conflicts with non-namespace element
        // names
       // result = parentElem.getElementsByTagName(local)[index];
	if (prefix == "") {
		result = parentElem.getElementsByTagName(local)[index];
	} else {
		result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
	}
	//console.log(parentElem)
	//console.log("local = %s result = %s index = %d",local,result,index);
    }
    if (result) {
        // get text, accounting for possible
        // whitespace (carriage return) text nodes 
	
        if (result.childNodes.length > 1) {
            return result.childNodes[1].nodeValue;
        } else {
            return result.firstChild.nodeValue;    		
        }
    } else {
        return "n/a";
    }
}


// empty Topics select list content
function clearTrackList() {
    var select = document.getElementById("tracks");
    while (select.length > 0) {
        select.remove(0);
    }
}

// add item to select element the less
// elegant, but compatible way.
function appendToSelect(select, value, content) {
    var opt;
    opt = document.createElement("option");
    opt.value = value;
    opt.appendChild(content);
    select.appendChild(opt);
}
  
// fill Topics select list with items from
// the current XML document
function buildTrackList() {
    var select = document.getElementById("tracks");
    var items = xmlObj.responseXML.getElementsByTagName("item");
    // loop through <title> elements, and add each nested
    // <title> element to Topics select element
    
    for (var i = 2; i < xmlObj.responseXML.getElementsByTagName("item").length; i++) {
	//alert('i = '+xmlObj.responseXML.getElementsByTagName("title")[i].firstChild.data);
    appendToSelect(select, i,
	//	 document.createTextNode(items[i].firstChild.nodeValue));
        document.createTextNode(getElementTextNS("", "title", items[i], 0)));
  }
  // clear detail display
  //document.getElementById("details").innerHTML = "";
}

function redoContent()
{
	if (gItem != null)
	{
		redoCount += 1;
		var tmp = redoCount + '';
        content  = '<div style="position:relative;border: '+gBorderSize+' solid black; width:' + gWidth + '; ';
		content += 'height: ' + gHeight + '; padding: 5px; margin: 5px;';
		content += 'background-color: ' + gSigBackgroundColor + '; text-align: left;" title="RhapSIGody.com - a Rapid SIG Creator">';
        content += '<img src="'+getElementTextNS("rhap", "album-art", gItem, 0)+'" width="' + gImgWidth + '" height="' + gImgHeight + '" title="www.RhapSIGody.com" />';
        content += '<span title="www.RhapSIGody.com" style="position:absolute;left:'+gAbsLeft+';top:5px;border: '+gBorderSize+' solid black;color:' + gTxtColor + ';';
        content += 'background-color:' + gTxtBackgroundColor + ';';
        content += ' font-weight:'+gWeight+'; font-style:'+gStyle+'; padding:5px; font-family: ' + gFont + ';font-size: '+gSize+';">'; 
		if (gLineLink == "On")
		{
			//play-href
			content += '<style>#sid'+tmp+' {color:' + gTxtColor + ';font-style:'+gStyle+'; font-family: ' + gFont + 
			';text-decoration:none;}</style>';
			content += '<a id="sid'+tmp+'" href="'+getElementTextNS("rhap", "play-href", gItem, 0)+'" '+gOpener+'>';
		}

//		content += '<a href="javascript:void%200" //onclick="window.open(\'http://www.rhapsody.com/player?rcid=tra.2050076\',\'\',\'width=270,height=350,left=800,top=30\')">Listen to Roundabout by Yes</a>';

        if (gLineLabel == "On")  content += 'Artist:  ';
        content += getElementTextNS("rhap", "artist", gItem, 0); 
        content += '<br />';
        if (gLineLabel == "On")  content += 'Track:  ';
        content += getElementTextNS("rhap", "track", gItem, 0); 
        content += '<br />';
        if (gLineLabel == "On")  content += 'Album: ';
        content += getElementTextNS("rhap", "album", gItem, 0); 
		if (gLineLink == "On")
			content += '</a>';	
        content += '</span> </div>';
        
        div = document.getElementById("details");
        div.innerHTML = "";
        div.innerHTML = content;
        
        document.getElementById( 'embedResults' ).style.display = 'block';
        document.getElementById( 'editor' ).style.display = 'block'; 
		document.getElementById( 'sig' ).style.display = 'block';
        document.getElementById( 'details' ).style.display = 'block';   
		document.getElementById( 'layoutEditor' ).style.display = 'block';
		document.getElementById( 'cutPaste' ).style.display = 'block';

        document.getElementById('codeArea').value =  content ;
     }
}


function getHeight(evt)
{
	evt = (evt) ? evt : ((window.event) ? window.event : null);	
	 var item, content, div, code;
    if (evt) 
    {
        var select = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if (select && select.options.length > 1) 
        {
            gHeight = select.value;
            switch (gHeight)
            {
				case '75px': //alert("set image to 65px");
					gImgWidth = "75px"; gImgHeight = "75px";gAbsLeft = "85px";
					break;
				case '100px': //alert("set image to 90px");
					gImgWidth = "100px"; gImgHeight = "100px";gAbsLeft = "110px";
					break;
				case '125px': //alert("set image to 115px");
					gImgWidth = "125px"; gImgHeight = "125px";gAbsLeft = "135px";
					break;
				case '150px': //alert("set image to 140px");
					gImgWidth = "150px"; gImgHeight = "150px";gAbsLeft = "160px";	
					break;
				case '175px': //alert("set image to 165px");
					gImgWidth = "175px"; gImgHeight = "175px";gAbsLeft = "185px";	
					break;
				default: gImgWidth = "90px"; gImgHeight = "90px";
            }
            if (gItem != null)
               redoContent();
		}
	}
}

function getItem(evt, item) {
	
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	
	 
    if (evt) {
        var select = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if (select && select.options.length > 1) {
            item = select.value;
            if (item != null)
				redoContent();       
		}
	}
}


 function getWidth(evt) {
	
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	
	 var item, content, div, code;
    if (evt) {
        var select = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if (select && select.options.length > 1) {
         
            gWidth = select.value;
            if (gItem != null)
				redoContent();       
		}
	}
}

function getSigBackgroundColor(evt) {
	
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	
	 var item, content, div, code;
    if (evt) {
        var select = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if (select && select.options.length > 1) {
         
            gSigBackgroundColor = select.value;
            if (gItem != null)
				redoContent();       
		}
	}
}

function getTxtBackgroundColor(evt) {
	
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	
	 var item, content, div, code;
    if (evt) {
        var select = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if (select && select.options.length > 1) {
         
            gTxtBackgroundColor = select.value;
            if (gItem != null)
				redoContent();       
		}
	}
}

function getTxtColor(evt) {
	
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	
	 var item, content, div, code;
    if (evt) {
        var select = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if (select && select.options.length > 1) {
         
            gTxtColor = select.value;
            if (gItem != null)
				redoContent();       
		}
	}
}

function getFont(evt) {
	
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	
	 var item, content, div, code;
    if (evt) {
        var select = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if (select && select.options.length > 1) {
         
            gFont = select.value;
            if (gItem != null)
				redoContent();       
		}
	}
}

function getSize(evt) {
	
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	
	 var item, content, div, code;
    if (evt) {
        var select = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if (select && select.options.length > 1) {
         
            gSize = select.value;
            if (gItem != null)
				redoContent();       
		}
	}
}
function getWeight(evt) {
	
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	
	 var item, content, div, code;
    if (evt) {
        var select = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if (select && select.options.length > 1) {
         
            gWeight = select.value;
            if (gItem != null)
				redoContent();       
		}
	}
}

function getStyle(evt) {
	
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	
	 var item, content, div, code;
    if (evt) {
        var select = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if (select && select.options.length > 1) {
         
            gStyle = select.value;
            if (gItem != null)
				redoContent();       
		}
	}
}

function getBorderSize(evt) {
	
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	
	 var item, content, div, code;
    if (evt) {
        var select = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if (select && select.options.length > 1) {
         
            gBorderSize = select.value;
            if (gItem != null)
				redoContent();       
		}
	}
}

function getLineLabel(evt) {
	
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	
	 var item, content, div, code;
    if (evt) {
        var select = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if (select && select.options.length > 1) {
         
            gLineLabel = select.value;
            if (gItem != null)
				redoContent();       
		}
	}
}


function showDetail(evt) {
	
    evt = (evt) ? evt : ((window.event) ? window.event : null);
   
    var item, content, div, code;
    if (evt) {
        var select = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if (select && select.options.length > 1) {
         
            gSelect = select.value;
            item = xmlObj.responseXML.getElementsByTagName("item")[gSelect];
            gItem = item;
            redoContent();
        }
    }
}

function createEmbedForm( f ){

	//if( f.value.substring(0,60) == 'http://feeds.rhapsody.com/user-track-history.rss?rhapUserId=' ){
	if( f.value.substring(0,33) == 'http://feeds.rhapsody.com/member/' ){

		var inputRSSPath;

		inputRSSPath = encodeURI('read4.php?usertrackhist=' + f.value );
		//  gImgWidth = "100px";
		//  gImgHeight = "100px"; 

		//  gAbsLeft = "110px";

		//r gFont = "sans-serif"; //txtFont
		//r gSize = "12px"; //txtSize
		//r gBorderSize = "0px"; BorderSize
		//r gWeight = "normal"; txtWeight
		//r gStyle = "normal";

		//r gTxtColor = "black"; //txtColor
		//r gTxtBackgroundColor = "inherit";
		//r gSigBackgroundColor = "white";
		//r gLineLabel = "On"; lineLabel
		
		document.getElementById( 'editor' ).style.display = 'block';
		document.getElementById( 'sig_display_area' ).style.display = 'none';
		document.getElementById( 'rhapsody_top' ).style.display = 'none';
		
		// initialize globals
		gHeight = document.getElementById( 'height' ).value;
		switch (gHeight)
        {
			case '75px': //alert("set image to 65px");
				gImgWidth = "75px"; gImgHeight = "75px";gAbsLeft = "85px";
				break;
			case '100px': //alert("set image to 90px");
				gImgWidth = "100px"; gImgHeight = "100px";gAbsLeft = "110px";
				break;
			case '125px': //alert("set image to 115px");
				gImgWidth = "125px"; gImgHeight = "125px";gAbsLeft = "135px";
				break;
			case '150px': //alert("set image to 140px");
				gImgWidth = "150px"; gImgHeight = "150px";gAbsLeft = "160px";	
				break;
			case '175px': //alert("set image to 165px");
				gImgWidth = "175px"; gImgHeight = "175px";gAbsLeft = "185px";	
				break;
			default: gImgWidth = "90px"; gImgHeight = "90px";
        }
		
		gWidth = document.getElementById( 'width' ).value;
		gSigBackgroundColor = document.getElementById( 'sigBackgroundColor' ).value;
		gTxtBackgroundColor = document.getElementById( 'txtBackgroundColor' ).value;
		gTxtColor = document.getElementById( 'txtColor' ).value;
		gFont = document.getElementById( 'txtFont' ).value;
		gSize = document.getElementById( 'txtSize' ).value;
		gWeight = document.getElementById( 'txtWeight' ).value;
		gBorderSize  = document.getElementById( 'BorderSize' ).value;
		gLineLabel  = document.getElementById( 'lineLabel' ).value;
		
		
		

		ajaxRead(inputRSSPath);

		} else alert( "Please paste the path to your Rhapsody Recently played tracks RSS feed into the text box" );
}

