
//-Shared-------------------------------------------------------------------------------

function setCookie(cookieName,value,expiryInDays)
{
    var expiryDate=new Date();
    expiryDate.setDate(expiryDate.getDate()+expiryInDays);
    document.cookie=cookieName+ "=" +escape(value)+
	((expiryInDays==null) ? "" : ";expires="+expiryDate.toGMTString());
}


function getCookie( requiredName ) {
    // note: document.cookie only returns name=value pairs, not the other values (expiry etc)
    var allCookies = document.cookie.split( ';' );
    var tempCookie = '';
    var cookieName = '';
    var cookieValue = '';
    var cookieFound = false; 
	
    for ( i = 0; i < allCookies.length; i++ ){

	tempCookie = allCookies[i].split( '=' );
	// and trim it
	cookieName = tempCookie[0].replace(/^\s+|\s+$/g, '');

	if ( cookieName == requiredName ){
	    cookieFound = true;
	    // we need to handle the empty cookie, ie no value
	    if ( tempCookie.length > 1 ) {
		cookieValue = unescape( tempCookie[1].replace(/^\s+|\s+$/g, '') );
	    }
	    return cookieValue;
	    break;
	}
	tempCookie = null;
	cookieName = '';
    }
    if ( !cookieFound )
    {
	return null;
    }
}				
				

function disableElement( id ){
     var element = $(id);
     if (element){
        element.disable();
     }
  }

function enableElement( id ){
    var element = $(id);
    if (element){
        element.enable();
    }
  }

/*
 * This function parses ampersand-separated name=value argument pairs from
 * the query string of the URL. It stores the name=value pairs in
 * properties of an object and returns that object. Use it like this:
 *
 * var args = getArgs( );  // Parse args from URL
 * var q = args.q || "";  // Use argument, if defined, or a default value
 * var n = args.n ? parseInt(args.n) : 10;
 */
function getArgs( ) {
  var args = new Object( );
  var query = location.search.substring(1);     // Get query string
  var pairs = query.split("&");                 // Break at ampersand

  for(var i = 0; i < pairs.length; i++) {
    var pos = pairs[i].indexOf('=');          // Look for "name=value"
    if (pos == -1) continue;                  // If not found, skip
    var argname = pairs[i].substring(0,pos);  // Extract the name
    var value = pairs[i].substring(pos+1);    // Extract the value
    value = decodeURIComponent(value);        // Decode it, if needed
    args[argname] = value;                    // Store as a property
  }
  return args;                                  // Return the object
}

function buildURLArgs(argsObject){

  var flag = false; 
  var args = "";  
  for (property in argsObject){
    if (flag){
      args += "&";   
    } else {
      args = "?";
    }
    args += encodeURIComponent(property) + "=" + encodeURIComponent(argsObject[property]); 
    flag = true;
  } 

  return args;
}




google_ad_client = "pub-1454476809008933";
google_ad_width = 160;
google_ad_height = 600;
google_ad_format = "160x600_as";
google_ad_type = "text_image";
google_ad_channel = "";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "C80028";
google_color_text = "000000";
google_color_url = "500078";

//-- Not shared ------------------------------------------------------------------------------

function hide_tab(name) {
  var element;
  hide(name);
  element = document.getElementById(name + '_t');
  element.className = 'noncurrent';
}

function set_details_tab(name) {
  hide_tab('abstract_tab');
  hide_tab('codeddata_tab');
  hide_tab('publication_tab');
  hide_tab('comments_tab');
  //hide_tab('additional_tab');
  show(name);
  element = document.getElementById(name + '_t');
  element.className = 'current';
        
}

function show(name) {
  var element = document.getElementById(name);
  element.style.display = 'block';
}
function hide(name) {
  var element = document.getElementById(name);
  element.style.display = 'none';
}    
    
    
    
