/**
 * functions.js
 * @author G3 Systems, Inc.
 * @copyright Copyright (c) The One Planner, LLC
 * @package planner
 */

function showDialog(id) {
	
	if(dlg = document.getElementById(id)) {
		
		if(ovrlay = document.getElementById('overlay')) {
			
			ovrlay.style.display = 'block';
		}
		
		dlg.style.display = 'block';
	}
}

function closeDialogs() {
	
	if(elems = getElementsByClassName('dialog')) {
		
		for(var i=0; i<elems.length; i++) {
			
			elems[i].style.display = 'none';
		}
	}
	
	if(elems = getElementsByClassName('modal')) {
		
		for(var i=0; i<elems.length; i++) {
			
			elems[i].style.display = 'none';
		}
	}
	
	if(ovrlay = document.getElementById('overlay')) {
		
		ovrlay.style.display = 'none';
	}
}

function doLastClick() {
	
	if(lastClicked) {
		
		var elem = lastClicked;
		
		lastClickConfirmed = true;
		lastClicked = null;
		
		switch(elem.nodeName.toLowerCase()) {
			
			case 'a':
			if(elem.onclick()) window.location = elem.href;
			break;
			
			default:
			if(elem.click) {
				elem.click();
			}else {
				elem.onclick();
			}
			break;
		}
	}
}

function doConfirm(id) {
	
	if(lastClickConfirmed) {
		
		lastClickConfirmed = false;
		return true;
	}
	
	showDialog(id);
	
	return false;
}

function selectAll(elem) {
	var checkboxes = document.getElementsByName('selected[]');
	if(elem.checked) {
		for(var i=0; i<checkboxes.length; i++) {
			checkboxes[i].checked = true;
		}
	
	}else {
		for(var i=0; i<checkboxes.length; i++) {
			checkboxes[i].checked = false;
		}
	}
}

function showHide(id, closeLast) {
	if(closeLast && lastShown) {
		var last = document.getElementById(lastShown);
		if(last) {
			last.style.display = 'none';
		}
	}
	var elem = document.getElementById(id);
	if(elem) {
		if(lastClicked) {
			if(lastClicked.checked) {
				elem.style.display = 'block';
				lastShown = id;
				window.location.hash = id;
			}else {
				elem.style.display = 'none';
			}
			lastClicked = null;
		}else {
			if(elem.style.display == 'block') {
				elem.style.display = 'none';
			}else {
				elem.style.display = 'block';
				lastShown = id;
				window.location.hash = id;
			}
		}
	}
}

function showExport(id, start, end, name, details, location) {
	
	jQuery(id).icalendar({
		icons: SCRIPT_PATH + '../images/icalendar.png',
		echoUrl: SCRIPT_PATH + 'export.php',
		copyFlash: '',
		compact: true,
		start: new Date(start * 1000),
		end: new Date(end * 1000),
		title: name,
		description: details,
		location: location
	});
}

function showLearn(url, anchor) {
	
	var old_anchor = '';
	
	if(!anchor) {
		anchor = url.toString().split('#');
		anchor = (anchor.length > 1) ? anchor[1] : 'learn1';
	}else {
		old_anchor = url.toString().split('#');
		old_anchor = (old_anchor.length > 1) ? old_anchor[1] : 'learn1';
	}
	
	showHide('box_' + anchor, true);
	
	if(mask = document.getElementById('mask_' + anchor)) {
		
		mask.src = mask.src.replace('_fade', '_clear');
		mask.setAttribute('class', 'selected');
	}
	
	if(mask = document.getElementById('mask_' + old_anchor)) {
		
		mask.src = mask.src.replace('_clear', '_fade');
		mask.setAttribute('class', '');
	}
}

function countDown(id, start, text, url) {
	if(elem = document.getElementById(id)) countElem = elem;
	else countElem = null;
	countStart = start;
	countText = text;
	countURL = url;
	updateCountDown();
}

function updateCountDown() {
	if(countStart > 0) {
		if(countElem) countElem.innerHTML = countStart;
		countStart--;
		setTimeout('updateCountDown()',1000);
	}else {
		if(countElem) countElem.innerHTML = countText;
		if(countURL) window.location = countURL;
	}
}

function toInt(x, negative) {
	
	if(x > 0 || (negative && x < 0)) return Math.floor(x);
	else return 0;
}

function submitForm(formID, dialogID, fieldName, fieldValue) {
	if(!dialogID || doConfirm(dialogID)) {
		if(formElem = document.getElementById(formID)) {
			if(fieldName) {
				field = document.createElement('input')
				field.setAttribute('type', 'hidden');
				field.setAttribute('name', fieldName);
				if(fieldValue) {
					field.setAttribute('value', fieldValue);
				}
				fieldSet = document.createElement('fieldset');
				fieldSet.appendChild(field);
				formElem.appendChild(fieldSet);
			}
			formElem.submit();
		}
	}
}

function enableDisable(id, trigger) {
	if(elem = document.getElementById(id)) {
		if(elem.disabled) elem.disabled = false;
		else elem.disabled = true;
		if(trigger && trigger.type == 'checkbox') trigger.checked = elem.disabled ? true : false;
	}
}

function toggleSplash(elem) {
	if(elem.checked) {
		var expdate = new Date();
		expdate.setTime(expdate.getTime() + (365 * 24 * 60 * 60 * 1000));
		SetCookie('no_splash','1',expdate);
	}else {
		DeleteCookie('no_splash');
	}
}

function truncateTable(id, maxRows) {
	if(tableElem = document.getElementById(id)) {
		var tableBody = tableElem.getElementsByTagName('tbody');
		tableBody = tableBody ? tableBody[0] : tableElem;
		var rows = tableBody.getElementsByTagName('tr');
		var rowClass = null;
		if(rows.length > maxRows) {
			for(var i=rows.length; i>maxRows; i--) {
				rowClass = rows[i-1].getAttribute('class');
				rowClass = rowClass ? rowClass + ' ' : '';
				rows[i-1].setAttribute('class', rowClass + 'truncated');
			}
			var tableClass = tableElem.getAttribute('class');
			tableClass = tableClass ? tableClass + ' ' : '';
			tableElem.setAttribute('class', tableClass + 'truncated');
		}
	}
}

function expandTable(id) {
	if(tableElem = document.getElementById(id)) {
		if(tableClass = tableElem.getAttribute('class')) {
			tableElem.setAttribute('class', tableClass.replace('truncated', ''));
			var tableBody = tableElem.getElementsByTagName('tbody');
			tableBody = tableBody ? tableBody[0] : tableElem;
			var rows = tableBody.getElementsByTagName('tr');
			var rowClass = null;
			for(var i=0; i<rows.length; i++) {
				if(rowClass = rows[i].getAttribute('class')) {
					rows[i].setAttribute('class', rowClass.replace('truncated', ''));
				}
			}
		}
	}
}

function hideByClass(className) {
	if(elems = getElementsByClassName(className)) {
		for(var i=1; i<elems.length; i++) {
			elems[i].style.display = 'none';
		}
	}
}
