/* - - - - - - - - - - - - - - - - - - - - -

 * Functions.js - UCF website
 * @created: 08/16/2009
 * @modified: 07/21/2010
 * @version: 1.39

- - - - - - - - - - - - - - - - - - - - - */

var datas = new Object;
var dialog = new Array;

function makeTooltips() {
	for (var x in datas) {
		try { var el = document.getElementById(x).getElementsByTagName('li'); }
		catch(e) { continue; }
		for (var j=0; j<datas[x].length; j++) {
			var html = '<div class="content">' + unescape(datas[x][j].content) + '</div>';
			var title = '<div class="xpopup"><div class="title">' + unescape(datas[x][j].title) + '</div></div>';
			dialog[x+j] = jQuery('<div class="xpopup"></div>')
			.html(html)
			.dialog({
				width: 700,
				autoOpen: false,
				title: title
			});
                        jQuery(el).eq(j).attr('rel',x+j);
                        jQuery(el).eq(j).click(function() {
                                o = jQuery(this).attr('rel');
                                dialog[o].dialog('open');
                                return false;
                        });
		}
	}
}

function initDivOver() {
	try { var obj = document.getElementsByTagName('div'); }
	catch(e) { return false; }
	for (var i=0; i < obj.length; i++) {
		el = obj[i]; 
		if (el.className.match('out')) {
			el.onmouseover = function() { toggleBg(this,'over'); }
			el.onmouseout  = function() { toggleBg(this,'out'); }
			el.onclick     = function() { toggleBg(this,'toggle'); }
		}
	}
}

function initLIOver() {
	try { var obj = document.getElementsByTagName('ul'); }
	catch(e) { return false; }
	for (var i=0; i < obj.length; i++) {
		el = obj[i];
		if (el.className.match('out')) {
			var el2 = el.getElementsByTagName('li');
			for (var j=0; j < el2.length; j++) {
				el2[j].onmouseover = function() { toggleBg(this,'over'); }
				el2[j].onmouseout  = function() { toggleBg(this,'out'); }
				if (el2[j].getElementsByTagName('a')[0]) {
					if (!obj[i].id) {
						el2[j].onclick = function() {
											var obj = this.getElementsByTagName('a')[0];
											if (obj != undefined) {
												try {lightviewShow(obj);} catch(e){}
											}
										}
					}
					if (el.className.match('nopopup') || el2[j].className.match('nopopup')) {
						el2[j].onclick = function() {
											var obj = this.getElementsByTagName('a')[0];
											if (obj != undefined) { location.href = obj.href; }
										}
					}
				}
			}
		}
		if (el.className.match('click')) {
			var el2 = el.getElementsByTagName('li');
			for (var j=0; j < el2.length; j++) {
				el2[j].onclick = function() { lightviewShowAjax('checkpoint.php'); }
			}
		}
	}
}

function initClick() {
	try { var obj = document.getElementsByTagName('div'); }
	catch(e) { return false; }
	for (var i=0; i < obj.length; i++) {
		el = obj[i];
		if (el.className.match('click')) {
			el.onclick = function() { lightviewShowAjax('checkpoint.php'); }
		}
	}
}

function lightviewShow(obj) {
	obj.className = "lightview";
}

function lightviewShowAjax(url) {
	Lightview.show({
		href: url,
		rel: 'ajax',
		options: {
			autosize: true,
			topclose: true,
			overflow: 'hidden',
			ajax: { method: 'post', evalScripts: true }
		}
	});
}

function lightviewShowURL(url) {
	var w = 900;
	var h = 1500;
	Lightview.show({
		href: url,
		rel: 'iframe',
		options: {
			topclose: true,
			width: w,
			height: h
		}
	});
}

function lightviewSmallURL(url) {
	var w = 900;
	var h = 500;
	Lightview.show({
		href: url,
		rel: 'iframe',
		options: {
			topclose: true,
			width: w,
			height: h
		}
	});
}

function checkpoint2() {
	try { var el = document.getElementById('checkpoint2').elements["grp"]; }
	catch(e) { return false; }
	for (var i=0; i<el.length; i++) {
		if(el[i].checked) {
			lightviewSmallURL(el[i].value);
		}
	}
}

function initPop() {
	try { var obj = document.getElementsByTagName('div'); }
	catch(e) { return false; }
	for (var i=0; i < obj.length; i++) {
		el = obj[i];
		if (el.id.match('lnk')) {
			el.onclick = function() {
				lightviewShowURL(this.title);
			}
		}
	}
}

function makeTitleLinks() {
	try { var obj = document.getElementById('blocks').getElementsByTagName('p'); }
	catch(e) { return false; }
	for (var i=0; i < obj.length; i++) {
		el = obj[i];
		if (el.className.match('title')) {
			el.onmouseover = function() { toggleBg(this,'over'); }
			el.onmouseout  = function() { toggleBg(this,'out'); }
			el.onclick     = function() {
				var id = get_nextsibling(this).id;
				animatedcollapse.toggle(id);
				toggleBg(this,'toggle');
			}
		}
	}
}