function tog(name) {
  var element = document.getElementById(name);
  if(element){
    if (element.style.display == 'none') {
      element.style.display = 'inline';
    } else {
      element.style.display = 'none';
    }
  }
}

function gp(page) {
        
  //document.aspnetForm.page.value = page;
  //document.aspnetForm.submit();

  var pageArgs = getArgs();
  pageArgs["page"] = page;

  var newURLArgs = buildURLArgs(pageArgs);
  var URL= getURL();

  location.href= URL + newURLArgs;
}




function toggleDiv(lnkBtn,divid){
  //first close down if any question div is open
  /* NOT required to close other divs
     var parentElement = document.getElementById('advSeachTable');
     var rowsCount = parentElement.rows.length;
     for (var counter=0;counter<rowsCount;counter++)
     { 
     try
     {
     var id = parentElement.rows[counter].firstChild.firstChild.id;
     if(id.indexOf('answers_')>=0 && id != divid)
     {
     var tmplnkBtn = parentElement.rows[counter-1].lastChild.firstChild;
     var tempElement = document.getElementById(id);
     if(tempElement.className == 'advSearchAnsOpen'){
     tempElement.className = 'advSearchAnsClose';
     tmplnkBtn.src='common/images/scroll_down_active.gif';
     }                
     }
     }
     catch(e){}
     }
  */
  //open answers div for selected question  
  var element = document.getElementById(divid);        
  if(element.className == 'advSearchAnsOpen'){
    element.className = 'advSearchAnsClose';
    lnkBtn.src='common/images/scroll_down_active.gif';
  }else{
    element.className = 'advSearchAnsOpen';
    lnkBtn.src='common/images/scroll_up_active.gif';
  }
  return false;
}
      
function setSelection(chkBox,quesId)
{
  var ansSection = chkBox.parentNode;
  var childCount = ansSection.childNodes.length;
  var isSelected = false;
  for(var counter=0;counter<childCount;counter++)
    {
      if(ansSection.childNodes[counter].type=='checkbox')
        {
	  var curCheckBox = ansSection.childNodes[counter];            
	  if(curCheckBox.checked)
            {
	      isSelected= true;
	      break;
            }
        }
    }
  var quesTD = document.getElementById('questionTD_' + quesId);
  if(isSelected)
    {
      //indicate some answers are selected
      quesTD.className='advSearchQuestionChanged';
    }
  else
    {
      //set back to normal look
      quesTD.className='advSearchQuestion';
    }
  return true;
}


function changeTitle(lblId,lblText)
{
  var element = document.getElementById('ctl00_ContentPlaceHolder1_' + lblId);
  element.innerHTML = lblText;
}

//show hide simple search, adv search panels
function selChanged(sel)
{
  if(sel=='0')
    {
      show('basicSearch');hide('advancedSearch');
    }
  else if (sel=='1')
    {
      show('advancedSearch');hide('basicSearch');
    }    
}
  

function bookmark(url,name) { 
  if (window.sidebar) { // Mozilla Firefox Bookmark
    window.sidebar.addPanel(name, url,"");
  } else if( window.external ) { // IE Favorite
    window.external.AddFavorite( url, name); 
  } else {
    alert("Your browser does not support javascript adding to your bookmarks.  You'll have to do it manually."); 
  }
}

function drawAddToFavorites() {
  var IEstring = "<a href='javascript:window.external.addFavorite"
    IEstring += "(location.href,document.title);' title='Add to Favorites'>Add to Favorites<\/a>" ;
  var NSstring = "Press [Ctrl + D] to bookmark";
  var OPstring = "Press [Ctrl + T] to bookmark";
  var OTHstring = "Bookmark this page!"
    var whichString = OTHstring ;
  var agt = navigator.userAgent.toLowerCase();
  var app = navigator.appName.toLowerCase();
  var ieAgent = agt.indexOf('msie');
  var nsAgent = app.indexOf('netscape');
  var opAgent = app.indexOf('opera');
  if (ieAgent!= -1) { whichString = IEstring; } else if (nsAgent!= -1){ whichString = NSstring; } else if (opAgent!= -1){whichString = OPstring; }
  document.write(whichString);
}




