/*
 * Toggle visibility for facet menu viewing options
 */
function toggle_visibility(id,textID) {
    var e = document.getElementsByName(id);
    
    for(var i = 0; i < e.length; i++) {
	    if(e[i].style.display == 'list-item')
	       e[i].style.display = 'none';
	    else
	       e[i].style.display = 'list-item';
    }
    
    if (textID.length != 0){
	    var txt = $(textID);
	    if (txt.innerHTML == "+ View more")
	    	txt.innerHTML = "- View less";
	    else if (txt.innerHTML == "+ Voir plus")
	    	txt.innerHTML = "- Voir moins";
	    else if (txt.innerHTML == "- View less")
	    	txt.innerHTML = "+ View more";
	    else
	    	txt.innerHTML = "+ Voir plus";
    }
}



/*
 * Add more search fields (rows) for advance search
 * and change the form action to the js search() function
 */
function addFields(lang) {

	var andStr, inStr;
	var fields;
	var operator;
	var lindex; //language index in map
	
	if (lang == "fr"){
		fields = fr_fields;
		operator = fr_operators;
		lindex = 1;
		
	} else {
		fields = en_fields;
		operator = en_operators;
		lindex = 0;
	}
	
	var tbl = $('search_tbl');
	var lastRow = tbl.rows.length; //get last row
	var x=tbl.insertRow(lastRow); //insert new row under the last row
	
	var opsDropDown = x.insertCell(0);
	var ops = new Element('select',{'name':'op','id':'op'});

	for (var i = 0; i < operator.length; i++){
		ops.options[i] = new Option (operator[i], en_operators[i]);
	}
	opsDropDown.appendChild(ops);
	
	var inputBox = x.insertCell(1); //input box
	inputBox.innerHTML="<input type='search' name='q' style='width:95%'/> ";
	
	var txtIn = x.insertCell(2); //text 'in'
	txtIn.innerHTML= langmap["in"][lindex];
	
	//create drop down list
	var dropDown = x.insertCell(3); //
	var sel = new Element('select', {'name':'field'});
	sel.setStyle({ width: "98%" });
	
	for (var f = 0; f < fields.length; f++ ){
		sel.options[f] = new Option(fields[f],fields_val[f]);
	}

	dropDown.appendChild(sel);
	
	var deleteBox = x.insertCell(4); //delete box image
	deleteBox.innerHTML = "<img src='http://images.scholarsportal.info/odesi/silk/delete.png' style='' title='Click to delete field' onclick='javascript:deleteRow(this)'/>"
}


/*
 * delete specified row in advance options table
 */
function deleteRow(rIndex) {
	
	var i = rIndex.parentNode.parentNode.rowIndex;
	$('search_tbl').deleteRow(i);
}


/*
 * uncheck other checkboxes if 'All' collections is chosen
 */
function uncheck() {
	boxes = $$('[name="coll"]');
	 if (boxes[1].checked || boxes[2].checked || boxes[3].checked ||
			 boxes[4].checked || boxes[5].checked  ) {
	   boxes[0].checked = false;
	 } 
}



/*
 * uncheck all collection checkboxes
 */
function uncheckAll() {
	chkboxes = $$('[name="coll"]');
	len = chkboxes.length;
	
	if (chkboxes[0].checked == true){
		for (i = 1; i < len; i++){
			chkboxes[i].checked = false;
		}
	}
}



function updateArea(link, position){

    new Ajax.Updater(position, link, {
        method: 'get'
    });
}

/*
 * Ajax call to display new surveys added to db
 */
function showDataList() {
	var url = "/home/new-data.html";
	new Ajax.Updater('new_data_div', url, {
        method: 'get'
    });
}

/*
 * Matching variables call for the results page
 */
function getMatchingVars(vars_div,params){

	if ($('results') != null) {
		var divs = $('results').getElementsByClassName(vars_div);
	
		for (var i=0; i < divs.length; i++){
			var tag = divs[i];
			var tagid = $(tag).id;
			var uri = tagid.substr(6);
			
			$(tag).innerHTML = "<img src='http://images.scholarsportal.info/odesi/ajax-loader.gif'/>";	
			new Ajax.Updater(tagid,'/search/variables.html', {
				method:'get',
				parameters:{uri:uri,pos:(i+1),searchstr:params,asynchronous: true}
			});
			
			showVarsPanel(i+1);
		}
	}
	
	
}


/*
 * Select all checkboxes next to titles in Marked Records page
 */
function marked_selectAll() {
	
	$$('[name="chk"]').each(function(e) { e.checked = 1; }); 
}


