﻿/*<![CDATA[*/
//<!--
/*
		Libreria: re.libreria
		riscrittura in formato OOP della vecchia libreria, con aggiunta di nuove funzionalità.
		
		Autore: Marco Grazia
			data: 09 gennaio 2010
			versione: 0.0.1
			
		Rilasciata con licenza GPL 3.0
*/

	// Evita che il sito venga incluso in un Frameset
	if (self != top) {
		/*
		if (document.images) top.location.replace(window.location.href);
		else top.location.href = window.location.href;
		//top.location.replace(document.location);
		alert('busting you out, please wait...');
		*/
		bust();
	}
	//	Aggiornato a FF3 e IE7
	function bust() {
		setInterval("top.location.replace('http://www.minigiochi.it/script/redirect_anti_frame_buster.html')",1);
	}	//	bust()
	//	cache it!

/*
	Classe element
	Permette di lavorare con gli elementi DOM della pagina
	
	Metodo d'uso: element.setStyle('pippo', 'color', 'red').setStyle('pippo', 'display', 'block');

*/
var elements = [];
var element = {
	/*
	        Metodo: cache
	        Mette nella cache un elemento DOM (metodo privato)
	        Argomenti:
	            - [string] id : l'id dell'elemento desiderato
	*/
	cache: function(id) {
		//if (typeof element == 'string') {
			if(!elements[id]) {
				//elements[id] = document.getElementById(id);
				if (document.getElementById) {	// 	Mozilla + IE6/7
					elements[id] = document.getElementById(id);
				} else if (document.all) {	//	IE4
					elements[id] = document.all[id];
				} else if (document.layers) {	// 	Netscape 4
					elements[id] = document.layers[id];
				}
			}
		//}
    return elements[id];
    },	//	cache()
	
	/*
	        Metodo: get
	        Restituisce un elemento DOM basandosi sull'id dello stesso
	        Argomenti:
	            - [string] id : l'id dell'elemento desiderato
				
			Esempio d'uso: var valore = element.get('pippo').value;
	*/
	get: function(id) {
	return element.cache(id);
	},	//	get()	
	
	/*
	        Metodo: getStyle
	        recupera il valore dell stile inline di una proprietà css specificata
	        Argomenti:
	            - [string] id : l'id dell'elemento desiderato
	            - [string] css: la proprietà css
				
			Esempio d'uso: var valore = element.getStyle('pippo', 'color');
    */
    getStyle: function(id, css) {
		var ret = element.cache(id).style[css];
	return ret;
    },	//	getStyle()
	     
    /*
	        Metodo: setStyle
	        imposta lo stile inline ad una proprietà css specificata
	        Argomenti:
	            - [string] id : l'id dell'elemento desiderato
	            - [string] css: la proprietà css
	            - [string] value: il valore della proprietà css
				
			Esempio d'uso:  element.setStyle('pippo', 'color', 'red');
    */
    setStyle: function(id, css, value) {
		element.cache(id).style[css] = value;
	return element;
    },	//	setStyle() 
	
	/*
	        Metodo: setStyles
	        imposta lo stile inline ad una moltitudine di proprietà css specificate
	        Argomenti:
	            - [string] id : l'id dell'elemento desiderato
	            - [object] css: le proprietà css da impostare
				
			Esempio d'uso: element.setStiles('pippo', {'color': 'red', 'display': 'block', 'fontSize': '14px'});
	*/
	setStyles: function(id, css) {
		for (var p in css) {
			element.cache(id).style[p] = css[p];
		}
	return element;
	},	//	setStyles()
	
	/*
			Metodo: externalLinks
			sostituisce l'argomento target delle ancore, che in xhml strict non è previsto.
				
			Esempio d'uso: nel codice xhtml usare rel="" all'interno delle ancore a seconda che il link
				- [rel : external] per siti in lingua inglese
				- [rel : esterno] per siti in lingua italiana
				- [rel : interno] per aggiungere nel title la frase: "link interno al sito"
	*/
	externalLinks: function() {
		var anchors = document.getElementsByTagName("a");
		for (var i=0; i<anchors.length; i++) {
			var anchor = anchors[i];
			if (anchor.getAttribute("href")) {
				switch (anchor.getAttribute("rel")) {
					case 'esterno':	// Versione italiana.
						anchor.target = "_blank";
						if (anchor.title) anchor.title += " (Il link apre una nuova finestra)";
						if (!anchor.title) anchor.title = "Il link apre una nuova finestra";
					break;
					case 'interno':
						if (anchor.title) anchor.title += " (link interno al sito)";
						if (!anchor.title) anchor.title = "link interno al sito";
					break;
					case 'nofollow interno':	//	Caso di utilizzo del tag per Google (è una prova)
						if (anchor.title) anchor.title += " (link interno al sito)";
						if (!anchor.title) anchor.title = "link interno al sito";
					break;
					case 'external':	// Versione inglese.
						anchor.target = "_blank";
						if (anchor.title) anchor.title += " (Il link apre una nuova finestra in inglese)";
						if (!anchor.title) anchor.title = "Il link apre una nuova finestra in inglese";
					break;
					
					default:	//	se non è definito nessun attributo rel, non fa nulla!
				}
			}
		}
	},	//	externalLinks()
	
	/*
			Metodo: statusString
			sostituisce defaulStatus
			Argomenti:
				- [string] frase: una frase che sui vecchi browser viene mostrata nella status bar
				
			Esempio d'uso: element.statusString('frase da mostrare');
	*/
	statusString: function(frase) {
		defaultStatus = frase;
	},	//	statusString()
	
	/**
			Metodo: hideShow
			mostra o nasconde una sezione di testo nella pagina.
			nell'elemento da mostrare/nascondere, deve essere settata la proprietà CSS display: none;
			Argomenti:
				- [string] id: l'identificativo della sezione da mostrare/nascondere
				
			Esempio d'uso: element.hideShow('pippo');
	*/
	hideShow: function(id) {
		if (element.getStyle(id, 'display') == 'none') {
			element.setStyle(id, 'display', 'block');
		} else element.setStyle(id, 'display', 'none');
	},	//	hideShow()
	
	/**
			Metodo: stillLoading
			mostra un box a centro pagina in cui una gif animata simula l'attesa di caricamento pagina
			scompare appena la pagina è pronta	
			Argomenti:
				- nessuno
				
			Esempio d'uso: è caricato direttamente nell'evento load della pagina.
	*/
	stillLoading: function() {
		var ombra = "-moz-box-shadow: 0px 0px 8px #ffffff; /* FF3.5+ */"+
			  		"-webkit-box-shadow: 0px 0px 8px #ffffff; /* Saf3.0+, Chrome */"+
			  		"box-shadow: 0px 0px 8px #ffffff; /* Opera 10.5, IE 9 */";
		var bordo = "border: 1px dotted #AF0A0A; /* tutti */" +
					"-moz-border-radius: 4px; /* FF1+ */"+
					"-webkit-border-radius: 4px; /* Saf3-4 */"+
          			"border-radius: 4px; /* Opera 10.5, IE 9, Saf5, Chrome */";
		var stile = "position:absolute; top:50%; left:50%; width:250px; height:160px; margin:-80px 0 0 -125px;"+
					"text-align:center; padding:10px; background-color: #FFED2F; color: #000031;";
		
		document.write("<div id=\"loading\" style=\"" + stile + ombra + bordo + "\">");
		document.write("<p style=\"margin-top:30px;text-align:center;\">Attendi il caricamento</p>");
		document.write("<img style=\"margin:15px;\" src=\"img/loading.gif\" alt=\"Loader\" />");
		document.write("<p style=\"text-align:center;\">Please wait while loading</p>");
		document.write("</div>");
	}	//	stillLoading()
	
}
// Fine della classe Element

/*
	Class: Window
	Wrapper per l'oggetto window
*/
var Window = {
	/*
		Metodo: load
		imposta l'evento load
	*/
	load: function(fn) {
		window.addEventListener('load', fn, false);	
	}
}
//	Fine della classe Window


//	Gestisce i link nella pagina.
Window.load(function() {element.externalLinks();});
//	Definisce una frase di default sulla status bar dei vecchi browser.
Window.load(function() {element.statusString('StilisticaMente.biz');});

//	Mostra una icona di attesa caricamento pagina
element.stillLoading();
Window.load(function() {
	element.setStyle("loading", "display", "none");
});
//-->
/*]]>*/