function changeLastPath( newChunk)
{
  var paths = location.pathname.split("/");
  var path = "";
  if (paths.length > 1){
    paths[paths.length-1] = newChunk;
    path =  paths.join("/");
  } else {
    path = "/" + newChunk;
  }

  return path;
}

function getURL(){
  return location.protocol+"//" + location.hostname +":"+location.port+ location.pathname;
}




function doSimpleSearch(withAction)
{
  location.href = buildSimpleSearchURL(getURL(),withAction);
  return true;
}

function doTrialSearch()
{
  location.href = buildTrialSearchURL(getURL());
  return true;
}


function doAdvSearch(withAction)
{
  location.href = buildAdvSearchURL(getURL(), withAction);
  return true;
}

function BuildHelp()
{
  var URL =  location.protocol+"//" + location.hostname +":"+location.port + changeLastPath( "simpleHelp.aspx");
  window.open(URL, "HelpPage", 'toolbar=no,width=700px,height=600px,scrollbars=1');
}

function BuildSearch()
{
  var URL =  location.protocol+"//" + location.hostname +":"+location.port + changeLastPath( "buildlink.aspx");


  window.open(buildAdvSearchURL(URL, false), "SearchLink", 'toolbar=no,width=700px,height=600px,scrollbars=1');
}

function BuildSimpleSearch()
{
  var URL =  location.protocol+"//" + location.hostname +":"+location.port + changeLastPath( "buildlink.aspx");

  window.open(buildSimpleSearchURL(URL,false), "SearchLink", 'toolbar=no,width=700px,height=700px,scrollbars=1');
}


function getrequireAbstracts()
{
    var reqAbstracts  = $(abstractCheckID);
    if ( reqAbstracts) {
	if (reqAbstracts.checked){
	    setCookie('requireAbstracts',1,30);
	}else{
	    setCookie('requireAbstracts',0,30);
	}
	return !(reqAbstracts.checked);
    }else{
	return false;
    }
}

function deleteAttr( obj, attrName )
{
  if (attrName in obj){
    delete obj[attrName];
  }
}

  
function updateRequireAbstracts( args)
{
  var requireabstracts = getrequireAbstracts();
  deleteAttr(args, "requireabstracts");
  if (requireabstracts) {
    args["requireAbstracts"]=1;
  } else{
    args["requireAbstracts"]=0;
  }
}

function getSortMethod()
{
  return $(selectSortID).value;
}


function updateSortMethod( args)
{
    deleteAttr(args, "sort");
    var sort = getSortMethod();
    setCookie('searchSort', sort, 30);
    args["sort"]=sort;
}

function getSimpleSearchText()
{
  var searchField = $("ctl00_ContentPlaceHolder1_SearchText");  
  return searchField.value;
}


function addTrialSearchRestrictions(args)
{
  try{
    deleteAttr(args, 'sendStates');
    addElementValue(args, countryListID, 'country');
    addElementValue(args, 'selectStateList', 'state');
    addElementValue(args, 'selectCityList', 'city');
  } catch(err){

  }
}

function addElementValue(args, elementID, argsIndex)
{
  try{
    var element = $(elementID);
    deleteAttr(args, argsIndex);

    if (element){
      if (element.value){
	args[argsIndex] = element.value;
      }
    }
    
  }catch(e){

  }

}

function buildTrialSearchURL(URL)
{
    
  var searchText =  getSimpleSearchText();
  
  var args = getArgs();

  deleteAttr(args, 'like');
  deleteAttr(args, 'formQuery');
  deleteAttr(args, 'reaction');

  args["query"] = searchText;

  addTrialSearchRestrictions(args);

  args["page"] = 1;

  var newURLArgs = buildURLArgs(args);
  
  return URL + newURLArgs;  
}