/*
 * Clear all checks from checkboxes next to titles in Marked Records page
 */
function marked_clearAll() {
	
	$$('[name="chk"]').each(function(e) { e.checked = 0; }); 
}

/**
 * Adding articles to RefWorks through details page
 * @param uri of the survey to be added to RefWorks
 */
function refworksAdd(uri){
	
	var url_refworks = 
		"http://refworks.scholarsportal.info/express/ExpressImport.asp?vendor=RefWorks%20Tagged%20Format&encoding=65001&url=http%3A%2F%2Fodesi.ca%2Frefworks/odesirefworks.xqy?uri="+uri; 
	window.open(url_refworks,'RefWorksMain');
}

/**
 *  Ajax updater to check and update Marked Records by user
 * @param url URL for session xquery that will add the uris to the session variable
 * @param request_opts
 * @param alwaysGet
 * @return
 */
function checkUris(url, request_opts, alwaysGet){
	
	new Ajax.Request(url, request_opts);
	
}

/*
 * Error message for marked records page if no surveys are chosen
 * @param lang Language for the current session
 */
function getErrorMsg(lang) {
		
	if (lang == "fr")
		return fr_msg;
	else
		return en_msg;
	
}


/**********YAHOO widget implementations**********/

/**
 * function to generate accordion widget
 * @param menuID - ul ID tag that specifies location of accordion data
 * @param widthStr - width of the accordion
 * @return accordion widget
 */
function showAccordion(menuID, widthStr) {
	
	var menu1 = new YAHOO.widget.AccordionView(menuID, 
			{
				expandable: true,
				collapsible: true, 
				width: 'auto', 
				animationSpeed: '0.3', 
				animate: true, 
				expandItem:0,
				effect: YAHOO.util.Easing.easeBothStrong
			});
}


/**
 * function to generate accordion widget for browsing
 * @param menuID - ul ID tag that specifies location of accordion data
 * @param widthStr - width of the accordion
 * @return accordion widget
 */
function showBrowseAccordion(menuID, widthStr) {
	
	var menu1 = new YAHOO.widget.AccordionView(menuID, 
			{
				expandable: true,
				collapsible: true, 
				width: 'auto', 
				animationSpeed: '0.3', 
				animate: true, 
				effect: YAHOO.util.Easing.easeBothStrong
			});
}

/**
 * Shows YUI tab view
 * future extensions - params: Tab ID name when using multiple tab views
 * @return tab view
 */
function showTabView(tabID){

    var tabView = new YAHOO.widget.TabView(tabID);

}


/**
 * Initialize shadowbox
 * @return
 */
function shadowInit(lang) {
	Shadowbox.init({
		 language: lang,
		 players: ['iframe']
		});
}


/**
 * Creates Shadowbox overlay to view fusion charts
 * and YUI Datatable for all matching variables
 * @param url for the page that displays the fusion chart
 * @param title - variable label to display on top of the box
 * @return Shadowbox for matching variables - view categories
 */
function showGallery(doc_uri, var_id, title){

	var chart_url = '/fusion/index.html?uri=' + doc_uri + '&varid=' + var_id;
	var table_url = '/fusion/table.html?uri=' + doc_uri + '&varid=' + var_id;

    var table = {
        player:     'iframe',
        content:    table_url,
        height:		400,
        width: 		675,
    	title:		title			
    };

    var chart = {
        player:     'iframe',
        content:    chart_url,
        height:     500,
        width:      750,
        title:      title
    };

    Shadowbox.open([table], {
        continuous: true
    });

};

/**
 * Displays YUI Data Table for categories in each variables
 * @return YUI DataTable
 */
function displayCategoryDataTbl() {
	
	YAHOO.util.Event.addListener(window, "load", function() {
	    catDataTable = function() {
	        var myColumnDefs = [
	            {key:"value",label:"Values",formatter:YAHOO.widget.DataTable.formatNumber,sortable:true},
	            {key:"category",label:"Categories", sortable:true},
	           {key:"freq",label:"Frequency [unweighted]",formatter:YAHOO.widget.DataTable.formatNumber,sortable:true},
	            {key:"weight",label:"Frequency [wgtd]",formatter:YAHOO.widget.DataTable.formatNumber, sortable:true}
	        ];

	        var parseNumberFromCurrency = function(sString) {
	            // Remove dollar sign and make it a float
	            return parseFloat(sString.substring(1));
	        };

	        var myDataSource = new YAHOO.util.DataSource(YAHOO.util.Dom.get("categories"));
	        myDataSource.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
	        myDataSource.responseSchema = {
	            fields: [{key:"value", parser:"number"},
	                    {key:"category"},
	                   {key:"freq", parser:"number"},
	                    {key:"weight", parser:"number"} 
	            ]
	        };

	        var myDataTable = new YAHOO.widget.DataTable("markup", myColumnDefs, myDataSource,
	                {caption:"",
	                sortedBy:{key:"value",dir:"desc"}}
	        );
	        
	        return {
	            oDS: myDataSource,
	            oDT: myDataTable
	        };
	    }();
	});
}

