var buytimer = 0;
var baskettimer = 0;

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}

function randomiseCovers() {
    ahah("/inc/random_covers.php","random");
    function_timer = window.setTimeout('delayProgressForCovers()', 500);
}

function browse1Clicked(selection) {
    $('#browse3').slideUp('slow');
    $('#browse2').slideUp('slow');
    $('#browse2').load('/inc/storebrowse2.php', { view : selection }).slideDown('slow');
    $('#browse4').html("Browsing "+ selection);
}

function browse2Clicked(selection1,selection2,extra) {
    $('#browse3').slideUp('slow');
    $('#browse3').load('/inc/storebrowse3.php', { view: selection1, id: selection2, extra: extra }).slideDown('slow'); 
    $('#browse4').html("Browsing "+ selection1);
}

function browse3Clicked(selection) {
    $('#topbrowse').slideUp('slow');
    //$('#browseBack').slideDown().animate({ backgroundColor:'black'});
    $('#browseBack').slideDown();
    //$('#browse4').load('/inc/release_item.php', { browserelease: selection, js: 1 }).animate( { backgroundColor: 'silver' }, 1500);
    $('#browse4').load('/inc/release_item.php', { browserelease: selection, js: 1 });
    //$('#browse4').load('/inc/release_item.php', { browserelease: selection, js: 1 });
}

function browseBack(){
    $('#topbrowse').slideDown('slow');
    //$('#browse4').animate( { backgroundColor: 'white' }, 1000);
    $('#browseBack').fadeOut('slow');
    $('#browse4').html("Choose another release above");
}

function ahahPost(url,target,requesttype,query,successurl,successtarget,replaceouter) {
    // query: 'GET' or 'POST'
    // successtarget: on successful post, also update this element
    // successurl: content for successtarget
    // replaceouter: if true replaces the target, otherwise replaces its innerHTML 
    var requesttype = requesttype.toUpperCase();
    if (requesttype != 'POST') {
        requesttype = 'GET';
    }
    if (typeof query != 'string') {
        query = encodeQuery(query); // + "&amp;trace=1";
    }

    // native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
    // IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    
    if (req) {
        req.onreadystatechange = function() {ahahPostDone(target,successurl,successtarget);};
        req.open(requesttype, url, true);
        if (requesttype == 'POST') {
            req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        }

        //        alert(query);
        req.send(query);
    }
}

function ahahPostDone(target,successurl,successtarget,replaceouter) {
    if (typeof target == 'string') {
        target = document.getElementById(target);
    }
    // only if req is "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200 || req.status == 304) {
            results = req.responseText;
            //alert(results);
            target.innerHTML = '';
            target.innerHTML = results;

            if (replaceouter) {
                var innerHTML = target.getElementsByTagName('div')[0];
                innerHTML = target.removeChild(innerHTML);
                var targetParent = target.parentNode;
                targetParent.replaceChild(innerHTML,target);
            } 

        } else {
            window.location.reload();
//             target.innerHTML = '';
//             target.innerHTML="";

        }
        clearTimeout(function_timer);
        clearTimeout(buytimer);
        clearTimeout(baskettimer);
        if (successurl && successtarget) {
            ahah(successurl,successtarget);
        }
    }
}

function encodeQuery(form) {
    var query = "";
    for (var i=0;i<form.elements.length;i++) {
        var separator = (i == 0 ? '' : '&');
        if (form.elements[i].type == 'hidden') {
            query = query + separator + form.elements[i].name + "=" + form.elements[i].value;
        }
    }
    return query;
}

function ahahBuy(url,target,requesttype,query) {
    var form = target.getElementsByTagName('form')[0];
    var newid = form.getAttribute("name");
    target.setAttribute("id", newid);
    url += "?js=1";
    ahahPost(url,target,requesttype,query,'/inc/basket.php','basketparent',true);
    var functionstring = 'delayProgressForBuyButton('+ newid +')';
    buytimer = window.setTimeout(functionstring, 200);
    basket = window.setTimeout("delayProgressForBasket()", 500);
}

function delayProgressForBuyButton(buttonId) {
    document.getElementById(buttonId).getElementsByTagName('a')[0].innerHTML = "<span class=\"format addingtobasket\">ADDING TO BASKET</span>";
}

function delayProgressForBasket() {
    var progIndicator = document.createElement('img');
    progIndicator.setAttribute("src", "/images/store/progresssmall.gif");
    progIndicator.setAttribute("id", "basketprogress");
    document.getElementById("basketprice").appendChild(progIndicator);
}


function getObject(){
		if(window.ActiveXObject){
			var waystation = new ActiveXObject("Microsoft.XMLHTTP");
		}else if(window.XMLHttpRequest){
			var waystation = new XMLHttpRequest();
		}else{
			var waystation = false;
		}
		return waystation;
}

function addResponse(){
	
	if(request.readyState==4){
		    clearTimeout(buytimer);
        
		clearTimeout(basket);
		 document.getElementById(newid).getElementsByTagName('a')[0].innerHTML = "<span class=\"formatadded\">ADDED TO BASKET</span>";
		 document.getElementById(newid).getElementsByTagName('a')[0].onclick=null;
		document.getElementById("basketparent").innerHTML=request.responseText;
	}
}


