// Customize Layout 
var previousBtn = "<span id='previousBtn'><a href='#' onclick='javascript:goPrevious()'><< Previous</a></span>";
var blogNav     = "<span id='blogNav'></span>";
var nextBtn     = "<span id='nextBtn'><a href='#' onclick='javascript:goNext()'>Next >></a></span>";

// Gathers script variables
var getVars     = document.getElementById("whitehouseRSS").getAttribute("vars");
var vars        = getVars.split('&');
var proxyPath   = vars[0].slice(vars[0].indexOf('=')+1).toString();
var blogID      = vars[1].slice(vars[1].indexOf('=')+1).toString();
var blogAmt     = parseInt(vars[2].slice(vars[2].indexOf('=')+1));
var blogCap     = parseInt(vars[3].slice(vars[3].indexOf('=')+1));
var rssPath     = "http://www.whitehouse.gov/feed/blog/white-house/";

// Writes the Flash Proxy to the page
var embedCode   = "<embed src='"+proxyPath+"' quality='high' wmode='transparent' width='1' height='1' name='flashProxy' align='middle' allowScriptAccess='always' allowNetworking='true' allowFullScreen='false' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' flashVars='rssPath="+rssPath+"'/>";
document.write(embedCode);

// Sets default variables for subsequent functions 
var buttonLayout = previousBtn + blogNav + nextBtn;
var blogInt      = 0;

