//portfolio.js

myXhr={
doIt:function(container,url){
var container = "content";
var url = "includes/portfolio.xml";
  	if(!document.getElementById || !document.createTextNode){return;}
    myXhr.outputContainer=document.getElementById(container);
    if(!myXhr.outputContainer){return;}
    var request;
    try{
      request = new XMLHttpRequest();
    }catch(error){
      try{
        request = new ActiveXObject("Microsoft.XMLHTTP");
      }catch(error){
        return true;
      }
    }
    request.open('get',url,true);
    request.onreadystatechange=function(){
      if(request.readyState == 1){
        newP = document.createElement('p');
		newP.appendChild(document.createTextNode('Loading...'));
		var h = document.getElementById('title');
		h.parentNode.insertBefore(newP, h);
      }
      if(request.readyState == 4){
        if(request.status && /200|304/.test(request.status)){
        
   
   //  alert('retrieved!');
	 myXhr.outputContainer.removeChild(newP);//that was our loading message, above
	 data = request.responseXML;//data returns the entire XML page
     //		alert(data);
     preloadImages(data);//see below
     moreStuff(data);
        }else{
        myXhr.failed(request);
        }
      }//end readyState==4
    }//end onreadystatechange
    request.setRequestHeader('If-Modified-Since','Wed, 05 Apr 2006 00:00:00 GMT');
    request.send(null);
    return false;
  },//end doIt



failed:function(request){
alert("The XMLHttpRequest failed.  Status: "+requester.status);
return true;//because it failed
},


cancelClick:function(e){//so we use ajax instead of re-loading the page
if(!e){var e = window.event;}//some browers have a predefined e for event
	//first the IE version
	e.cancelBubble = true;
	e.returnValue = false;

	//other browsers
	if (e.stopPropagation) {
		e.stopPropagation();
		e.preventDefault();
	}

//alert('cancelicious');
return false;
}, 

makeChanges:function(e){
	if(!e){var e = window.event;}
	var target = window.event ? window.event.srcElement : e ? e.target : null;
	//if window event is supported, the target is the window event's source element.  
	//Otherwise, if e is supported, the target is the target of e.  
	//If that does not work, the target is null.  
	
	if(!target){return false;}
	if(target.nodeName.toLowerCase()!='a'){
		target = target.parentNode;
	}

	var newPage = target.firstChild.nodeValue;//the value of the text node within the link
	//alert('You clicked '+newPage);
	
	var presentlyViewing = parseInt(document.getElementById('portNav').getElementsByTagName('strong')[0].firstChild.nodeValue);
	
	//alert('you are presently viewing page '+presentlyViewing);
	
	var prevLinkText = '<<Previous';
	var nextLinkText = 'Next>>';
	
	var all = data.getElementsByTagName('site');
	
	if(newPage==prevLinkText||newPage==nextLinkText){//test for Prev and Next
	
		if(newPage==prevLinkText){
			newPage = presentlyViewing - 1;
			if(newPage==0){
				newPage = all.length;
			}
		}
		if(newPage==nextLinkText){
		newPage = presentlyViewing + 1;
		
		if(newPage>all.length){
			newPage=1;	
			}
		}
	}	

	//alert('we are going to load up page '+newPage);
	
	var npa = newPage - 1;//because array[0] is the first item in the array
	var mySite = all[npa];//select the new page from the "all" array of sites
	newT = mySite.getElementsByTagName('type')[0].firstChild.nodeValue;
	document.getElementById('title').innerHTML= newT;// + ' Yeah!'
	//alert('got the title '+newT);
	
	
	
	newDescr = mySite.getElementsByTagName('description')[0].firstChild.nodeValue;
	//alert(newDescr);//
	document.getElementById('descrip').innerHTML = newDescr;



	newLink = mySite.getElementsByTagName('link')[0].firstChild.nodeValue;
	pageLink=document.getElementById('clientLink');
	pageLink.setAttribute('href', newLink);//the xml file includes none.php as an option
	
	
	
	newClient = document.createTextNode(mySite.getElementsByTagName('client')[0].firstChild.nodeValue);//
	pageClient = document.getElementById('client');
	pageClientLinkText = pageLink.firstChild;

	//alert('and now we replace '+pageClientLinkText+' with '+newClient);
	
	pageLink.replaceChild(newClient, pageClientLinkText);

	//all this instead of newClientLink.innerHTML = newClient;
		
	
	newImages = mySite.getElementsByTagName('img');
	for(k=0;k<newImages.length;k++){
		thisPic=newImages[k].firstChild.nodeValue;
		oldPics=document.getElementById('pics').getElementsByTagName('img');
		oldPics[k].setAttribute('src', thisPic);
	
	
	
	
	}
	
	
	var bigPic=document.getElementById('bigPic');
	firstBigPic = newImages[0].firstChild.nodeValue;
	fBP = firstBigPic.substring(0, firstBigPic.length-4);
	fBP += '-lg.jpg';
	bigPic.setAttribute('src', fBP);
	
	
	
	//now we change an 'a' to a 'strong' and a 'strong' to an 'a'	
	leaving	= document.getElementById('portNav').getElementsByTagName('strong')[0];
	leavingWhat = presentlyViewing;
	changes = document.createElement('a');
	var newLinkUrl = 'portfolio.php?p='+leavingWhat;
	
	//alert('we create the new link '+newLinkUrl+' for the page we just left');
	
	changes.setAttribute('href', newLinkUrl);
	changes.appendChild(document.createTextNode(leavingWhat));
	
	leaving.parentNode.insertBefore(changes, leaving);
	leaving.parentNode.removeChild(leaving);
	
	addEvent(changes, 'click', myXhr.cancelClick, false);
	addEvent(changes, 'click', myXhr.makeChanges, false);
	
	
	nowCurrent = document.createElement('strong');
	nowCurrent.appendChild(document.createTextNode(newPage));
	
	var allNavLinks = document.getElementById('portNav').getElementsByTagName('a');
	for(w=0; w<allNavLinks.length; w++){
		if(allNavLinks[w].firstChild.nodeValue==newPage){
			var changeThis = allNavLinks[w];
			changeThis.parentNode.insertBefore(nowCurrent, changeThis);
			changeThis.parentNode.removeChild(changeThis);
		}
	}



	//now change the links for previous and next
	var myPrevLink = document.getElementById('prev');
	newPrevLink = newPage - 1;
	if(newPrevLink<1){
		newPrevLink = all.length;
	}
	myPrevLink.setAttribute('href', 'portfolio.php?p='+newPrevLink);
	
	var myNextLink = document.getElementById('next');
	newNextLink = newPage + 1;
	if(newNextLink>all.length){
		newNextLink = 1;
	}
	myNextLink.setAttribute('href', 'portfolio.php?p='+newNextLink);
	




}//end makeChanges
}//end myXhr



