/*
	LUCA ::::

	Guardare il metodo saveClippings()
	Aggiungere il domain al salvataggio del cookies

*/
/*
Clippings version 1.0.6.18.2001

summary 
- - - - -
script handles all Clipping functionality
this is a stripped down version of the IHT Clippings code
the primary difference is the removal of animation code which I am not that happy with
and a few minor improvements

+  Add to Clippings
+  Link to Clipping
+  Update Clipping as read
+  Remove Clipping(s)
+  Save Clippings

comments
- - - - - - 
Clippings only work with DOM browsers.  Opera at this point does not have enough of the DOM to support clippings.
There is little or no feature/browser compatibiliy checking in this code, so use wisely.
The code has been tested on IE 5.0, 5.5, 6.0 on Windows, IE 5.0 on Mac, and various versions of Netscape 6.0 and Mozilla.

loadClippingURL() will control how Clipping urls are handled.  You will want to customize this method.
clippingsTag is a variable which defines what tag your Clippings icon will be nested in.  All clipping icons must be in the same type of tag.

there is a fix for a display error in Mozilla on lines 266-268 and again on 

changelog
- - - - - - 
08.06.2001 Mindor tweak to clippingsSetContainerHeight()

copyright
- - - - - -
Copyright (C) 2001 John Weir  (www.smokinggun.com)

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

A copy of the license may be found at www.smokinggun.com/perm/gnu.php
or www.fsf.org (Free Software Foundation)
*/

var locked = true;

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
// -->

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=v; }
}

allClippings = new Array();  //all Clippings on page
activeClippings = new Array() //all Clippings stored by the user
currentClipping = 0; //where in the list of Clippings is the user
clippingsDivArray = new Array(); //array of all clipping divs on the page, used to find duplicates
cookiesOn = false; //used to make sure cookies are enabled

clippingsTag = "IMG"; //the tag which the Clipping icon is located in

var mouseX = mouseY =0;

//returns height, width and other window information; works in NS6 and IE5(Mac/Win)
function screenObject() {
	this.bottom = function(){
		if (document.body.scrollHeight) return document.body.scrollHeight};
	
	this.height = function() {
		if (document.body.offsetHeight) return document.body.offsetHeight;}
	
	this.visHeight = function() {
		if (window.innerHeight) return window.innerHeight;
		if (document.body.clientHeight) return document.body.clientHeight;}
	
	this.width = function() {
		if (document.body.offsetWidth) return document.body.offsetWidth;}
	
	this.scrollTop = function() {
		if(document.body.scrollTop) return document.body.scrollTop
		if (window.pageYOffset) return window.pageYOffset;
		else return 0;};
	}

function mousePosition(e) {
	if (e) event = e;   //for Netscape
	mouseX = event.clientX;
	mouseY = event.clientY;
}
	
//resize the clippings container	
/*function windowResize() {
	clippingsSetContainerHeight()
}
*/

//this method needs to be called to initialize the clippings
function initClippings() {
	createPageClippingsArray()
	loadClippings();
	setClippingsVisibility();		
	updateClippingCounter();
	drawClippings();
}	

//clipping class
function Clipping(id,name,URL, read) {
	this.id = id;
	this.name = name;
	this.URL = URL;
	this.read = read;
	this.clicked = markRead;
}

//get Clippings from a cookie
function loadClippings() {
	clippingsString = null;
	tempArray = document.cookie.split(";");
	x = -1;

	for (tA = 0; tA < tempArray.length; tA++) {
		if (tempArray[tA].indexOf('clippings=') > -1) { //found the clippings section
			tPos = tempArray[tA].indexOf("=")+2;
			clippingsString = tempArray[tA].substring(tPos,tempArray[tA].length); //striping out "clippings=^"
		}
	}
	if (clippingsString != null) {		
		tempArray = clippingsString.split("^");
		if (tempArray.length > 1) {
			x=0;
			for (i=0; i < tempArray.length/4; i++) {
				//add the id, name, url, readstate
				activeClippings[i] = new Clipping(tempArray[x],tempArray[x+1],tempArray[x+2],tempArray[x+3])
				x=x+4;
			}
		}
	}
}