// Parses data from XML string
function recieveData(dataStream){
	try{
		XMLRequestObject = new ActiveXObject("Microsoft.XMLDOM");
		XMLRequestObject.async = "false";
		XMLRequestObject.loadXML(dataStream);
	}  
	catch(e){
		try{
			parser = new DOMParser();
			XMLRequestObject = parser.parseFromString(dataStream,"text/xml");
		}
		catch(e){
			//alert(e.message);
			return;
		}
	}	
	recieveData.blogLength = XMLRequestObject.getElementsByTagName('item').length; //was entry	
	recieveData.blogLength > blogCap ? recieveData.blogLength = blogCap : recieveData.blogLength = recieveData.blogLength;	
	if(blogAmt>recieveData.blogLength){
		blogAmt = recieveData.blogLength;
		recieveData.blogAmt = blogAmt;
	}
	var blogContainer = document.getElementById(blogID);
	var blogItems =  XMLRequestObject.getElementsByTagName('item'); //was entry
	recieveData.blogTitle = new Array();
	recieveData.blogLink = new Array();
	recieveData.blogDate = new Array();
	recieveData.blogContent = new Array();
	for(i=0;i<recieveData.blogLength;i++){
		var blogItem = blogItems[i];
		recieveData.blogTitle.push(blogItem.getElementsByTagName("title")[0].firstChild.nodeValue);
		recieveData.blogLink.push(blogItem.getElementsByTagName("link")[0].firstChild.nodeValue);
		recieveData.blogDate.push(blogItem.getElementsByTagName("pubDate")[0].firstChild.nodeValue.substring(0,16));
		recieveData.blogContent.push(blogItem.getElementsByTagName("description")[0].firstChild.nodeValue);
		if(i==recieveData.blogLength-1){
			displayData();
			break;
		}
	}
	// Creates and displays divs with content from XML
	function displayData(){
		for(j=0;j<blogAmt;j++){				
			var newDiv = document.createElement('div');
			blogContainer.appendChild(newDiv);
			newDiv.setAttribute('id','blog'+j);			
			document.getElementById('blog'+j).innerHTML = "<div class='blogDate'>"+recieveData.blogDate[j]+"</div>";
			document.getElementById('blog'+j).innerHTML += "<div class='blogTitle'><a href='"+recieveData.blogLink[j]+"'>"+recieveData.blogTitle[j]+"</a></div>";
			document.getElementById('blog'+j).innerHTML += "<div class='blogContent'>"+recieveData.blogContent[j]+"</div>";			
			if(j==blogAmt-1 && recieveData.blogLength > blogAmt) {
				var newButtons = document.createElement('div');
				blogContainer.appendChild(newButtons);
				newButtons.setAttribute('id','buttons');
				document.getElementById('buttons').innerHTML = buttonLayout;
				for(m=1;m<=Math.ceil(recieveData.blogLength/blogAmt);m++){
					document.getElementById("blogNav").innerHTML += "<a href=\"javascript:goTo("+m+")\">"+m+"</a>&nbsp;";
				}
				document.getElementById('previousBtn').style.visibility = 'hidden';
				break;
			}
		}
	}
}
// Navigates backwards through blog entries
function goPrevious(){
	blogInt -= blogAmt;
	if(document.getElementById('nextBtn').style.visibility == 'hidden'){
		document.getElementById('nextBtn').style.visibility = 'visible';
	}
	if(blogInt == 0){
		document.getElementById('previousBtn').style.visibility = 'hidden';
	}
	for(k=0;k<blogAmt;k++){
		if(recieveData.blogTitle[k+blogInt] == undefined){
			document.getElementById('blog'+k).style.display = "none";
		}
		if(recieveData.blogTitle[k+blogInt]!= undefined){
			document.getElementById('blog'+k).innerHTML = "<div class='blogDate'>"+recieveData.blogDate[k+blogInt]+"</div>";
			document.getElementById('blog'+k).innerHTML += "<div class='blogTitle'><a href='"+recieveData.blogLink[k+blogInt]+"'>"+recieveData.blogTitle[k+blogInt]+"</a></div>";
			document.getElementById('blog'+k).innerHTML += "<div class='blogContent'>"+recieveData.blogContent[k+blogInt]+"</div>";
		}
		if(k==recieveData.blogAmt-1){
			break;
		}
	}	
}
// Navigates forwards through blog entries
function goNext(){
	blogInt += blogAmt;
	if(document.getElementById('previousBtn').style.visibility == 'hidden'){
		document.getElementById('previousBtn').style.visibility = 'visible';
	}
	if(blogInt + blogAmt >= recieveData.blogLength){
		document.getElementById('nextBtn').style.visibility = 'hidden';
	}
	for(l=0;l<blogAmt;l++){
		if(recieveData.blogTitle[l+blogInt] == undefined){
			document.getElementById('blog'+l).style.display = "none";
		}
		if(recieveData.blogTitle[l+blogInt]!= undefined){
			document.getElementById('blog'+l).innerHTML = "<div class='blogDate'>"+recieveData.blogDate[l+blogInt]+"</div>";
			document.getElementById('blog'+l).innerHTML += "<div class='blogTitle'><a href='"+recieveData.blogLink[l+blogInt]+"'>"+recieveData.blogTitle[l+blogInt]+"</a></div>";
			document.getElementById('blog'+l).innerHTML += "<div class='blogContent'>"+recieveData.blogContent[l+blogInt]+"</div>";
		}	
		if(l==recieveData.blogAmt-1){
			break;
		}
	}
}
// Navigates to a specific page of blog entries
function goTo(pageNum){
	blogInt = (pageNum-1) * blogAmt;
	if(blogInt == 0){
		document.getElementById('previousBtn').style.visibility = 'hidden';
		document.getElementById('nextBtn').style.visibility = 'visible';
	}
	if(blogInt + blogAmt >= recieveData.blogLength){
		document.getElementById('previousBtn').style.visibility = 'visible';
		document.getElementById('nextBtn').style.visibility = 'hidden';
	}
	if(blogInt != 0 && blogInt + blogAmt < recieveData.blogLength ){
		document.getElementById('previousBtn').style.visibility = 'visible';
		document.getElementById('nextBtn').style.visibility = 'visible';
	}
	for(n=0;n<blogAmt;n++){
		if(recieveData.blogTitle[n+blogInt] == undefined){
			document.getElementById('blog'+n).style.display = "none";
		}
		if(recieveData.blogTitle[n+blogInt]!= undefined){
			document.getElementById('blog'+n).innerHTML = "<div class='blogDate'>"+recieveData.blogDate[n+blogInt]+"</div>";
			document.getElementById('blog'+n).innerHTML += "<div class='blogTitle'><a href='"+recieveData.blogLink[n+blogInt]+"'>"+recieveData.blogTitle[n+blogInt]+"</a></div>";
			document.getElementById('blog'+n).innerHTML += "<div class='blogContent'>"+recieveData.blogContent[n+blogInt]+"</div>";
		}	
		if(n==recieveData.blogAmt-1){
			break;
		}
	}
}
function formatDate(date){
	var year   = parseInt(date.slice(0,4));
	var month  = parseInt(date.slice(5,7),10);
	var day    = parseInt(date.slice(8,10));
	var hour   = parseInt(date.slice(11,13));
	var minute = date.slice(14,16); // revised to include leading zeros.
	var d1     = new Date();
	var d2     = new Date();
	var timeZone;
	var timeOfDay;
	var dayOfWeek;	
	switch(d1.getTimezoneOffset()/60){
		case 7  : timeZone = "PST" ; hour -= 7 ; break;
		case 6  : timeZone = "MST" ; hour -= 6 ; break;
		case 5  : timeZone = "CST" ; hour -= 5 ; break;
		case 4  : timeZone = "EST" ; hour -= 4 ; break;
		default : break;
	}	
	switch(hour){
		case 0  : hour = "24" ; day -= 1 ; break;
		case -1 : hour = "23" ; day -= 1 ; break;
		case -2 : hour = "22" ; day -= 1 ; break;
		case -3 : hour = "21" ; day -= 1 ; break;
		case -4 : hour = "20" ; day -= 1 ; break;
		case -5 : hour = "19" ; day -= 1 ; break;
		default : break;
	}	
	d2.setFullYear(year,month-1,day);
	dayOfWeek = d2.toString().slice(0,3);	
	switch(month){
		case 1  : month = "January"   ; break;
		case 2  : month = "February"  ; break;
		case 3  : month = "March"     ; break;
		case 4  : month = "April"     ; break;
		case 5  : month = "May"       ; break;
		case 6  : month = "June"      ; break;
		case 7  : month = "July"      ; break;
		case 8  : month = "August"    ; break;
		case 9  : month = "September" ; break;
		case 10 : month = "October"   ; break;
		case 11 : month = "November"  ; break;
		case 12 : month = "December"  ; break;
		default : break;
	}	
	switch(hour){
		case 1  : hour = 1  ; timeOfDay = "AM" ; break;
		case 2  : hour = 2  ; timeOfDay = "AM" ; break;
		case 3  : hour = 3  ; timeOfDay = "AM" ; break;
		case 4  : hour = 4  ; timeOfDay = "AM" ; break;
		case 5  : hour = 5  ; timeOfDay = "AM" ; break;
		case 6  : hour = 6  ; timeOfDay = "AM" ; break;
		case 7  : hour = 7  ; timeOfDay = "AM" ; break;
		case 8  : hour = 8  ; timeOfDay = "AM" ; break;
		case 9  : hour = 9  ; timeOfDay = "AM" ; break;
		case 10 : hour = 10 ; timeOfDay = "AM" ; break;
		case 11 : hour = 11 ; timeOfDay = "AM" ; break;
		case 12 : hour = 12 ; timeOfDay = "PM" ; break;
		case 13 : hour = 1  ; timeOfDay = "PM" ; break;
		case 14 : hour = 2  ; timeOfDay = "PM" ; break;
		case 15 : hour = 3  ; timeOfDay = "PM" ; break;
		case 16 : hour = 4  ; timeOfDay = "PM" ; break;
		case 17 : hour = 5  ; timeOfDay = "PM" ; break;
		case 18 : hour = 6  ; timeOfDay = "PM" ; break;
		case 19 : hour = 7  ; timeOfDay = "PM" ; break;
		case 20 : hour = 8  ; timeOfDay = "PM" ; break;
		case 21 : hour = 9  ; timeOfDay = "PM" ; break;
		case 22 : hour = 10 ; timeOfDay = "PM" ; break;
		case 23 : hour = 11 ; timeOfDay = "PM" ; break;
		case 24 : hour = 12 ; timeOfDay = "PM" ; break;
		default : break;
	}	
	return dayOfWeek+" "+month+" "+day+", "+hour+":"+minute+" "+timeOfDay+" "+timeZone;
}


