// JavaScript Document
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_preloadImages() { //v3.0
	  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
		var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
		if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
	}
	
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function ExCol(divid){
	var excol_status = document.getElementById("status"+divid);
	var excol_update = document.getElementById("update"+divid);
			
	if (excol_update.value == "closed")
		{
			excol_status.src = "images/template/minus.gif";
			excol_update.value = "open";
		}
			else
		{
			excol_status.src = "images/template/plus.gif";
			excol_update.value = "closed";
		}		
}

function expandCollapse(ec_divid,ec_spanid,ec_status){
	var expandCollapse_status = document.getElementById(ec_status);
	var expandCollapse_span = document.getElementById(ec_spanid);
			
	if (expandCollapse_status.value == "more")
		{
			expandCollapse_status.value = "less";
			expandCollapse_span.innerHTML = "<a onClick=\"animatedcollapse.toggle('"+ec_divid+"');expandCollapse('"+ec_divid+"','"+ec_spanid+"','"+ec_status+"')\" onMouseOver=\"this.style.cursor='pointer'\" href=\"javascript:void(0);\" class=\"BlueRedDashedLinks\">less results</a>";
			
		}
			else
		{
			expandCollapse_status.value = "more";
			expandCollapse_span.innerHTML = "<a onClick=\"animatedcollapse.toggle('"+ec_divid+"');expandCollapse('"+ec_divid+"','"+ec_spanid+"','"+ec_status+"')\" onMouseOver=\"this.style.cursor='pointer'\" href=\"javascript:void(0);\" class=\"BlueRedDashedLinks\">more results</a>";
			
		}		
}

function addEvent(obj, evType, fn){ 
	if (obj.addEventListener){ 
		obj.addEventListener(evType, fn, false); 
	return true; 
	} else if (obj.attachEvent){ 
		var r = obj.attachEvent("on"+evType, fn); 
		return r; 
	} else { 
		return false; 
	} 
}
//addEvent(window, 'load', closeCells);
//addEvent(window, 'load', MainBanner);
//addEvent(window, 'load', setAutoComplete);

//function setAutoComplete(){
//	var options = {
//		script: "elements/ajax/lookup.asp?",
//		varname: "s",
//		json: false
//	};
//	var as = new AutoSuggest('s', options);
//}

function closeCells() {
	animatedcollapse.toggle('djchart')
	animatedcollapse.toggle('forum')
	animatedcollapse.toggle('events')
	animatedcollapse.toggle('shoppingcart')
}

function AJAXInteraction(url, callback) {
	
				var req = init();
				req.onreadystatechange = processRequest;
					
				function init() {
				  if (window.XMLHttpRequest) {
					return new XMLHttpRequest();
				  } else if (window.ActiveXObject) {
					return new ActiveXObject("Microsoft.XMLHTTP");
				  }
				}
				
				function processRequest () {
				  if (req.readyState == 4) {
					if (req.status == 200) {
					  if (callback) callback(req.responseXML);
					}
				  }
				}
			
				this.doGet = function() {
				  // make a HTTP GET request to the URL asynchronously
				  req.open("GET", url, true);
				  req.send(null);
				}
			}
			
			
			
			
			function CheckStock(pid) { 
				var waiting = document.getElementById("waiting");
				var cart = document.getElementById("mycart");
				
				waiting.style.display = "block";
				cart.style.display = "none";
				
				var url = "elements/ajax/mp3_select.asp?p=" + encodeURIComponent(pid);
				var ajax = new AJAXInteraction(url, AdjustStockLevel); 
				ajax.doGet(); 
			}
		
			function CheckTicketStock(tid) { 
				var waiting = document.getElementById("waiting");
				var cart = document.getElementById("mycart");
				
				waiting.style.display = "block";
				cart.style.display = "none";
				
				var url = "elements/ajax/checkticketstock.asp?p=" + encodeURIComponent(tid);
				var ajax = new AJAXInteraction(url, AdjustStockLevel); 
				ajax.doGet(); 
			}
			
			
			
			
			//*********************************************************
			// ADJUST QUANTITY MENU
			//*********************************************************			
			function AdjustStockLevel(responseXML) {
			
			    var cart = document.getElementById("mycart");
				var waiting = document.getElementById("waiting");
				
				waiting.style.display = "none";
				cart.style.display = "block";
				
				var product_artist = document.getElementById("artistname");
				var product_title = document.getElementById("albumname");
				var product_coverurl = document.getElementById("cover");
				var product_price = document.getElementById("price");
				var product_tracks = document.getElementById("tracklisting");
				
				
				
				product_artist.innerHTML = responseXML.getElementsByTagName("artist")[0].firstChild.nodeValue;
				product_title.innerHTML = responseXML.getElementsByTagName("title")[0].firstChild.nodeValue;
				product_coverurl.src = "http://www.swagrecords.com/product/"+responseXML.getElementsByTagName("coverurl")[0].firstChild.nodeValue;
				product_price.innerHTML = responseXML.getElementsByTagName("netprice")[0].firstChild.nodeValue;
				product_tracks.innerHTML = responseXML.getElementsByTagName("tracks")[0].firstChild.nodeValue;
			   
			   //var stocklevel = responseXML.getElementsByTagName("stock")[0].firstChild.nodeValue;
			   var stocklevel = responseXML.getElementsByTagName("availablequantity")[0].firstChild.nodeValue;
			   //var quantitymenu = document.getElementById("q");
			   //var menuitems = "";
			   var quantitymenu = document.getElementById("qmenu");
			   quantitymenu.innerHTML = stocklevel;
			   //alert(quantitymenu.value);
			   
			   //quantitymenu.options.length=0;
			   
			   //if (stocklevel == "0") {	
				   
				   //var menuitems = "0"
				   //addOption("q",menuitems,menuitems)
			
				//} else {
			
				   //for (var i=0; i < stocklevel;++i){
					   //addOption("q",i+1,i+1)
				   //}
				//} 
				
				//waiting.style.display = "none";
				//cart.style.display = "block";
			}
			