function moreStuff(data){
var pnls = document.getElementById('portNav').getElementsByTagName('a');

	for(j=0; j<pnls.length; j++){
	addEvent(pnls[j], 'click', myXhr.cancelClick, false);
	addEvent(pnls[j], 'click', myXhr.makeChanges, false);
	//addEvent(pnls[j], 'click', getContent, false);
	}
}
//the implementation of an additional Safari click fix is recommended.


function pictureSwapSetup(){
var allThePics = document.getElementById('pics').getElementsByTagName('img');
for(k=0;k<allThePics.length; k++){
	addEvent(allThePics[k], 'click', pixSwitch, false);
	}
}

function pixSwitch(e){
//same logic as above...
if(!e){var e = window.event;}
var target = window.event ? window.event.srcElement : e ? e.target : null;
	//if window event is supported, the target is the window event's source element.  
	//Otherwise, if e is supported, the target is the target of e.  
	//If that does not work, the target is null.  
	if(!target){return false;}

var littlePic = target.getAttribute('src');
//alert(littlePic);
lPn = littlePic.length;
lPn -= 4;
lP = littlePic.substring(0, lPn);

var bigPic = document.getElementById('bigPic');
bigPic.setAttribute('src', lP+'-lg.jpg');


}


addEvent(window, 'load', myXhr.doIt, false);
addEvent(window, 'load', pictureSwapSetup, false);


function preloadImages(returnedXML){
	loadThese = returnedXML.getElementsByTagName('img');
	for(z=0; z<loadThese.length; z++){
		nPs = loadThese[z].firstChild.nodeValue;
		newPath = new Image();
		newPath.src = nPs;
		nPsn = nPs.length -4;
		newBigPath = nPs.substring(0, nPsn);
		newBigPath += '-lg.jpg';
		newBigPathImg = new Image();
		newBigPathImg.src = newBigPath;		
	}

}