/**
 * Displays YUI Data table for all variables display
 * YUI paginator - 10 rows are displayed in each page
 * @param uri for the survey stored in the db
 * @return Data table and paginator display 
 */
function showAllVarsTbl(uri, lang){
	
	var lindex; //language index on map
	
	if (lang == "fr") {
		lindex = 1;
	} else {
		lindex = 0;
	}
	
	YAHOO.util.Event.addListener(window, "load", function() {
	    xmlDataTable = function() {
	    	
	        var myDataSource, myDataTable;
	        
	        //create the link to view categories column
	        var Url = function(elCell, oRecord, oColumn, sData) { 
		            elCell.innerHTML = "<a href=javascript:showGallery('" + uri +"','V" + oRecord.getData("varid") + "','')>" + sData + "</a>"; 
	        };
	        
	        var repUrl = function(elCell, oRecord, oColumn, sData){
	        		elCell.innerHTML = "<a title='Click to view in repository' target='_blank' href=" + oRecord.getData("viewLink") + ">" + sData + "</a>";
	        };
		        
	        var connectionCallback = {
	            success: function(o) {
	                var xmlDoc = o.responseXML;
	                
	                //data table columns
	                var myColumnDefs = [
	                    {key:"varid", label:"Variable ID",formatter:"number",sortable:true},
	                    {key:"label", label:"Label", formatter:repUrl, resizeable:true, sortable:true},
	                    {key:"validCases", label:langmap['valid'][lindex], formatter:"number", sortable:true},
	                    {key:"missingCases", label:langmap['missing'][lindex], formatter:"number", sortable:true},
	                    {key:"min", label:"Minimum", formatter:"number", sortable:true},
	                    {key:"max", label:"Maximum", formatter:"number", sortable:true},
	                    {key:"view", label:langmap['categories'][lindex], formatter:Url}
	                ];

	                myDataSource = new YAHOO.util.DataSource(xmlDoc);
	                myDataSource.responseType = YAHOO.util.DataSource.TYPE_XML;
	                
	                //Response data comes over as a string, and needs to be converted to a number
	                myDataSource.responseSchema = {
	                    resultNode: "Result",
	                    fields: [{key:"varid",parser:"number"},
	                             {key:"label", parser:"string"},
	                             {key:"validCases",parser:"number"},
	                             {key:"missingCases", parser:"number"},
	                             {key:"min", parser:"number"},
	                             {key:"max", parser:"number"},
	                             "view","viewLink"]
	                };

	                //configurations for paginator
	                var myConfigs = {
	                        sortedBy:{key:"varid",dir:"asc"},
	                        paginator: new YAHOO.widget.Paginator({
	                            rowsPerPage: 10,
	                            template: YAHOO.widget.Paginator.TEMPLATE_ROWS_PER_PAGE, 
	                            firstPageLinkLabel : langmap['firstPg'][lindex], //override template labels
                            	lastPageLinkLabel : langmap['lastPg'][lindex],
                        		previousPageLinkLabel : langmap['prevPg'][lindex],
	                            nextPageLinkLabel : langmap['nextPg'][lindex],
	                            rowsPerPageOptions: [10,25,50,100],
	                            pageLinks: 5
	                        }),
	                        draggableColumns:true
	                    }
	                
	                myDataTable = new YAHOO.widget.DataTable("variable_container", myColumnDefs, myDataSource, myConfigs);

	            },
	            failure: function(o) {

	            }
	        };

	        var getXML = YAHOO.util.Connect.asyncRequest("GET",
	                "/details/vars-xml.html?uri="+ uri,
	                connectionCallback);
	                
	        return {
	            oDS: myDataSource,
	            oDT: myDataTable
	        };
	    }();
	});

}

