﻿/**
 * Title:   Google Search Javascript Utilities 
 * Version:   1.0.0
 * Rev Date:  6/22/2009
 * Author:    cKemple
 *
 * Add the following code to files that require these utilites:
 *
 *  <script language="javascript" type="text/javascript" src="DesktopModules/GoogleSearch/google_zl4.js"></script>
 */


/**
 * For breadcrumbs search.  If press return key, then process search request.
 *
 * param@ c - the textbox control containing the string to search.
*/
function zl41(event, c) {
  if(event.keyCode == 13) {
    zl42(c.value);
  }
}


/**
/* For breadcrumbs search.  If press search button, then process search request.
 *
 * param@ s - the string to search.
*/
function zl42(s) {
  if(s && s.length > 0 ) {
  window.location = "/MOS/Tools/Search.aspx?&site=All&q=" + encodeURIComponent(cleanSearchString(s));
  }
  else {
    return false;
  }
}

/**
 * For Google Search page.  If press return key, then process search request.
 *
 * param@ c - the textbox control containing the string to search.
*/
function zl41b(event, c) {
  if(event.keyCode == 13) {
    zl42b();
  }
}


/**
/* For bGoogle Search page.  If press search button, then process search request.
 *
  * param@ s - the string to search.
*/
function zl42b() {
  var zl42bsi = document.getElementById("dnn_ctr1670_SearchField_ddlCatalog").selectedIndex;
  var ov = document.getElementById("dnn_ctr1670_SearchField_ddlCatalog").options[zl42bsi].value;
  var zl42st = document.getElementById("dnn_ctr1670_SearchField_txtQuery").value;
  
  if(zl42st.length > 0 ) {
    window.location = "/MOS/Tools/Search.aspx?&site=All&q=" + encodeURIComponent(cleanSearchString(s));
  }
  else {
    return false;
  }
}

/**
/* Base64 encoding script.  
*/
var Base64 = {
 
	// private property
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
 
	// public method for encoding
	encode : function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
 
		input = Base64._utf8_encode(input);
 
		while (i < input.length) {
 
			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);
 
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
 
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
 
			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
 
		}
 
		return output;
	},
 
	// public method for decoding
	decode : function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
 
		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
 
		while (i < input.length) {
 
			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));
 
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
 
			output = output + String.fromCharCode(chr1);
 
			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}
 
		}
 
		output = Base64._utf8_decode(output);
 
		return output;
 
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	},
 
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
 
}

function zl43( ) {

	var p = new Array();
	var i = 0;
	var url="";
	
	if(document.getElementById('as_q').value.length > 0) {p[i++]= 'as_q=' + encodeURIComponent(cleanSearchString(document.getElementById('as_q').value));}
	if(document.getElementById('as_epq').value.length > 0) {p[i++]= 'as_epq=' + encodeURIComponent(cleanSearchString(document.getElementById('as_epq').value));}
	if(document.getElementById('as_oq').value.length > 0) {p[i++]= 'as_oq=' + encodeURIComponent(cleanSearchString(document.getElementById('as_oq').value));}
	if(document.getElementById('as_eq').value.length > 0) {p[i++]= 'as_eq=' + encodeURIComponent(cleanSearchString(document.getElementById('as_eq').value));}
	
	if(p.length == 0 ) {
	  return false;
	}
	
	var numOpt = document.getElementById('num');
	p[i++]= 'num=' + numOpt.options[numOpt.selectedIndex].value;
	var as_occtOpt = document.getElementById('as_occt');
	p[i++]= 'as_occt=' + as_occtOpt.options[as_occtOpt.selectedIndex].value

	if (p.length > 0) {
		url = p[0];
		for (var j = 1; j < p.length; j++)
		{
			url += "&" + p[j];
		}
	}

window.location = '/MOS/Tools/Search.aspx?' + url;
}

function cleanSearchString(searchString) {
  searchString = searchString.replace( /[/]/g, " ");
  //searchString = searchString.replace( /&{2,}/g, "&");

  return searchString.replace(/\s{2,}/g," ");
}