
/**
 *
 * several utility functions to extract, and create query params strings
 *
 */
function getQueryParams( str )
{
    var ret = [];
    if ( str.indexOf("?") == -1 ) { 
	    return ret;
    }
    str = str.substr( str.indexOf("?")+1);
	var params = str.split("&");
	var pair;
	for ( var i=0;i<params.length;i++ ) {
		pair = params[i].split("=");
		ret[pair[0]] = pair[1];
	}
    return ret;
}

function updateQueryParams( loc, obj ) 
{
	var params = getQueryParams(loc);
	for ( var key in obj ) {
		params[key] = obj[key];
	}
	var str = createQueryString( params );
    if ( loc.indexOf("?") >= 0 ) {
	    loc = loc.substr( 0,loc.indexOf("?"));
    }
	return loc + str;
}

function createQueryString( params ) 
{
	var str = "";
	var pairs = [];
	for ( var key in params ) {
		if(billboard.section=='forums'&& billboard.subsection=='conversations'){
		pairs.push(  key+"="+params[key] );
		}
		else
		pairs.push(  key+"="+escape(params[key]) );
	}
	str = "?"+pairs.join("&");
	return str;
}

/**
 *
 */
function formatDate( d, showTime, type ) 
{
	var date = new Date();
	date.setTime( d );
	var months = ["January","February","March", "April","May","June","July","August","September","October","November","December"];
		
	var dateStr = (months[date.getMonth()]) + " " + date.getDate() + ", " + date.getFullYear();
	var hours = (date.getHours()+1);
	if ( showTime ) {
		var ampm = "a.m.";
		if ( hours >= 12 ) {
			ampm = "p.m.";
			if ( hours > 12 ) {
				hours -= 12;
			}
		}		
		var minutes = date.getMinutes();
		if ( minutes < 10 ) minutes = "0" + minutes;
		dateStr += " " + hours + ":" + minutes + ampm;
	}

	return dateStr;
}

