function openClassicSearch (search, base_url, width, height) {
	var search_url;
	search = URLEncode (search);
	search_url = base_url + search;
	SearchWindow = this.open (search_url, "SearchWindow", "location=no,toolbar=yes,scrollbars=yes,resizable=yes,status=yes,width=" + width + ",height=" + height + ",left=10,top=10");
	SearchWindow.focus();
}

var hexVals = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");
var unsafeString = "\"<>%\\^[]`;/?:@=&#+";

// this function checks to see if a char is URL unsafe. 
// Returns bool result. True = unsafe, False = safe
function isUnsafe(compareChar) {
   if (unsafeString.indexOf(compareChar) == -1 && 
       compareChar.charCodeAt(0) > 32 && 
       compareChar.charCodeAt(0) < 123) 
      return(false);  // found no unsafe chars
   else
     return(true);
}

function decToHex(num, radix) {
   var hexString = "";
   
   while (num >= radix) {
      temp = num % radix;
      num = Math.floor(num / radix);
      hexString += hexVals[temp]; }
      
   hexString += hexVals[num];
   return(reversal(hexString));
}

function reversal(s) {
   var len = s.length;
   var trans = "";
   
   for (i = 0; i < len; i++) { 
      trans = trans + s.substring(len - i - 1, len - i); }
   s = trans;
   return(s);
}

// this converts a char to hex form
function convert(val) { 
   return("%" + decToHex(val.charCodeAt(0), 16)); 
}

function URLEncode(val) { 
   var len = val.length;
   var i   = 0;
   var newStr  = "";

   for (i = 0; i < len; i++) { 
      if (isUnsafe(val.substring(i, i + 1)) == false) {
         newStr = newStr + val.substring(i, i + 1); }
      else { 
         newStr = newStr + convert(val.substring(i, i + 1)); } }

   return(newStr);
}
