var id='374892hf9264ks973';
var V='VisitaGreen-'+id;
var DaysLastCookie='365';
var visitaObj = new classVisita();
const C_SEPARADOR = "~";
const C_SEPARADOR_CAMPO = "=";
/*
 * Crea una clase visita que contiene todos los datos que queremos almacenar en la cookie
 */
function classVisita(JsId,Fecha,Procedencia,PrimeraUrl,NumVisitas){
	this.JsId=JsId;
	this.Fecha=Fecha;
	this.Procedencia=Procedencia;
	this.PrimeraUrl=PrimeraUrl;
	this.NumVisitas=NumVisitas;
}

/*
 * Crea el objeto parseando la cadena pasada como parámetro
 */
function getVisita(body){
	if(isDefined(body)){
		var values=body.split(C_SEPARADOR); // en función del separador de campos, parte la cadena en registros del array
		// Para cada registro hace lo mismo con el caracter '=' (OJO: PUEDE DAR PROBLEMAS CON LAS URLS)
		// y envía a la función classVisita el valor, posición [1]

		return new classVisita(values[0].split(C_SEPARADOR_CAMPO)[1],
								values.length>1?values[1].split(C_SEPARADOR_CAMPO)[1]:"",
								values.length>2?values[2].split(C_SEPARADOR_CAMPO)[1]:"",
								values.length>3?values[3].split(C_SEPARADOR_CAMPO)[1]:"",
								values.length>4?values[4].split(C_SEPARADOR_CAMPO)[1]:0
									);
	}else{
		return null
	};
}


/*
 * Guarda el objeto visita cuando acaba de cargar la página
 */
function saveVisita(visita){
	visitaObj = visita;
	// En función del navegador guarda el objeto de una forma u otra
	if(document.attachEvent){
		window.attachEvent("onload",processSaveVisita);
	}
	else{
		window.addEventListener("load",function(e){processSaveVisita();},false);
	}
}

/*
 * Devuelve una cadena con los campos del objeto parámetro
 */
function createVisitaBody(visita){
	var body="JsId" + C_SEPARADOR_CAMPO + Math.round(Math.random()*5498762123)+"_"+Math.round(new Date().getTime()/1000);

	if(!isNullOrEmpty(visita.Fecha)){
		body+= C_SEPARADOR + "Fecha" + C_SEPARADOR_CAMPO + visita.Fecha;
		}
	if(!isNullOrEmpty(visita.Procedencia)){
		body+= C_SEPARADOR + "Procedencia" + C_SEPARADOR_CAMPO + visita.Procedencia;
		}
	if(!isNullOrEmpty(visita.PrimeraUrl)){
		body+= C_SEPARADOR + "PrimeraUrl" + C_SEPARADOR_CAMPO + visita.PrimeraUrl;
		}
	if(!isNullOrEmpty(visita.NumVisitas)){
		body+= C_SEPARADOR + "NumVisitas" + C_SEPARADOR_CAMPO + visita.NumVisitas;
		}

	return body;
}





/*
 * Procesa y guarda la visita
 */
function processSaveVisita(){
	var visitaC=getVisita(readCookie(V));
	var body=createVisitaBody(visitaObj);

	// Si ya existe la cookie, incrementa el número de visitas y la guarda otra vez
	if(visitaC!=null){
//		deleteCookie(V);
		visitaC.NumVisitas = parseInt(visitaC.NumVisitas) + 1;
		saveVisitaInCookie(createVisitaBody(visitaC));

//alert('Fecha: ' + visitaC.Fecha + ' - Procedencia: ' + visitaC.Procedencia + ' - PrimeraUrl: ' + visitaC.PrimeraUrl + ' - Visitas: ' + visitaC.NumVisitas );
	}
	else{
		saveVisitaInCookie(body)
	};

	body=null;
	visitaC=null;
	visitaObj=null;
	return;
}







function saveValueInCookie(name,value){
	var date=new Date();
	date.setTime(date.getTime()+DaysLastCookie*86400000);
	writeCookie(name,value,date);
	return;}

function saveVisitaInCookie(body){
	saveValueInCookie(V,body);
	return;
}







function gup(name){
	name=name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regexS="[\\?&|&amp;]"+name+"=([^&#]*)";
	var regex=new RegExp(regexS);
	var results=regex.exec(window.location.href);
	return results==null?"":results[1];}

function getUrl(){
	return escape(window.location.href);
	}

function isDefined(value){
	return typeof(value)!=='undefined'&&value!=null;
	}

function isNullOrEmpty(value){
	return value==undefined||value==null||value=="";
	}

function writeCookie(name,value,expires){
	document.cookie=name+"="+escape(value)+(expires==null?"":";expires="+expires.toGMTString())+";path=/";
	return;
	}

function deleteCookie(name){
	document.cookie=name+'=;expires=Thu, 01 Jan 1970;';
	return;
	}

function extractCookieValue(offset){
	var end=document.cookie.indexOf(";",offset);
	return unescape(document.cookie.substring(offset,end==-1?document.cookie.length:end));
	}

// Lee la cookie con el nombre pasado como parámetro
function readCookie(name){
	var arg=name+"=";
	var alen=arg.length;
	var clen=document.cookie.length;
	var i=0;
	while(i<clen){
		var j=i+alen;
		if(document.cookie.substring(i,j)==arg){
			return extractCookieValue(j);
			}
		i=document.cookie.indexOf(" ",i)+1;if(i==0)break;
	}

	return null;
}
