/*
 * cssjs
 * written by Christian Heilmann (http://icant.co.uk)
 * http://www.onlinetools.org/articles/unobtrusivejavascript/cssjsseparation.html
 * eases the dynamic application of CSS classes via DOM
 * parameters: action a, object o and class names c1 and c2 (c2 optional)
 * actions: swap exchanges c1 and c2 in object o
 *			add adds class c1 to object o
 *			remove removes class c1 from object o
 *			check tests if class c1 is applied to object o
 * example:	cssjs('swap',document.getElementById('foo'),'bar','baz');
 */

function jscss(a,o,c1,c2){
  switch (a){
    case 'swap':
      o.className=!jscss('check',o,c1)?o.className.replace(c2,c1): o.className.replace(c1,c2);
      break;
    case 'add':
      if(!jscss('check',o,c1)){o.className+=o.className?' '+c1:c1;}
      break;
    case 'remove':
      var rep=o.className.match(' '+c1)?' '+c1:c1;
      o.className=o.className.replace(rep,'');
      break;
    case 'check':
      var checkClass = new RegExp('\\b'+c1+'\\b').test(o.className);
  }
  return checkClass;
}

// applica lo stile ai tab della ricerca veloce in Home
function SetActive(choice){
 	/* var ids = new Array('sito','catalogo','aire','sbn','acnp'); // gli ID dei vari form. L'ordinamento è importante! */
	/* var ids = new Array('sito','catalogo','aire'); // gli ID dei vari form. L'ordinamento è importante! */
	var ids = new Array('catalogo','aire'); // gli ID dei vari form. L'ordinamento è importante!

	for (var i=0;i<ids.length;i++){

		var li = ids[i] + 'li'; // gli ID delle LI
		var li = document.getElementById(li);
		var form = document.getElementById(ids[i]);
    	var last = document.getElementById(ids[ids.length-1]+'li'); // ultimo elemento
		
		jscss('remove',li,'active');
		jscss('remove',li,'previous');
		jscss('add',form,'hidden');
    	
		if(choice==ids[i]){
			var ul = document.getElementById('quicktabsul');
			jscss('remove',form,'hidden');
			jscss('add',li,'active');		
			if(jscss('check',li,'first')){ // se è il primo elemento
				jscss('add',ul,'active');
				jscss('remove',last,'lastactive');
			}else if(jscss('check',li,'last')){ // se è l'ultimo elemento. Necessario per IE (bug classi multiple)
				var prev = document.getElementById(ids[i-1]+'li');
				jscss('add',prev,'previous');
				jscss('remove',ul,'active');
				jscss('add',li,'lastactive');
			}else{
				var prev = document.getElementById(ids[i-1]+'li');
				jscss('remove',last,'lastactive');
				jscss('add',prev,'previous');
				jscss('remove',ul,'active');
			}
		}
	}
}

// replace special characters to hexadecimal Unicode escape sequence (per ricerca in SBN)
function Sba_ReplaceCharacters(sbaPhrase){
    sbaPhrase = sbaPhrase.replace(/(\u00e0|\u00e1|\u00e4)/g, "a");
    sbaPhrase = sbaPhrase.replace(/(\u00e9|\u00e8|\u00eb)/g, "e");
    sbaPhrase = sbaPhrase.replace(/(\u00ec|\u00ed|\u00ef)/g, "i");
    sbaPhrase = sbaPhrase.replace(/(\u00f2|\u00f3|\u00f6)/g, "o");
    sbaPhrase = sbaPhrase.replace(/(\u00f9|\u00fa|\u00fc)/g, "u");
    sbaPhrase = sbaPhrase.replace(/\u00e7/g, "c");
    sbaPhrase = sbaPhrase.replace(/\u00f1/g, "n");
    sbaPhrase = sbaPhrase.replace(/\u0026/g, "");
    sbaPhrase = sbaPhrase.replace(/\u00df/g, "ss");
	return sbaPhrase;
}