function addOption(selectbox,text,value )
{
var optn = document.createElement("OPTION");
var menu = document.getElementById(selectbox);
	optn.text = text;
	optn.value = value;
	menu.options.add(optn);
}		

String.prototype.trim = function () {
	return this.replace(/^\s*/, "").replace(/\s*$/, "");
}
			
function checkSearch()
{
var searchbox = document.getElementById("s");
var s = new String(searchbox.value);
	s=s.trim();

	if (s.length == 0||s == "Enter your search terms here")
		{
		alert("Please enter a search term.");
		}else{
		document.searchfrm.submit();
	}
}
		
function showtxt(thisfield, defaulttxt) 
	{
		thisfield.style.backgroundColor = '#FFFFFF';
		thisfield.style.fontStyle = 'normal'
		if (thisfield.value == defaulttxt) {
			thisfield.style.color = "#000";
			thisfield.value = "";
			thisfield.style.fontStyle = 'normal'
		}
	} 
	
function hidetxt(thisfield, defaulttxt) 
	{
		thisfield.style.backgroundColor = '#FFFFFF';
		thisfield.style.fontStyle = 'normal'
		if (thisfield.value == "") {
			thisfield.style.color = "#999";
			thisfield.value = defaulttxt;
			thisfield.style.fontStyle = 'italic'
		}
	}		
	
	
//J QUERY SCROLLER
/**
* author Remy Sharp
* url http://remysharp.com/tag/marquee
*/

