// Class to handle query of Yahoo Site Explorer for Backlinks from the Client's Browser
var pms_ysearch =
{
	// Initialize
	  init : function(query, site, total_links, search_status, percent_complete, dialog_ready, pinglist_id, end_callback)
			// query - query to run
		  // site - site to check, blank if general query
		  // total_links - id string of span/div element for total link display. 'None' if not needed
		  // search_status - id string of span/div element for status display. 'None' if not needed
		  // percent_complete - id string of span/div element for % commplete display. 'None' if not needed
			// dialog_ready - 'Yes' to show the we're ready dialog
			// pinglist_id - id string of element to store the pinglist_id into.  'None' if not needed
			// callback - function to call when completed
  {
		pms_ysearch.query = query;
		pms_ysearch.site = site;
		pms_ysearch.total = 0;
		pms_ysearch.start = 1;
		pms_ysearch.results = 100;
		pms_ysearch.resctr = 0;
		pms_ysearch.s2 = new Array();
		pms_ysearch.status_total = 1000;
		pms_ysearch.total_links = total_links;
		pms_ysearch.search_status = search_status;
		pms_ysearch.percent_complete = percent_complete;
		pms_ysearch.dialog_ready = dialog_ready;
		pms_ysearch.pinglist_id_element = pinglist_id;
		pms_ysearch.end_callback = end_callback;
  },

	startping : function()
	{

		if (pms_ysearch.query.length == 0 ) {
			alert("Sorry, but you must enter a query.");
			return;
		}
		x_pms_search_start( pms_ysearch.query, pms_ysearch.pingSearch );
	},

	update_url_count : function (res )
	{

		if ( pms_ysearch.total_links != 'None' ) {

			var e = document.getElementById(pms_ysearch.total_links);

    	if (e.firstChild == null) {
    	     e.appendChild(document.createTextNode(res));
	  	} else {
    	     e.firstChild.nodeValue = res;
    	}
		}
  },

  pingSearch : function(res)
  {
		pms_ysearch.pinglist_id = res;

		if ( pms_ysearch.pinglist_id < 0 ) {

			if ( pms_ysearch.percent_complete != 'None' ) {

				var e = document.getElementById(pms_ysearch.percent_complete);
				var	perc = 100;

    		if (e.firstChild == null) {
    		     e.appendChild(document.createTextNode(perc+'%'));
	  		} else {
    		     e.firstChild.nodeValue = perc+'%';
    		}

			}

			var t = setTimeout("x_pms_search_url_count(pms_ysearch.pinglist_id, pms_ysearch.update_url_count);", 100);
			pms_ysearch.end_callback(pms_ysearch.pinglist_id);
			return;
		}


		if ( pms_ysearch.pinglist_id_element != 'None' ) {
			 var pide = document.getElementById( pms_ysearch.pinglist_id_element );
		   pide.value = res;
		}


    if (pms_ysearch.query)
    {
			if ( pms_ysearch.dialog_ready == 'Yes' ) {
			    alert("Ok, ready to query Yahoo Search.  This might take a while...");
			}
      pms_ysearch.s = document.createElement('script');
      pms_ysearch.s.type ='text/javascript';
      pms_ysearch.s.charset ='utf-8';
		  if (pms_ysearch.site.length != 0 ) {
			     var ssrc = 'http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=V9rsqLPV34Hn0rBWJMCJRctBVaa98s91qCt9d_4vbxvoVWMh7ukmRRmeJ3JA6_Mb&output=json&results=1&site='+pms_ysearch.site+'&callback=pms_ysearch.pongSearch1&query=' + pms_ysearch.query;
					 pms_ysearch.s.src = ssrc;
			} else {
			    pms_ysearch.s.src = 'http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=V9rsqLPV34Hn0rBWJMCJRctBVaa98s91qCt9d_4vbxvoVWMh7ukmRRmeJ3JA6_Mb&output=json&results=1&callback=pms_ysearch.pongSearch1&query=' + pms_ysearch.query;
			}
      document.getElementsByTagName('head')[0].appendChild(pms_ysearch.s);
    }
  },


  pongSearch1 : function(z)
  {
		if ( z != null ) {

		   if ( z.ResultSet == null ) {
			   alert("Sorry, but that query doesn't compute.");
			   return;
		   }

		   pms_ysearch.total = parseInt(z.ResultSet.totalResultsAvailable);
		}

		if ( pms_ysearch.total == 0 ) {
			alert("Sorry, but no results found for "+ pms_ysearch.query);
			return;
		}



		if ( pms_ysearch.total_links != 'None' ) {

		var e = document.getElementById(pms_ysearch.total_links);

    if (e.firstChild == null) {
         e.appendChild(document.createTextNode(pms_ysearch.total));
	  } else {
         e.firstChild.nodeValue = pms_ysearch.total;
    }

		}

		if ( pms_ysearch.search_status != 'None' ) {

		var b = document.getElementById(pms_ysearch.search_status);
		b.style.visibility="";

		if ( pms_ysearch.total < 1000 ) {
			pms_ysearch.status_total = pms_ysearch.total;
		}

		}

		if ( parseInt(pms_ysearch.start) <= parseInt(pms_ysearch.total) ) {
      pms_ysearch.s2[pms_ysearch.resctr] = document.createElement('script');

      pms_ysearch.s2[pms_ysearch.resctr].type ='text/javascript';
      pms_ysearch.s2[pms_ysearch.resctr].charset ='utf-8';

		  if (pms_ysearch.site.length != 0 ) {
			     var ssrc = 'http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=V9rsqLPV34Hn0rBWJMCJRctBVaa98s91qCt9d_4vbxvoVWMh7ukmRRmeJ3JA6_Mb&output=json&results='+pms_ysearch.results+'&start='+pms_ysearch.start+'&site='+pms_ysearch.site+'&callback=pms_ysearch.pongSearch2&query=' + pms_ysearch.query;
			} else {
			    var ssrc = 'http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=V9rsqLPV34Hn0rBWJMCJRctBVaa98s91qCt9d_4vbxvoVWMh7ukmRRmeJ3JA6_Mb&output=json&results='+pms_ysearch.results+'&start='+pms_ysearch.start+'&callback=pms_ysearch.pongSearch2&query=' + pms_ysearch.query;
			}
      pms_ysearch.s2[pms_ysearch.resctr].src = ssrc;

			document.getElementsByTagName('head')[0].appendChild(pms_ysearch.s2[pms_ysearch.resctr]);
			pms_ysearch.start = parseInt(pms_ysearch.start) + 100;
			pms_ysearch.resctr++;
			}
	} ,

	psearch15 : function()
	{
		var ptotal = pms_ysearch.total;

      pms_ysearch.s2[pms_ysearch.resctr] = document.createElement('script');

      pms_ysearch.s2[pms_ysearch.resctr].type ='text/javascript';
      pms_ysearch.s2[pms_ysearch.resctr].charset ='utf-8';

		  if (pms_ysearch.site.length != 0 ) {
			    var ssrc = 'http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=V9rsqLPV34Hn0rBWJMCJRctBVaa98s91qCt9d_4vbxvoVWMh7ukmRRmeJ3JA6_Mb&output=json&results='+pms_ysearch.results+'&start='+pms_ysearch.start+'&site='+pms_ysearch.site+'&callback=pms_ysearch.pongSearch2&query=' + pms_ysearch.query;
			} else {
			     var ssrc = 'http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=V9rsqLPV34Hn0rBWJMCJRctBVaa98s91qCt9d_4vbxvoVWMh7ukmRRmeJ3JA6_Mb&output=json&results='+pms_ysearch.results+'&start='+pms_ysearch.start+'&callback=pms_ysearch.pongSearch2&query=' + pms_ysearch.query;
			}
      pms_ysearch.s2[pms_ysearch.resctr].src = ssrc;

			document.getElementsByTagName('head')[0].appendChild(pms_ysearch.s2[pms_ysearch.resctr]);
			pms_ysearch.start = parseInt(pms_ysearch.start) + 100;
			pms_ysearch.resctr++;

	} ,

  pongSearch2 : function(z)
  {

		var xmlstr = '<results>';

		if ( typeof(z) == 'undefined' ) {
					pms_ysearch.end_callback(pms_ysearch.pinglist_id);
					return;
		}

    if (z == null) {
       alert("null z");
    }

		if ( pms_ysearch.percent_complete != 'None' ) {

		var e = document.getElementById(pms_ysearch.percent_complete);
		var perc = Math.round((pms_ysearch.start / pms_ysearch.status_total) * 100);
		if (perc > 100) {
			perc = 100;
		}

    if (e.firstChild == null) {
         e.appendChild(document.createTextNode(perc));
	  } else {
         e.firstChild.nodeValue = perc;
    }

		}

		if ( z.ResultSet.totalResultsReturned == 1 ) {
		  xmlstr = xmlstr + '<url><![CDATA['+ Base64.encode(z.ResultSet.Result.Url)+']]></url>';
		} else {
    	for (var i = 0; i < z.ResultSet.Result.length; i++)
    	{
			  xmlstr = xmlstr + '<url><![CDATA['+ Base64.encode(z.ResultSet.Result[i].Url)+']]></url>';
    	}
		}

		xmlstr = xmlstr + '</results>';

		x_pms_yseresult_add( pms_ysearch.pinglist_id, xmlstr, 'pms_search_urls', pms_ysearch.pongSearch3 );

  },

 pongSearch3 :function( res )
 {


	 var m = parseFloat(pms_ysearch.start);
	 var tot = parseFloat(pms_ysearch.total);

	 if ( m <= 1000 ) {
 	  	 if ( m <= tot ) {
 	  	 	  pms_ysearch.psearch15();
 	  	 } else {
 					pms_ysearch.start = 1;
					if ( pms_ysearch.percent_complete != 'None' ) {
						var e = document.getElementById(pms_ysearch.percent_complete);
						var	perc = 100;
    				if (e.firstChild == null) {
    				     e.appendChild(document.createTextNode(perc+'%'));
	  				} else {
    				     e.firstChild.nodeValue = perc+'%';
    				}
					}

					pms_ysearch.end_callback(res);
					return;
 	  	 }
	 } else {
 					pms_ysearch.start = 1;

					if ( pms_ysearch.percent_complete != 'None' ) {
						var e = document.getElementById(pms_ysearch.percent_complete);
						var	perc = 100;
    				if (e.firstChild == null) {
    				     e.appendChild(document.createTextNode(perc+'%'));
	  				} else {
    				     e.firstChild.nodeValue = perc+'%';
    				}
					}

					pms_ysearch.end_callback(res);
					return;
	 }

 }
};
