pipesrpc = {};
pipesrpc._timeoutlength = 30000;  /* 30 seconds by default */
pipesrpc._running = [];

pipesrpc._timeout = function(id,url) {
    var cbo = pipesrpc._running[id];
    pipesrpc._running[id]=null;
    if (!cbo.callbackErr) return;
    cbo.callbackErr("Timeout",-1,cbo.self);
}

pipesrpc._buildurl = function(pipeid,params) {
	var url = "http://pipes.yahoo.com/pipes/pipe.run?_id="+pipeid+"&_render=json";
	if (params) {
    	for (var key in params) {
            if (params[key]===null) continue;
    		url+="&"+encodeURIComponent(key)+"="+encodeURIComponent(params[key])
    	}
	}
    return url;
}

pipesrpc._callbackhandler = function(o) {
	var cbo = pipesrpc._running[callbackIndex];
    if (!cbo) return;
    pipesrpc._running[callbackIndex]=null;
   	window.clearTimeout(cbo.timeout);
   	if (!o || !o.count) {
   	    if (!cbo.callbackErr) return;
        cbo.callbackErr("Bad response",-2,cbo.self);
        return;
   	}
    if (!cbo.callbackOk) return;
    cbo.callbackOk(o,cbo.self);
}

pipesrpc._execute = function(url,callbackOk,callbackErr,timeoutlength) {
    if (!timeoutlength) timeoutlength = pipesrpc._timeoutlength;
    var id = pipesrpc._running.length;
  	url+="&_callback=pipesrpc._callbackhandler_"+id;
    var s=document.createElement("script");
    s.setAttribute("src",url);
    var fn = ""+pipesrpc._callbackhandler;
    fn = fn.replace(/callbackIndex/g,id);
    eval("pipesrpc._callbackhandler_"+id+"="+fn);
    pipesrpc._running.push({self:this,callbackOk:callbackOk,callbackErr:callbackErr,timeout:window.setTimeout(function() { pipesrpc._timeout(id,url); },timeoutlength)});    
    document.getElementsByTagName("head")[0].appendChild(s);
    return id;
}

/* use these three calls to run and cancel Pipes calls */
pipesrpc.cancelrequest = function(id) {
	var cbo = pipesrpc._running[i];
    window.clearTimeout(cbo.timeout);
    pipesrpc._running[i]=null;
}

pipesrpc.cancelallrequests = function() {
    for (var i=0; i<pipesrpc._running.length; i++) {
        pipesrpc._cancelrequest(i);
    }	
}

pipesrpc.run = function(pipeid,params,callbackOk,callbackErr,timeoutLength) {
    return pipesrpc._execute(pipesrpc._buildurl(pipeid,params),callbackOk,callbackErr,timeoutLength);
}

function initDesignerDirectoryNonFlash(){
	var requestId = pipesrpc.run("6PEDeh0F3hGmclSH6icw5g",null,
	    function(data) {
			var collectorsHTML='<img src="'+getImageURL()+'store/category/designer/2009/0323/directory/collectors_hd.gif" class="header" />';
			var viacHTML='<img src="'+getImageURL()+'store/category/designer/2009/0323/directory/via_c_hd.gif" class="header" />';
			var handbagsHTML='<img src="'+getImageURL()+'store/category/designer/2009/0323/directory/handbags_hd.gif" class="header" />';
			var shoesHTML='<img src="'+getImageURL()+'store/category/designer/2009/0323/directory/shoes_hd.gif" class="header" />';

			for(var i=0;i<data.value.items.length;i++){
				var html="";
				if(data.value.items[i].o.search('http')!=-1){
					html='<a href="'+data.value.items[i].o+'?origin=designer_locator">'+data.value.items[i].n.toUpperCase()+'<\/a>';
				}else{
					html='<span>'+data.value.items[i].n.toLowerCase()+'<\/span>';
				}
				switch(data.value.items[i].c){
					case "collectors":
						collectorsHTML+=html;
						break;
					case "via_c":
						viacHTML+=html;
						break;
					case "handbags":
						handbagsHTML+=html;
						break;
					case "shoes":
						shoesHTML+=html;
						break;
				}
			}
			
			document.getElementById("collectors_designers").innerHTML=collectorsHTML;
			document.getElementById("via_c_designers").innerHTML=viacHTML;
			document.getElementById("handbags_designers").innerHTML=handbagsHTML;
			document.getElementById("shoes_designers").innerHTML=shoesHTML;
		}
	);
	var showAllBtn=document.getElementById("showAll");
	var showOnlineBtn=document.getElementById("showOnline");
	var offlineDesigners=document.getElementById("locator_content").getElementsByTagName("SPAN");

	showAllBtn.onclick=function(){
		if(showAllBtn.className!="NullLink"){
			showAllBtn.className='NullLink';
			showOnlineBtn.className='';
			for(var i=0;i<offlineDesigners.length;i++){
				offlineDesigners[i].style.display="block";
			}
		}
	};
	showOnlineBtn.onclick=function(){
		if(showOnlineBtn.className!="NullLink"){
			showOnlineBtn.className='NullLink';
			showAllBtn.className='';
			for(var i=0;i<offlineDesigners.length;i++){
				offlineDesigners[i].style.display="none";
			}
		}
	};
}