(function ($) {
    $.fn.marquee = function (klass) {
        var newMarquee = [],
            last = this.length;

        // works out the left or right hand reset position, based on scroll
        // behavior, current direction and new direction
        function getReset(newDir, marqueeRedux, marqueeState) {
            var behavior = marqueeState.behavior, width = marqueeState.width, dir = marqueeState.dir;
            var r = 0;
            if (behavior == 'alternate') {
                r = newDir == 1 ? marqueeRedux[marqueeState.widthAxis] - (width*2) : width;
            } else if (behavior == 'slide') {
                if (newDir == -1) {
                    r = dir == -1 ? marqueeRedux[marqueeState.widthAxis] : width;
                } else {
                    r = dir == -1 ? marqueeRedux[marqueeState.widthAxis] - (width*2) : 0;
                }
            } else {
                r = newDir == -1 ? marqueeRedux[marqueeState.widthAxis] : 0;
            }
            return r;
        }

        // single "thread" animation
        function animateMarquee() {
            var i = newMarquee.length,
                marqueeRedux = null,
                $marqueeRedux = null,
                marqueeState = {},
                newMarqueeList = [],
                hitedge = false;
                
            while (i--) {
                marqueeRedux = newMarquee[i];
                $marqueeRedux = $(marqueeRedux);
                marqueeState = $marqueeRedux.data('marqueeState');
                
                if ($marqueeRedux.data('paused') !== true) {
                    // TODO read scrollamount, dir, behavior, loops and last from data
                    marqueeRedux[marqueeState.axis] += (marqueeState.scrollamount * marqueeState.dir);

                    // only true if it's hit the end
                    hitedge = marqueeState.dir == -1 ? marqueeRedux[marqueeState.axis] <= getReset(marqueeState.dir * -1, marqueeRedux, marqueeState) : marqueeRedux[marqueeState.axis] >= getReset(marqueeState.dir * -1, marqueeRedux, marqueeState);
                    
                    if ((marqueeState.behavior == 'scroll' && marqueeState.last == marqueeRedux[marqueeState.axis]) || (marqueeState.behavior == 'alternate' && hitedge && marqueeState.last != -1) || (marqueeState.behavior == 'slide' && hitedge && marqueeState.last != -1)) {                        
                        if (marqueeState.behavior == 'alternate') {
                            marqueeState.dir *= -1; // flip
                        }
                        marqueeState.last = -1;

                        $marqueeRedux.trigger('stop');

                        marqueeState.loops--;
                        if (marqueeState.loops === 0) {
                            if (marqueeState.behavior != 'slide') {
                                marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState);
                            } else {
                                // corrects the position
                                marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir * -1, marqueeRedux, marqueeState);
                            }

                            $marqueeRedux.trigger('end');
                        } else {
                            // keep this marquee going
                            newMarqueeList.push(marqueeRedux);
                            $marqueeRedux.trigger('start');
                            marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState);
                        }
                    } else {
                        newMarqueeList.push(marqueeRedux);
                    }
                    marqueeState.last = marqueeRedux[marqueeState.axis];

                    // store updated state only if we ran an animation
                    $marqueeRedux.data('marqueeState', marqueeState);
                } else {
                    // even though it's paused, keep it in the list
                    newMarqueeList.push(marqueeRedux);                    
                }
            }

            newMarquee = newMarqueeList;
            
            if (newMarquee.length) {
                setTimeout(animateMarquee, 25);
            }            
        }
        
        // TODO consider whether using .html() in the wrapping process could lead to loosing predefined events...
        this.each(function (i) {
            var $marquee = $(this),
                width = $marquee.attr('width') || $marquee.width(),
                height = $marquee.attr('height') || $marquee.height(),
                $marqueeRedux = $marquee.after('<div ' + (klass ? 'class="' + klass + '" ' : '') + 'style="display: block-inline; width: ' + width + 'px; height: ' + height + 'px; overflow: hidden;"><div style="float: left; white-space: nowrap;">' + $marquee.html() + '</div></div>').next(),
                marqueeRedux = $marqueeRedux.get(0),
                hitedge = 0,
                direction = ($marquee.attr('direction') || 'left').toLowerCase(),
                marqueeState = {
                    dir : /down|right/.test(direction) ? -1 : 1,
                    axis : /left|right/.test(direction) ? 'scrollLeft' : 'scrollTop',
                    widthAxis : /left|right/.test(direction) ? 'scrollWidth' : 'scrollHeight',
                    last : -1,
                    loops : $marquee.attr('loop') || -1,
                    scrollamount : $marquee.attr('scrollamount') || this.scrollAmount || 2,
                    behavior : ($marquee.attr('behavior') || 'scroll').toLowerCase(),
                    width : /left|right/.test(direction) ? width : height
                };
            
            // corrects a bug in Firefox - the default loops for slide is -1
            if ($marquee.attr('loop') == -1 && marqueeState.behavior == 'slide') {
                marqueeState.loops = 1;
            }

            $marquee.remove();
            
            // add padding
            if (/left|right/.test(direction)) {
                $marqueeRedux.find('> div').css('padding', '0 ' + width + 'px');
            } else {
                $marqueeRedux.find('> div').css('padding', height + 'px 0');
            }
            
            // events
            $marqueeRedux.bind('stop', function () {
                $marqueeRedux.data('paused', true);
            }).bind('pause', function () {
                $marqueeRedux.data('paused', true);
            }).bind('start', function () {
                $marqueeRedux.data('paused', false);
            }).bind('unpause', function () {
                $marqueeRedux.data('paused', false);
            }).data('marqueeState', marqueeState); // finally: store the state
            
            // todo - rerender event allowing us to do an ajax hit and redraw the marquee

            newMarquee.push(marqueeRedux);

            marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState);
            $marqueeRedux.trigger('start');
            
            // on the very last marquee, trigger the animation
            if (i+1 == last) {
                animateMarquee();
            }
        });            

        return $(newMarquee);
    };
}(jQuery));

$(function () {
        // basic version is: $('div.demo marquee').marquee() - but we're doing some sexy extras
        
        $('div.demo marquee').marquee('pointer').mouseover(function () {
            $(this).trigger('stop');
        }).mouseout(function () {
            $(this).trigger('start');
        }).mousemove(function (event) {
            if ($(this).data('drag') == true) {
                this.scrollLeft = $(this).data('scrollX') + ($(this).data('x') - event.clientX);
            }
        }).mousedown(function (event) {
            $(this).data('drag', true).data('x', event.clientX).data('scrollX', this.scrollLeft);
        }).mouseup(function () {
            $(this).data('drag', false);
        });
    });