// necessaria per la ricerca in SBN
function SbnSearch(){
	var sbnVisrequestuse = document.records.visrequestuse; // select: tipo di ricerca
	var sbnVisibleRequest = document.getElementById('visibleRequest'); // input di ricerca visibile all'utente
	sbnVisibleRequest.value = Sba_ReplaceCharacters(sbnVisibleRequest.value);
	var sbnRequest = document.getElementById('request'); // input di ricerca rielaborato
	var sbnRequestValue = sbnRequest.value;
	var sbnVisrequestuseValue = sbnVisrequestuse.options[sbnVisrequestuse.selectedIndex].value; // selected option value
	// In base al tipo di ricerca costruiamo la stringa da passare ad SBN	
    var sbnVisrequestuseIndex = sbnVisrequestuse.selectedIndex;
    switch (sbnVisrequestuseIndex) {
		case 0: // Parole chiave
		sbnRequest.value = '((1=1035  4=2 "' + sbnVisibleRequest.value + '"))';
		break;
    	case 1: // Parole del Titolo
		sbnRequest.value = '((1=4  4=2 "' + sbnVisibleRequest.value + '"))';
		break;
		case 2: // Titolo esatto
		sbnRequest.value = '((1=4  4=1 "' + sbnVisibleRequest.value + '"))';
		break;
		case 3: // Autore
		sbnRequest.value = '((1=1003  4=2 "' + sbnVisibleRequest.value + '"))';
		break;
		case 4: // Soggetto
		sbnRequest.value = '((1=21  4=2 "' + sbnVisibleRequest.value + '"))';
		break;
	}
	var sbnVisrequest = document.getElementById('visrequest');
	var sbnVisrequestValue = sbnVisrequest.value;
	sbnVisrequest.value = '=<span class="visrequestuse">' + sbnVisrequestuseValue + '</span> = "<span class="visrequestval">' + sbnVisibleRequest.value + '</span>"';
}

// STYLESWITCHER
// Applica un foglio di stile particolare e salva la scelta in un cookie di sessione
// Grazie a: http://alistapart.com/stories/alternate/

function setActiveStyleSheet(title) {
  var i, a, main;
  for(i=0;(a = document.getElementsByTagName("link")[i]);i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") == title) a.disabled = false;
    }
  }
}

function getActiveStyleSheet() {
  var i, a;
  for(i=0;(a = document.getElementsByTagName("link")[i]);i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function getPreferredStyleSheet() {
  var i, a;
  for(i=0;(a = document.getElementsByTagName("link")[i]);i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(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 c.substring(nameEQ.length,c.length);
  }
  return null;
}

window.onload = function(e) {
  var cookie = readCookie("style");
  var title = cookie ? cookie : getPreferredStyleSheet();
  setActiveStyleSheet(title);
}

window.onunload = function(e) {
  var title = getActiveStyleSheet();
  createCookie("style", title, 0);
}

var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);

function eraseCookie(name) {
  createCookie(name,"",-1);
}

// Google maps biblioteche

var map;
function load_google_map() {
if (GBrowserIsCompatible()) {

function getQueryVariable() {
    var id_el = document.getElementById('gmaps');
    if (id_el) {
        var campoid_value = id_el.innerHTML;
    }else{
        alert('CampoID non trovato');
    }
    return campoid_value;
}

var google_map_container = document.getElementById("google-map");
google_map_container.className += ' expanded';

/* var google_map_button = document.getElementById("google-map-button");
google_map_button.className += ' hidden';
 */
var map = new GMap2(document.getElementById("google-map"));
map.addControl(new GLargeMapControl());
map.addControl(new GOverviewMapControl());

function createMarker(point, name) {
  var marker = new GMarker(point,{title: name});
  GEvent.addListener(marker,"click",function(){
	  var opts = {pixelOffset:new GSize(32,5), maxWidth:10};
	  marker.openInfoWindowHtml("<br><strong>" + name + "</strong>",opts);
  });
  return marker;
}

GDownloadUrl("/files/google-maps-data.xml?"+Math.random(),function(data, responseCode){
  var xml = GXml.parse(data);
  var markers = xml.documentElement.getElementsByTagName("marker");
  for (var i=0;i<markers.length;i++) {
	var id = markers[i].getAttribute("id");
	var campoId = getQueryVariable();
	if(id == campoId){ // confronta l'ID della biblioteca con il file XML
        var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lng")));
        var name = GXml.value(markers[i].firstChild );
		map.addOverlay(createMarker(point, name));
		var myLat = parseFloat(markers[i].getAttribute("lat"));
		var myLng = parseFloat(markers[i].getAttribute("lng"));
		
		window.setTimeout(function() { // timeout per centrare la mappa sulla biblioteca attuale
			map.panTo(new GLatLng(myLat, myLng));
		}, 1000);}
		/* else{map.addOverlay(createMarker(point, name));} */ //questa riga mostrerebbe le bandierine di tutte le biblioteche, ma rallenterebbe troppo
  }
});

var myLat = "45.40650";
var myLng = "11.877000";

map.setCenter(new GLatLng(myLat,myLng), 16);
}
}

function _setupIW(){
    var header = document.getElementById('header-wrapper');
    header.className = 'header-wrapper-translated';
    var topleft = document.getElementById('top-left');
    topleft.innerHTML = '<a id="homeURL" href="http://translate.google.com/translate_c?hl=en&langpair=it%7Cen&u=http://www2.cab.unipd.it/" title="Sistema Bibliotecario di Ateneo"></a>';
    var photo = document.getElementById('photo');
    if(photo){
        jscss('add',photo,'translated');
    }
}



