//craeate request object or return failure
function makeRequest() {
  var http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
     http_request = new XMLHttpRequest();
     if (http_request.overrideMimeType) {
       http_request.overrideMimeType('text/xml');
     }
  } else if (window.ActiveXObject) { // IE
    try {
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        http_request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }
  if (!http_request) {
    return false;
  }
  return http_request;
}
function get_data(url, fail_function, display_progress, width, height) 
{
	 	req = makeRequest();
	 	if(!req){
  		eval(fail_function);
	 	}else{
  		req.open("GET",url,true);
  		req.onreadystatechange = function(){ updatePage(width, height); };
  		req.send(null);
		}
		
}	
function show_hide(hide, show){
		var elem = document.getElementById(hide);
		st = elem.style;
		st.display = 'none';
		elem = document.getElementById(show);
		st = elem.style;
		st.font = '11px/15px Verdana, Arial, Helvetica, sans-serif';
		st.display = 'block';
}

//parse results and update page
function updatePage(width, height){
	if (req.readyState == 1 ) {
	}
	if (req.readyState == 4) {
		if (req.status == 200) {
   		if (req.getResponseHeader('Content-Type') == 'text/xml'){
				fill_xml(req.responseXML, width, height);
    	}else{
    		//fill_input( req.responseText);
    	}
   	}else{}
 	}
}		
//update page with returned xml data from server
function fill_xml(xmldoc, width, height){
  var root;
  if (!width)
  {
  	width = 170;
  }
  if (!height)
  {
  	height = 170;
  }
  for(var y = 0; y < xmldoc.childNodes.length; y++){
    if(xmldoc.childNodes[y].nodeName == 'root'){
      root = xmldoc.childNodes[y];
      break;
    }
  }
  var counter = 0;
  var storage = document.getElementById('xml');
  for (i = 0; i < root.childNodes.length; i++){
    var node = root.childNodes[i];
    if(node.nodeName == 'img')
    {
    	var ss = document.createElement('span');
    	ss.setAttribute("id","flickr"+counter++);
    	for(var k=0;k<node.childNodes.length;k++)
    	{
    		if(node.childNodes[k].nodeName == 'url')
    		{
    			ss.setAttribute("url", node.childNodes[k].firstChild.nodeValue);
    		}
    		else if(node.childNodes[k].nodeName == 'title')
    		{
    			ss.setAttribute("title", node.childNodes[k].firstChild.nodeValue);
    		}
    	}
    	if(counter == 1)
    	{
    		var ii = document.getElementById("images");
    		var img = document.createElement("img");
    		img.id = "imgflickr0";
    		img.width = width;
    		img.height = height;
    		img.style.width = width;
    		img.style.height = height;
    		var titles = document.createElement('span');
    		titles.id = "title0"; 
    		titles.style.clear = "both";
    		titles.style.width = "100%";
 				img.src = getAttrByName(ss, 'url');
 				titles.innerHTML = '<br/><b>' + getAttrByName(ss, 'title') + "</b><br />" + '<a href=\"javascript:flip(0,0);\">Prev</a> :: <a href="javascript:flip(0,1);\">Next</a><br />';
 				ii.appendChild(titles);
    		ii.appendChild(img);
    	}
  		storage.appendChild(ss);
    }
  }//for 
}//function	
function getAttrByName(node, names)
{
	for(var j=0; j< node.attributes.length; j++)
  {
  	if(node.attributes[j].nodeName == names)
    {
    	return node.attributes[j].nodeValue;
    }
  }
  return  '';
}
function flip(orig, repl)
{
		if(repl < 0 || repl > 99)
		{
			return;
		}
		var ii = document.getElementById("imgflickr" + orig );
		var tt = document.getElementById("title" + orig);
		var rep = document.getElementById("flickr" + repl);
		ii.src = getAttrByName(rep, 'url');
		ii.id = "imgflickr" + repl;
		tt.id = "title" + repl;
		tt.innerHTML = '<br/><b>' + getAttrByName(rep, 'title') + "</b><br />" + '<a href="javascript:flip('+ repl + ',' + (repl - 1) + ');">Prev</a> :: <a href="javascript:flip('+ repl + ',' + (repl + 1) + ');">Next</a><br />';
}