var SITE_URL = "www.clitt.it";
var $g = jQuery;
$g(document).ready(function() {

	/** Global defs */
	var href;
	
	// All a DOM Elements
	var a_items = document.getElementsByTagName("a");
	
	// Class to setup for protected elements
	var protected_class = "";
	
	// Define regexp for protection
	var reg = /.*protected.*/gi;
	var res_regexp;
	
	// Get all <a ..> element
	var type;
	
	function getResources() {
		var wname = window.name;
		var re = /fancybox.*/gi;
		if (wname.match(re) || wname=='newWindow') return;
		/* Try to retrieve hidden data */
		var b = document.getElementById("b_");
		var p = document.getElementById("p_");
		if (b==undefined) {
			//alert("Grant Manager error: b_ is not defined.");
			return;
		}
		if (p==undefined) {
			//alert("Grant Manager error: p_ is not defined.");
			return;
		}
		
		//alert ("getResources");
		
		if (p.value=='Utenti' || p.value=='Studente / Student') {
			res_regexp = /.*xstudx.*/;
			protected_class = "studenti";
		} else if (p.value=='Docente / Teacher' || p.value=='Collaboratori' || p.value=='Funzionari' ) {
			res_regexp = /.*(xstudx|xteachx).*/;
			protected_class = "docenti";
		} else {
			res_regexp = /.*NO_MATCH.*/;
		}

		/* Resource Container: split into iContainer items grouped by 10 */
		var iContainer = new Array();
		var items = new Array();
		for (var i=0;i<a_items.length;i++) {
			href = new String(a_items[i].href);
			if (!href.match(b.value) || !href.match(/.*(xstudx|xteachx|protected)/)) {
				continue;
			}
			
			/* Select only resource that matches user profile */
			if (href.match(res_regexp)) {
				href = href.substr(href.indexOf(b.value) + b.value.length + 1);
				if (href.match(reg)) {
					type = 'link';
					href = href.replace(/protected/, "").substr(1);
				} else {
					type = 'page';					
				}
				if (href!="") {
					var index = href.indexOf('?');
					if (index!=-1) {
						href = href.substr(0, index);
					}
					items.push(type+"#"+href);
					if (i>0 && (items.length % 10 == 0)) {
						iContainer.push(items);
						items = new Array();
					}
				}
			}
		}
		if (items.length>0)
			iContainer.push(items);
			
		breakRequests(iContainer, b.value);
	}
	
	function breakRequests(iContainer, site) {
		while (iContainer.length>0) {
			gr_ajax(iContainer.shift(), site);
			breakRequests(iContainer, site);
		}
	}
	
	function gr_ajax(items, site) {
		/* Define json object to send to php script */
		var grant_set = '{ "b" : "'+site+'" ';

		/* Fill the json object */
		if (items.length>0) {
			grant_set += ' , "resources" : [ ';
		}
		var idata;
		for (var i=0;i<items.length;i++) {
			idata = items[i].split("#");
			grant_set += ' { "t" : "'+idata[0]+'" , "i" : "'+idata[1]+'", "grant" : 0 } ';
			if (i<items.length-1) grant_set += ' , ';
		}
		if (items.length>0) {
			grant_set += ' ] ';
		}
		grant_set += ' } ';
		//alert(grant_set);
		
		/* finally call ajax passing object */
		$.get("http://"+SITE_URL+"/wp-content/plugins/wp_advanced_protection/filter/grant_resource.php", { gset: escape(grant_set)},
			function(data){
				//alert("Raw" + unescape(data));
				if (unescape(data)=="") return;
				var gset = eval("(" + unescape(data) + ")");
				var tmp = new Array();
				var items = gset.resources;
				var current;
				for (var i=0;i<items.length;i++) {
					current = items[i];
					if (current.grant=="" || !current.grant) {
						tmp[current.i] = "forbidden";
					}
				}
				//alert("Res: " + gset);
				for (var i=0;i<a_items.length;i++) {
					href = new String(a_items[i].href);
					if (!href.match(site) || !href.match(/.*(xstudx|xteachx|protected)/)) {
						continue;
					}
					var index = href.indexOf('?');
					if (index!=-1) {
						href = href.substr(0, index);
					}
					if (href.match(reg)) {
						href = href.substr(href.indexOf(site) + site.length + 1).replace(/protected/, "").substr(1);
					} else {
						href = href.substr(href.indexOf(site) + site.length + 1);
					}
					if (tmp[href]!=undefined) {
						a_items[i].setAttribute(getRightClassAttribute(), protected_class);
						a_items[i].removeAttribute('rel');
					}
				}
		});				
	}
	
   	getResources();
});

/* mulp hack. Must choose right class attribute name based on
 * IE7, IE8, other. */
function getRightClassAttribute() {
	if (navigator.appName == "Microsoft Internet Explorer") {
		var ua = navigator.userAgent;
		var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
		if (re.exec(ua) != null)
			if (parseFloat( RegExp.$1 )>= 8.0) 
				return "class";
			else
				return "className";
	} else {
		return "class";
	}
}