//saves clippings to cookie	
function saveClippings() {
	tempCookie = "clippings=";
	for(i=0; i < activeClippings.length; i++) {
		tempCookie=tempCookie+"^"+(activeClippings[i].id)+"^"+(activeClippings[i].name)+"^"+(activeClippings[i].URL)+"^"+(activeClippings[i].read);
	}
	var expire = new Date ();
	expire.setTime (expire.getTime() + (6 * 24 * 3600000)); //expires in 6 days from users clock
	expire = expire.toGMTString();
	finalCookie = tempCookie+"; path=/; expires="+expire + "; domain=fineco.it;";
  	document.cookie = finalCookie;
}

// detects wether cookies are turned on or not
function eventCheckForCookies() {
	document.cookie = "cookies=on";
	checkForCookie = document.cookie.split(";");
  for (x=0; x < checkForCookie.length; x++) {
		if (checkForCookie[x].indexOf("cookies") >= 0) {cookiesOn = true;}
  }
  if (cookiesOn == false) alert("You will need to enable\ncookies to use Clippings.");
}

//marks a clipping read
function markRead(id) {
	if (!id) id = this.id.substring(5,this.id.length);
	for (i=0; i < activeClippings.length; i++) {
		if (activeClippings[i].id == id) activeClippings[i].read = "yes";
	}

	//refresh the container
	drawClippings();
}	

//loads the url of the clipping
function loadClippingURL(pos) {
	markRead(activeClippings[pos].id);
	//	n = open(activeClippings[pos].URL,"win"+activeClippings[pos].id);
	document.location.href=activeClippings[pos].URL;
}

//load next unread clipping in array
function eventShowNextClipping() {
	if (activeClippings != null) {
		total = 0;
		for (aC = 0; aC < activeClippings.length; aC++) {
			if (activeClippings[aC].read != "yes") {
				markRead(activeClippings[aC].id);
				saveClippings();
				loadClippingURL(aC);
				//document.location = activeClippings[aC].url;
				break;
			}
		}
	}
}

//removes all read clippings	
function eventClearReadClippings() {
	
	tempClippings = new Array()

	x = 0;
	for (i=0; i < activeClippings.length; i++) {
		if (activeClippings[i].read != "yes") {tempClippings[x] = activeClippings[i]; x++}
	}
	activeClippings = tempClippings;
	drawClippings();
	setClippingsVisibility();	
	updateClippingCounter();
	saveClippings();
}

//removes all clippings	
function eventClearAllClippings() {
	activeClippings = new Array();
	updateClippingCounter();
	setClippingsVisibility();
	drawClippings();	
	saveClippings();
}

//creates the HTML for the clippings menu when a clipping is added
//removed create element and used innerHTML instead
function drawClippings() {

	newHTML =  "<table  cellpadding=\"0\" cellspacing=\"0\"  border=\"0\" width=\"100%\">";
	newHTML +=  "<tr><td>";
	newHTML += "<img src=\"images/space.gif\" width=\"1\" height=\"2\" border=\"0\">";


	//draw this text if there are no clippign
	
	
	
	if (activeClippings.length < 1) {
		newHTML += "<font class='clip'>&nbsp;&nbsp;&nbsp;Non ci sono appunti salvati.</font><br><br>";
		newHTML += "</td></tr>";
	}
	newHTML += "</table>";
	
	
	
	
	
	var nClip;
	nClip=0;
	for (i=0; i < activeClippings.length; i++) {
		clipping = activeClippings[i];
		
		if (clipping.read == "yes"){ 
			tClass = "clippingItemRead";
		}else {
			tClass = "clippingItem";
		}

		newHTML += "<table border='0' cellspacing='0' cellpadding='0' style=\"border-left-width : thin;\">"
		newHTML += "<tr>"	
		newHTML += "<td   colspan='2' height='2'></td>"
		newHTML += "</tr>"
		newHTML += "<td  width='25' align='center' >"
		newHTML += "<a href=\"javascript:loadClippingURL("+i+")\"><img src='images/space.gif' align='top' border='0'></a>"
		newHTML += "</td>"
		newHTML += "<td   valign='top' ><a href=\"javascript:loadClippingURL("+i+")\" class='clip'>"
		newHTML += clipping.name;
		newHTML += "</a></td>"
		newHTML += "</tr></table>"
		
		nClip += 1;
		
	}

	
	obj = document.getElementById("clippingsContainerInternal");
	if(obj == null) return;
	obj.innerHTML = newHTML;
	
	//this is a fix for Mozilla, which is not draw the contents to screen currently;
	obj.style.display = "none";
	obj.style.display = "block";
	
	if (nClip>1){
		obj.style.height=nClip * 20;		
	}else{
		obj.style.height=32;		
	}

	//make sure that the clippings container does not go off screen
	//clippingsSetContainerHeight();
}