function buildSimpleSearchURL(URL, withAction)
{
    
  var searchText =  getSimpleSearchText();
  
  var args = getArgs();

  if (searchText != ""){
    args["query"] = searchText;
    deleteAttr(args, 'like');
  }

      
  
  if (withAction) {
    var element = document.getElementById('reaction');
    args["reaction"]= element.value;
  } else {
    args["reaction"] = "";
  }

  args["page"] = 1;
  args["basic"] = 1;
  deleteAttr(args, 'formQuery');

  updateRequireAbstracts(args);
  updateSortMethod(args);

  var newURLArgs = buildURLArgs(args);
  
  return URL + newURLArgs;  
}

function simpleSearchonsubmit()
{
  document.aspnetForm.action = buildSimpleSearchURL(getURL(),false);
  if(self['exitPage']){
    exitPage();
  }
}

function simpleTrialSearchonsubmit()
{
  document.aspnetForm.action = buildTrialSearchURL(getURL());
  return false;
}

function advSearchonsubmit()
{
  document.aspnetForm.action = buildAdvSearchURL(getURL(), false);
}


function getProps(obj)
{
  var retVal = "";
  
  if (obj != null){
    for (prop in obj){
      retVal += prop + " ";
    }
  }
  return retVal;
}

  
function getAnsids(){
  var divs = $$("div.refine");
  var answers = "";
  var inputs  = null;

  if (divs.length > 0){
    var refine = divs[0];
    inputs = refine.getElementsBySelector("input");

    for (var i = 0; i < inputs.length;i++){
      if(inputs[i].name == "ansids" && inputs[i].checked == true) {
	answers += inputs[i].value + ",";
      }
    }
    if (answers.length > 0){
      answers = answers.substring(0,(answers.length-1));
    }

  }
  return answers;
}

function switchToSimpleSearch()
{
  location.href='search.aspx'

}

function switchToAdvSearch()
{
  location.href='advsearch.aspx';
}



function openPrint( articleID ){
  var args = getArgs();
  args["codedArticleID"] = articleID;
  var URL =  location.protocol+"//" + location.hostname +":"+location.port + changeLastPath( "printarticle.aspx");
  var newURLArgs = buildURLArgs(args);

  var printWindow = window.open( URL+newURLArgs, "printArticle", 'toolbar=0,scrollbars=1');
}


var codedData = {};

function getCodedDataTable( data)
{
  var string = "<br/><table width=95% cellpadding=2 cellspacing=0 class=\"codeddataTable\">";
  row = 0;
  
  data.each( function (item){
      ques = item['ques'];
      ans  = item['ans'];
      string += "<tr class='details_codedrow" + (row+1) + "'><td valign=top width=70%>";
      string += "<span class='homeplain'>" + ques + "</span>";
      string += "</td><td valign=top width=30%>";
      string += "<span class='homeplain'>" + ans + "</span>";
      string += "</td></tr>";

      row = (row+1) %2;

    });
  
  string += "</table>";

  return string;
}



function codedDataCallback( spn, req, articleID )
{
  var json = req.responseText;
  var data;
  
  data = eval(json);

  spn.innerHTML = getCodedDataTable( data );
  
  spn.style['display'] = 'inline';    
  codedData[articleID] = 1;

  hideLoader();
}

function toggleCodedData( articleID, spanID ){

  var spn = $(spanID);
  
  if (!spn){
    return;
  }

  if (spn.style['display'] == 'none'){
    
    if (!codedData[articleID] ) {
      // go get the coded data.
      getCodedData( articleID, function (req){ codedDataCallback( spn, req, articleID )});
    }else{
      spn.style['display'] = 'inline';    
    }
    
  }
  else{
     spn.style['display'] = 'none';
  }
}