function showCollsPanel(){
	
	YAHOO.namespace("search.container");
	function init() {
		// Instantiate a Panel from markup
		YAHOO.search.container.panelcoll1 = new YAHOO.widget.Panel("panelcoll1", { width:"320px", visible:false, constraintoviewport:true } );
		YAHOO.search.container.panelcoll2 = new YAHOO.widget.Panel("panelcoll2", { width:"320px", visible:false, constraintoviewport:true } );
		YAHOO.search.container.panelcoll3 = new YAHOO.widget.Panel("panelcoll3", { width:"320px", visible:false, constraintoviewport:true } );
		YAHOO.search.container.panelcoll4 = new YAHOO.widget.Panel("panelcoll4", { width:"700px", visible:false, constraintoviewport:true } );
		YAHOO.search.container.panelcoll1.render();
		YAHOO.search.container.panelcoll2.render();
		YAHOO.search.container.panelcoll3.render();
		YAHOO.search.container.panelcoll4.render();

		YAHOO.util.Event.addListener("showcoll1", "click", YAHOO.search.container.panelcoll1.show, YAHOO.search.container.panelcoll1, true);
		YAHOO.util.Event.addListener("showcoll2", "click", YAHOO.search.container.panelcoll2.show, YAHOO.search.container.panelcoll2, true);
		YAHOO.util.Event.addListener("showcoll3", "click", YAHOO.search.container.panelcoll3.show, YAHOO.search.container.panelcoll3, true);
		YAHOO.util.Event.addListener("showcoll4", "click", YAHOO.search.container.panelcoll4.show, YAHOO.search.container.panelcoll4, true);

	}
	
	YAHOO.util.Event.addListener(window, "load", init);

}

/**
 * Renders the YUI panel view to display matching variables - used in search results page
 * @param pos
 * @return
 */
function showVarsPanel(pos){

	var panel = "panel" + pos;
	var link = "show" + pos;
	container = "container" + pos;
	
	YAHOO.namespace("vars.container");
	function init() {

		// Instantiate a Panel from markup
		YAHOO.vars.container.panel = new YAHOO.widget.Panel(panel, 
										{ 
											width:"320px", 
											visible:false, 
											constraintoviewport:true 
										} 
		);
		
		YAHOO.vars.container.panel.render();
		
		YAHOO.util.Event.addListener(link, "click", YAHOO.vars.container.panel.show, YAHOO.vars.container.panel, true);
	}

	YAHOO.util.Event.onContentReady(("varspanel" + pos),init);

}

/**
 * YUI tooptip object displays the abstract for each survey
 * when user hovers over title
 * @return YUI tooltip with abstract text
 */
function showAbstractPanel() {
	(function() {
		var $B = YAHOO.Bubbling,
		    $L = YAHOO.lang,
		    $E = YAHOO.util.Event,
		    $C = YAHOO.util.Connect;

		  YAHOO.widget.TooltipManager.config ({
		        close: false,
		        width: 400
		  });

		  // customizing the tooltips for ajax request process
		  YAHOO.widget.TooltipManager.onCompile = function ( el, o ) {
		  	var id = el.getAttribute('id'), obj = this;
		  	if ($L.isString(id) && (id !== '')) {
		  		// the anchor have an id defined, send the ajax request
				if ($L.isObject(this.handle)) {
		  			$C.abort(this.handle);
		  		}
		  		var callback = {
					success: function(o) {
						// process the response here...
						obj.body = o.responseText;
						// if the tip was already render, set the body directly
						if ($L.isObject(obj.handleOverlay)) {
						  obj.handleOverlay.setBody (o.responseText);
					    }
					},
					failure: function(o) {
					}
				};
		  		
				var uri = '/browse/survey-abstract.html?uri='+ document.getElementById(id).nextSibling.href;

				if (this.handle = $C.asyncRequest('GET', uri, callback)) {
		  		  this.body = 'Loading, please wait...';
		  		  return true;
		  	    }
		  	}
		  	return false;
		  };
		})();

}

function rpx_init(){
	
	RPXNOW.init({appId: 'figfapgcckfejfdclcfh',xdReceiver: '/dileshni/odesi-beta/home/rpx-xdcomm.html'});
}


function load_widget(){
	
  RPXNOW.loadAndRun(['Social'], function () {
      var activity = new RPXNOW.Social.Activity(
          "Share your comment",
         $F('comment'),
          "http://odesi.ca");
      RPXNOW.Social.publishActivity(activity);
  });
  
}

function setProxySchool(school){
	var exdate = new Date();
	var expiredays = 1;
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie="usrSchool="+ school +((expiredays==null) ? "" : ";expires=" + exdate.toGMTString());
}

//get the usrSchool cookie value
function getSchool(){
	var nameEQ = "usrSchool=";
	var cookieVal = "";
	var ca = document.cookie.split(';');
alert(parent.location.href);
	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) cookieVal= c.substring(nameEQ.length,c.length);
	}

	$('instit').innerHTML = cookieVal;
}