/*===============================================================
 *  Chameleon Javascipt Utilities
 *
 * created - 7/7/2005
 * authors: dbarron, pkenia
 *
 * (c) excalibur 2005 - all rights reserved - www.convera.com
 *===============================================================*/
 
 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  * determine browser type
  *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
	var IE = "IE";
	var browser = new Object();
	browser.type = "notIE";
	if( document.all ) { 
	   browser.type = IE;
	}

 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  * global variables for the file
  *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
	var GENERIC_PAGE_TARGET = "row3col2";
	var debug = false;
	var nl = "\n";
	var uf_url = "";




	function addLoadEvent(func) {
		var oldonload = window.onload;
	  	if (typeof window.onload != 'function') 
	  	{
	    	window.onload = func;
	  	} 
	  	else 
	  	{
	    	window.onload = function() 
	    	{
	      		oldonload();
	      		func();
	    	}
	  	}
	}

  
//JR Cookie handler functions
//set a cookie
function setCookie(name, value, days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+escape(value)+expires+"; path=/";
}
//set a cookie with a long expiration date
function setPersistentCookie(name, value){
	var date = new Date("Jan 1, 2050");
	var val = escape(value) +"; expires=" + date.toGMTString();
	setCookie(name, val);
}
//get a cookie 
function getCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length,c.length));
	}
	return null;
}
//delete a cookie
function deleteCookie(name) {
	createCookie(name,"",-1);
}
//set a named key/value pair in a cookie
function setCookieVal(name, key, val, persist){
	var cookie=getCookie(name);
	if (cookie==null) cookie = "";
	var p = cookie.indexOf(key+":");
	if (p>-1) {
		p+=key.length+1;
		var q=cookie.indexOf("/",p);
		cookie=cookie.substring(0,p)+escape(val)+cookie.substring(q);
	}
	else {
		cookie+=key+":"+val+"/";
	}
	if (persist) setPersistentCookie(name,cookie);
	else setCookie(name,cookie);
}
//get a named value from a key/value pair in a cookie	
function getCookieVal(name, key) {
	var cookie=getCookie(name);
	if (cookie==null) cookie="";
	var p=cookie.indexOf(key+":");
	if (p>-1) {
		p+=key.length+1;
		var q=cookie.indexOf("/",p);
		if (q>-1) {
			return unescape(cookie.substring(p,q));	
		}
	}	
	return null;	
}
//delete a named key/value pair from a cookie
function deleteCookieVal(name, key, persist) {
	var cookie=getCookie(name);
	var p=cookie.indexOf(key+":");
	if (p>-1) {
		var q=cookie.indexOf("/",p);
		cookie=cookie.substring(0,p)+cookie.substring(q+1);
	}
	if (persist) setPersistentCookie(name,cookie);
	else setCookie(name,cookie);
}

//redirect to a custom page
function showPage(p) 
{
	document.location.href = getBaseURL(document.location.href) + "/page?name=" + encodeURIComponent(p);			
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function hideFeedback()
{
	var el = document.getElementById('userFeedback');
	el.style.display = 'none';
	return false;
}

function showFeedback(obj,url)
{
    try
    {
		var el = document.getElementById('userFeedback');
		var help_yes = document.getElementById('help_yes');
		help_yes.checked = false;
		var help_no = document.getElementById('help_no');
		help_no.checked = false;
		var user_comments = document.getElementById('comments');
		user_comments.value = "";
		el.style.display = 'block';;
		el.style.left =  (findPosX(obj) + 15) + 'px';
		el.style.top = (findPosY(obj) - 45) + 'px';
		uf_url = url;
	}
	catch (e) {}	
	return false;
}
function hideFeedbackResponse()
{
	var el = document.getElementById('userFeedbackResponse');
	el.style.display = 'none';
	return false;
}
function showFeedbackResponse()
{
	var obj = document.getElementById('userFeedback');
	var el = document.getElementById('userFeedbackResponse');
	el.style.display = 'block';
	el.style.left = obj.style.left;
	el.style.top = obj.style.top;
	hideFeedback();
	return false;
}
function replaceAll(s, s1, s2)
{
	while ( s.indexOf(s1) != -1) {
		s = s.replace(s1,s2);
	}
	return s;
}
function urlencode(st)
{
	var s = st;
	s=replaceAll(s,"+", "%2B");
	s=replaceAll(s,"/", "%2F");;
	return escape(s);
}
//return value for query parameter q from url u
function getQueryVal(url, q)
{
	var rval=null;
	var p = q + "=";
	var i = url.indexOf(p,0);
	if (i>0) {
		var spos = url.indexOf("=",i) + 1;
		if (spos > i)
		{
			var epos = url.indexOf("&",spos);
			if (epos>0)
				rval = url.substring(spos,epos);
			else
				rval = url.substring(spos);
		}
	}
	return rval;
}
//return the URL minus the query string
function getBaseURL(url)
{
	var i=url.lastIndexOf('/');
	if (i>0)
		return url.substring(0,i)
	else
		return url;
}
function submitUserFeedback(feedback_url, error_text)
{
	try {
		var el = document.getElementById('userFeedbackResponse');
		var help_yes = document.getElementById('help_yes');		
		var help_no = document.getElementById('help_no');
		var user_comments = document.getElementById('comments');
		var comments = "&comments=" + urlencode(user_comments.value);
		var rating = '';
		if (help_yes.checked) rating = '&rating=1';
		else if (help_no.checked) rating = '&rating=0';
		else {
			//hideFeedback();
			alert(error_text);
			return;
		}	
		var s_url = getQueryVal(uf_url,"s");
		var title = getQueryVal(uf_url,"title");
		var q = getQueryVal(uf_url,"qgeneral");
		var qtype = getQueryVal(uf_url,"searchtype");
		var docnum = getQueryVal(uf_url,"docnum");
		var tabid = getQueryVal(uf_url,"tabid");
	    var url = feedback_url + '?url=' + s_url + '&title=' + title;
	    url += '&qgeneral=' + q + '&docnum=' + docnum + '&tabid=' + tabid;
	    url += '&searchtype=' + qtype + rating + comments;
	
		$.get(url);
		showFeedbackResponse();
	} 
	catch (e) {
		if (e.description) {
			alert(e.description);
		}
		else {
			alert(e);
		}
		hideFeedback();
	}	
}

function toggleImage( objId, imageA, imageB ) {
	var obj = document.getElementById(objId);
    var src = obj.src;
    if( src.indexOf(imageA) > 0 ) {
    	obj.src = imageB;
    } else {
      	obj.src = imageA;
    } 
}

function toggleVisibility( objId ) {
    var obj = document.getElementById(objId);
    if( obj.style.visibility == 'visible' ) {
		setVisibility(objId, 'hidden');
	} else {
      	setVisibility(objId, 'visible');
	} 
}

function toggleDisplay(id) {
	$('#'+id).slideToggle('100');
}

function setVisibility( objId, value ) {
  	var obj = document.getElementById(objId);
  	if( obj != null ) {
   		if( value == 'hidden') {
     		obj.style.visibility = 'hidden';
     		obj.style.display = 'none';
   		} 
   		else {
     		obj.style.visibility = 'visible';
     		obj.style.display = '';
     	}
   	} 
}

function toggleTabs(id)
{
	var obj = document.getElementById(id);
    
    if( obj.className == 'active' ) {
    	obj.className = '';
    } else {
        obj.className = 'active';
    }    
} 