//sets the height of the clippings container, make sure it does not go off screen
function clippingsSetContainerHeight() {
	obj = document.getElementById("clippingsContainerInternal");
	if (userScreen.visHeight() > 350) {
		obj.style.height= (userScreen.visHeight()-350)+"px";
	}
}

//make sure there is no other record of that clipping in use
function checkForDuplicates() {
	for (i=0; i < activeClippings.length; i++) {
		if (newClipping == activeClippings[i].id) {i = allClippings.length; duplicate = true;}
	}
}

//creates array of all clippings on page
//having this array helps speed things up on the mac
function createPageClippingsArray() {
	d = document.getElementsByTagName(clippingsTag)
	for (j=0; j < d.length; j++) if (d[j].id.indexOf("clp") > -1) {
		clippingsDivArray[clippingsDivArray.length] = d[j];
	}
}

//finds duplicate clippings on a page
function clippingInstanceVisibility(id,state) {
	t = document.getElementsByName(id);
	if(t.length > 0) {
		for (j=0; j < t.length; j++) {
			t[j].style.visibility = state;
			t[j].onclick = addClipping;
		}
	} else {
		d = clippingsDivArray;
 		{
		for (j=0; j < d.length; j++) if (d[j].id == id) {
			d[j].style.visibility = state;
			d[j].onclick = addClipping;
		}
		}
	}		
}
	
//sets the visibility and events for an object;	
function setClippingsVisibility() {
	for (i=0; i < allClippings.length; i++) {
		vis = "visible";
		
		//find if this clipping is already selected
		for (x=0; x <activeClippings.length; x++) if (allClippings[i].id == activeClippings[x].id) vis = "hidden";
		obj = "clp"+allClippings[i].id;
		clippingInstanceVisibility(obj,vis)
	}
}

//this event is triggered when a clipping is clicked 
function addClipping() {
	newClipping = this.id.substring(3,this.id.length)
	duplicate = false;
	for (i=0; i < allClippings.length; i++) { //find the position the allClippings array of the selected clipping
		if (newClipping == allClippings[i].id) {pos = i; i = allClippings.length}
	}
	if (activeClippings.length > 0)	checkForDuplicates() //make sure clipping is not already seletected
	if (!duplicate) {	
		eventCheckForCookies();
		if (cookiesOn == true) {
			activeClippings[activeClippings.length] = new Clipping(allClippings[pos].id,allClippings[pos].name,allClippings[pos].URL);
			
			//find all instances of the clipping in article and hides it
	 		clippingInstanceVisibility(this.id,'hidden') 
	 		
	 		drawClippings();	
	 		if (document.all) event.cancleBubble = true;
	 		updateClippingCounter();
			saveClippings();
		 }
	 }
}

//sets the number of unread clippings
function updateClippingCounter() {
	if (activeClippings != null) {
		total = 0;
		for (aC = 0; aC < activeClippings.length; aC++) {
			if (activeClippings[aC].read != "yes") total++
		}
	}
	obj = document.getElementById("clippingsCounter");
	if (obj==null){
		return;
	}else{
	obj.innerHTML = "<span style=\"color: #676767; font-family: Verdana; font-size: 10px; font-weight: bold;}\">"+total+"</span>"/*+"<br><a href=\"javascript:eventShowNextClipping()\">Next Unread Clipping</a>"*/;
	obj.style.display = "none";
	obj.style.display = "block";
	}
}
	
//initialize clippings
function init() {		
	//fix for differences in how IE and Netscape setAttribute to the class property
	if (document.all) classFix = "className";
	else classFix = "class";
	
	//create a screen object, handles height, width of the screen
	userScreen = new screenObject(); 
	
	//in window.js
	//window.onresize = windowResize;
		
	initClippings();
	
	


	allClippings[allClippings.length] = new Clipping(1,"Primo articolo","http://www.sito.com/articolo1.htm");
	allClippings[allClippings.length] = new Clipping(2,"Secondo articolo","http://www.sito.com/articolo2.htm");



	//REMOVE THIS, ONLY FOR SMOKINGGUN.COM!
	try {
		windowInit();
	}
	catch(err) {}
}
		
window.onload = init;