function validateEmail(email) {
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   //var address = document.forms[form_id].elements[email].value;
   if(reg.test(email) == false) {
      return false;
   }
   else
	  return true;
}
           /*  Billboard Archive / google Books related Javascript      */          
		  var search_phrase;
            var qsParm = new Array();
            
            function parseURLParams(href) {
            FORM_DATA = new Object();
            // The Object ("Array") where our data will be stored.
                separator = ',';
                // The token used to separate data from multi-select inputs
                query = '' + href;
                qu = query
                // Get the current URL so we can parse out the data.
                // Adding a null-string '' forces an implicit type cast
                // from property to string, for NS2 compatibility.
                query = query.substring((query.indexOf('?')) + 1);
                // Keep everything after the question mark '?'.
                if (query.length < 1) { return false; }  // Perhaps we got some bad data?
                keypairs = new Object();
                numKP = 1;
                // Local vars used to store and keep track of name/value pairs
                // as we parse them back into a usable form.
                while (query.indexOf('&') > -1) {
                    keypairs[numKP] = query.substring(0,query.indexOf('&'));
                    query = query.substring((query.indexOf('&')) + 1);
                    numKP++;
                    // Split the query string at each '&', storing the left-hand side
                    // of the split in a new keypairs[] holder, and chopping the query
                    // so that it gets the value of the right-hand string.
                }
                keypairs[numKP] = query;
                // Store what's left in the query string as the final keypairs[] data.<
                for (i=1; i<=numKP; i=i+1) {
                    keyName = keypairs[i].substring(0,keypairs[i].indexOf('='));
                    // Left of '=' is name.
                    keyValue = keypairs[i].substring((keypairs[i].indexOf('=')) + 1);
                    // Right of '=' is value.
                    while (keyValue.indexOf('+') > -1) {
                        keyValue = keyValue.substring(0,keyValue.indexOf('+')) + ' ' + keyValue.substring(keyValue.indexOf('+') + 1);
                        // Replace each '+' in data string with a space.
                    }
                    keyValue = unescape(keyValue);
                    // Unescape non-alphanumerics
                    if (FORM_DATA[keyName]) {
                        FORM_DATA[keyName] = FORM_DATA[keyName] + separator + keyValue;
                        // Object already exists, it is probably a multi-select input,
                        // and we need to generate a separator-delimited string
                        // by appending to what we already have stored.
                    } else {
                        FORM_DATA[keyName] = keyValue;
                        // Normal case: name gets value.
                    }
                }
                if (FORM_DATA['pg']==undefined) {
                    return FORM_DATA['printsec'];
                    }
                    else
                    {
                    return FORM_DATA['pg'].substring(FORM_DATA['pg'].indexOf('PA')+2);
                    }
            }
            // This is the array/object containing the GET data.
            // Retrieve information with 'FORM_DATA [ key ] = value'.
                        
            /**
            *
            * Input parameters are passed from the calling page
            */
            function search() {
            
            var title_string = '';
            var title="Billboard Magazine";
            var issn="0006-2510";
            if (!IsEmpty(title))
            {
            var terms = title.match(/("[^"]+"|[^"\s]+)/g);
            var items = '';
            for(var i = 0; i < terms.length; i++) 
            {
            items =  items + "+intitle:" + terms[i];
            }
            title_string = items;
            }
            
            qsParm['query'] = null;
            qs();
         //   var query_value = qsParm['query'];
			var query_value =$('#archive-search-term').html();
			var startIndex=$('#archive-search-index').html();
			query_value=query_value.replace(/%20/g,"+");
            search_phrase = query_value;
         //   document.try2.query.value = search_phrase;
            
            var request_string = "http://books.google.com/books/feeds/volumes?q=" + escape(query_value) 
            + title_string + "&issn:0006-2510&content-type=magazines&start-index="+startIndex+"&max-results=20&alt=json-in-script&callback=listEntries";
            
            // Show a "Loading..." indicator.
            var div = document.getElementById('goog_syn_results');
            if (div.firstChild) div.removeChild(div.firstChild);
            
            
            // Delete any previous google Booksearch JSON queries.
            var jsonScript = document.getElementById("jsonScript");
            if (jsonScript) {
            jsonScript.parentNode.removeChild(jsonScript);
            }
            
            // Add a script element with the src as the user's google Booksearch query. 
            // JSON output is specified by including the alt=json-in-script argument
            // and the callback funtion is also specified as a URI argument.
            
            var scriptElement = document.createElement("script");
            scriptElement.setAttribute("id", "jsonScript");
            scriptElement.setAttribute("src", request_string);
            scriptElement.setAttribute("type", "text/javascript");
            // make the request to google booksearch
            document.documentElement.firstChild.appendChild(scriptElement);
            }
            
            /**
            * This function is the call-back function for the JSON scripts which 
            * executes a google book search response.
            *
            * @param {JSON} booksInfo is the JSON object pulled from the google books service.
            */
            function listEntries(root) {
                // Find the identifier of the first embeddable match
                // If none found, report an error
      
                var feed = root.feed;
                var ser = document.getElementById("search_total");
                var results = document.createElement("cc");
                resString = new String();
                resString = '<div id="archiveTotalResults" style="display:none;">'+feed.openSearch$totalResults.$t;+'</div>';
                results.innerHTML = resString;
                ser.appendChild(results);
                
                var gdiv = document.getElementById("goog_syn_results");
                if (gdiv.firstChild) gdiv.removeChild(gdiv.firstChild);
                var mainDiv = document.createElement("div");
                var entries = feed.entry || [];
                if (entries.length==0) {
                    var empty = document.createElement("bb");
                    emptyString = new String();
                    emptyString = '<p><li class=\"feed_item\"><span><div style=\"' + 'display:block;font-size:24px; color:\#123456; font-family:Arial;\">' + 'No Results Found' + '</div></span></li>';
                    empty.innerHTML = emptyString;
                    gdiv.appendChild(empty);
                }
                else
                {
					

					for (var i = 0; i < entries.length; ++i) {
                        var entry = entries[i];
                        var thumbnailDiv = document.createElement("div");
                        thumbnailDiv.className = "books-archive clickable";					

						
					/*	var date = new Date(entry.dc$date[0].$t);					
						var months = ["January","February","March", "April","May","June","July","August","September","October","November","December"];
		
						var dateStr = (months[date.getMonth()]) + " "  + date.getDate()+", "+date.getFullYear();
					*/	

                    
                        var page_number = parseURLParams(entry.link[2].href);
                        var embeddableValue = entry.gbs$embeddability.value;
                        var isEmbeddable = (embeddableValue ==  'http://schemas.google.com/books/2008#embeddable');
                        var bb = document.createElement("bb");
                        var li_b_HTML = new String();
                        li_b_HTML = '<li class=\"feed_item\"><span><a style=\"' + 'display:block;font-size:15px; font-weight:bold; font-family:Arial;\"' + 'href=\"#\"' + ' onClick=\"' + 'loadBook(\''  + entry.dc$identifier[0].$t + '\',\'' + page_number + '\',\'' + search_phrase +'\',\''+ entry.dc$date[0].$t +'\');return false;\"'+ ' >' + entry.dc$date[0].$t + ' <p style="font-size:11px;font-weight:bold;color:#666666;">Page ' + page_number + '</p></a></span></li>';
                        var li_a_HTML = new String();
                        li_a_HTML = '<div style=\"display:block; font-size:16px; margin-bottom:3px;color:#555555; font-family:Verdana;\">' + '<table cellspacing=\"5\" cellpadding=\"10\"><tr><td><input type=\"' + 'image\"' + ' src=\"' + entry.link[0].href + '\"' + ' class=\"alignnone size-full wp-image-10625\" ' + ' onClick=\"' + 'loadBook(\''  + entry.dc$identifier[0].$t + '\',\'' + page_number + '\',\'' + search_phrase +'\',\''+entry.dc$date[0].$t +'\')\"'+ ' /></td><td>'+li_b_HTML+'<p> '+ entry.dc$description[0].$t +'</p> </td></tr></table>';
                        li_b_HTML =  li_a_HTML + '</div>';
                        bb.innerHTML = li_b_HTML;
                        if (isEmbeddable) {
                            thumbnailDiv.appendChild(bb);
                        }
                        mainDiv.appendChild(thumbnailDiv);
                        mainDiv.innerHTML = mainDiv.innerHTML  + "<div style=\"clear: both;\"></div>";
                    }
                    gdiv.appendChild(mainDiv);
                }
				if($("#archiveTotalResults").html()<20){
				$('.prev-next-pagination').hide();				
				}
            }
            
            function loadBook(identifier, pg, query,date) {
                // Load the page containing the Book Search Embedded Viewer API, calling
                // showBook when it's ready
                  var hash = "/archive/read?id="+identifier+"&pg=" + pg + "&query=" + query+"&date="+date;
				  billboard.navigateToUrl( hash );		
				
            }
            
            function IsEmpty(aTextField) {
                if ((aTextField.length==0) || (aTextField==null)) {
                    return true;
                }
                else { return false; }
            }
            
            function qs() {
            var query = window.location.search.substring(1);
            var parms = query.split('&');
            for (var i=0; i<parms.length; i++) {
            var pos = parms[i].indexOf('=');
            if (pos > 0) {
            var key = parms[i].substring(0,pos);
            var val = parms[i].substring(pos+1);
            qsParm[key] = escape(val);
            }
            }
            }   
            function hs() {
            var query = window.location.hash.substring(window.location.hash.indexOf('read?')+5,window.location.hash.length);
            var parms = query.split('&');
            for (var i=0; i<parms.length; i++) {
            var pos = parms[i].indexOf('=');
            if (pos > 0) {
            var key = parms[i].substring(0,pos);
            var val = parms[i].substring(pos+1);
            qsParm[key] = escape(val);
            }
            }
            }    			
			
          function initialize() {
			
            qsParm['id'] = null;
            qsParm['pg'] = null;
            qsParm['query'] = null;
            hs();
            var query = qsParm['query'];
          //  document.try2.query.value = query;
            var id = qsParm['id'];
            var pg = qsParm['pg'];		
			
			
            var viewer = new google.books.DefaultViewer(document.getElementById('viewerCanvas'));
            viewer.resize();
            viewer.load(id);
            nextStep(viewer, pg, query);
			
            }  
			function nextStep(viewer, pg, query) {
			
			
            window.setTimeout(function() {
            viewer.resize();
            viewer.goToPage(pg);
            viewer.highlight(query);
            }, 1500);
            }
            
            function highlight(viewer, word) {
            viewer.resize();
            viewer.highlight('word');
            }
            
            /*End of Archive/Google Books*/
            
      