function getCodedData( codedArticleID, callbackFunc ){

  var URL =  location.protocol+"//" + location.hostname +":"+location.port + changeLastPath( "codedDetails.aspx?codedArticleID=" + codedArticleID);
  
  var ajaxRequest  = new Ajax.Request(URL,
				      {
				      method: 'post',
					  onComplete:  callbackFunc
				      }
				      );
  

}

function updatePageName(args){

  if (!( 'page'  in args)){
    args['page'] = 'main';
  }
}

function showHelp(topicName)
{
  window.open(buildHelpURL(topicName), "HelpPage", 'toolbar=no,width=700px,height=700px,scrollbars=1');
}


function buildHelpURL(topic)
{
  var URL =  location.protocol+"//" + location.hostname +":"+location.port + changeLastPath( "help.aspx");  
  args = getArgs();
  if ((!topic) || topic.length == 0){
    topic = 'main';
  }

  args['page'] = topic;

  return URL + buildURLArgs(args);
}

			  

function doHelpEdit(){
  var args = getArgs();
  var URL = getURL();

  updatePageName(args);
  
  args['action'] = 'edit';

  var newURLArgs = buildURLArgs(args);

  location.href = URL + newURLArgs;

}

function doHelpCancel(){
  var args = getArgs();
  var URL = getURL();

  updatePageName(args);
  
  args['action'] = 'view';
  var newURLArgs = buildURLArgs(args);
  location.href = URL + newURLArgs;
}


function doHelpSave(){
  var args = getArgs();
  var URL = getURL();

  updatePageName(args);
  
  //args['action'] = 'save';
  //  var newURLArgs = buildURLArgs(args);
  //  location.href = URL + newURLArgs;
  var form = $('aspnetForm');
  
  form.submit();
  
}

function updateSearchTypeahead(arrayOfWords) {
alert(arrayOfWords[0]);
}

function ajaxtest() {

    new Ajax.Request('/typeahead.aspx?q=term',
  {
    method:'get',
    onSuccess: function(transport){
      var arrayOfWords = transport.responseText.evalJSON();
      updateSearchTypeahead(arrayOfWords);
      
    },
    onFailure: function(){ alert('Something went wrong...') }
  });

}

function UpdateSortSelection(){
    var args = getArgs();    
    var sortValue = -1;

    if ( 'sort' in args){
	sortValue = args['sort'];
    }else {
	// Only update it from the cookie if there are _no_ url args
	// otherwise the cookie would overwrite what the search page
	// rendered set in the search results.
	var objCount = 0;
	for(_obj in args) objCount++;
	if (objCount == 0){
	    var sortCookie = getCookie('searchSort');
	    if (sortCookie != null){
		sortValue = parseInt(sortCookie);
	    }
	}
    }

    if ( sortValue == -1 ){
	return;
    }
    var sortSelect = $(selectSortID);
    if (!sortSelect){
	return;
    }
    var foundIndex = -1;
    $A(sortSelect.options).each( 
	function (s,index){ 
	    if (s.value == sortValue) {
		foundIndex = index;
	    }  });
    if (foundIndex != -1){
	sortSelect.selectedIndex = foundIndex;
    }

}



function UpdateAbstractCheckbox() {
    var args = getArgs();    
    var checkboxValue = -1;

    if ( 'requireAbstract' in args){
	sortValue = args['requireAbstract'];
    }else {
	// Only update it from the cookie if there are _no_ url args
	// otherwise the cookie would overwrite what the search page
	// rendered set in the search results.
	var objCount = 0;
	for(_obj in args) objCount++;
	if (objCount == 0){
	    var cookie = getCookie('requireAbstracts');
	    if (cookie != null){
		checkboxValue = parseInt(cookie);
	    }
	}
    }

    if ( checkboxValue == -1 ){
	return;
    }
    var absCheckbox = $(abstractCheckID);
    if (!absCheckbox){
	return;
    }
    if ( checkboxValue == 0 ){
	absCheckbox.checked = false;
    }else{
	absCheckbox.checked = true;	
    }
}