function makeAnimCollapse() {
	try { var obj = document.getElementsByTagName('div'); }
	catch(e) { return false; }
	var count = 0;
	for (var i=0; i < obj.length; i++) {
		el = obj[i];
		if (el.id.match('acc')) { animatedcollapse.addDiv(el.id,'group=grp'); count++; }
	}
	if (count > 0) { animatedcollapse.init(); }
}

function toggleBg(el,flag) {
	var cls = el.className;
	switch(flag) {
		case "over":
			cls = (cls.match('out')) ? cls.replace('out', 'over') : cls + ' over';
			cls = cls.replace(/^\s*([\S\s]*?)\s*$/, '$1'); // trim
			el.className = cls;
		break;
	
		case "out":
			cls = cls.replace(/over/g, '');
			cls = cls.replace(/^\s*([\S\s]*?)\s*$/, '$1'); // trim
			el.className = cls;
		break;
	
		case "toggle":
			cls = (cls.match('more')) ? cls.replace('more', 'less') : cls.replace('less', 'more');
			el.className = cls;
		break;
	}
}

function advertLinks() {
	if (!document.getElementsByTagName) { return false; }
	try { var obj = document.getElementsByTagName("a"); }
	catch(e) { return false; }
	
	for (var i=0; i < obj.length; i++) {
		if (obj[i].getAttribute("rel") == "advertlink") {
			obj[i].onclick = function() { window.open(this.href); return false; }
			var el = (obj[i]).getElementsByTagName('img')[0];
			el.onmouseover = function() { var url = this.src.substring(0,this.src.lastIndexOf("_")); this.src = url+'_on.jpg'; }
			el.onmouseout  = function() { var url = this.src.substring(0,this.src.lastIndexOf("_")); this.src = url+'_off.jpg'; }
		}
	}
}

function externalLinks() {
	if (!document.getElementsByTagName) { return false; }
	try { var obj = document.getElementsByTagName("a"); }
	catch(e) { return false; }
	
	for (var i=0; i < obj.length; i++) {
		//if (obj[i].getAttribute("rel") == "external" || obj[i].getAttribute("rel") == "nofollow") {
		if ( (obj[i].hostname !== location.hostname) && (!obj[i].getAttribute("href").match('javascript')) ) {
			obj[i].onclick = function() {
				window.open(this.href);
				return false;
			}
		}
	}
}

function getAccessRights() {
	var sid = jQuery('#sid').val();
	$j.ajax({
		type: "GET",
		url: "edit_request_db.php",
		data: {sid: sid, db: 'access_rights'},
		success: function(msg) {
			if (msg) {
				var arr = JSON.parse(msg);
				for (var x in arr) {
					for (var j in arr[x]) {
						var sid = '#x'+x+'-'+j;
						var chk = (arr[x][j]==1) ? true : false;
						jQuery(sid).attr('checked', chk);
					}
				}
			} else {
				jQuery(".chkbox").attr('checked', false);
			}
		}
	});
}

function get_nextsibling(n) {
	x = n.nextSibling;
	while (x.nodeType != 1) { x = x.nextSibling; }
	return x;
}

document.getElementsByReg=function(tag,attr,reg) {
var tabReg=new Array();
var tabElts=document.body.getElementsByTagName(tag);
var TEL=tabElts.length;
 
if(!(reg instanceof RegExp)){
       if(reg.indexOf("*")>-1) {
		  		reg=reg.replace(/\*/g,'.+');
 		  		reg=new RegExp(reg);
		}
 		else { return tabReg; }	
 		}		
i=0;
while(tabElts[i]){
		if(tabElts[i][attr]){
	         if(reg.test(tabElts[i][attr])){
	         tabReg.push(tabElts[i]);}
	         }
	         reg.test("");
	i++;         
	}
return tabReg;
}

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function selectOptionByValue(selObj, val){ 
    var A= selObj.options, L= A.length; 
    while(L){ 
        if (A[--L].value== val){ 
            selObj.selectedIndex= L; 
            L= 0; 
        } 
    } 
}
 
// loaders //

addLoadEvent(initDivOver);
addLoadEvent(initLIOver);
addLoadEvent(initClick);
addLoadEvent(initPop);
addLoadEvent(makeTitleLinks);
addLoadEvent(makeTooltips);
addLoadEvent(advertLinks);
addLoadEvent(externalLinks);
addLoadEvent(makeAnimCollapse);

//document.observe('prototip:shown', function() {
//  	$j('.prototip').find('a').filter(function() {
//		return this.hostname !== location.hostname;
//	}).attr('target','_blank');
//});
