function addListener(element, type, listener, capture)
{
	if (capture == undefined){
		capture = false;
	}
	if (element.addEventListener){
		element.addEventListener(type, listener, capture);
	}else{
		element.attachEvent('on' + type, listener);
	}
}

function removeListener(element, type, listener, capture)
{
	if (capture == undefined){
		capture = false;
	}
	if (element.removeEventListener){
		element.removeEventListener(type, listener, capture);
	}else{
		element.detachEvent('on' + type, listener);
	}
}

function getTrigger(e, target)
{
	e = (e) ? e : (window.event) ? window.event : "";
	var element;
	if (e.currentTarget){
		element = e.currentTarget;
	}else if (e.srcElement){
		element = e.srcElement;
	}else if (e.target){
		element = e.target;
	}else if (e.fromElement){
		element = e.fromElement;
	}else{
		element = (e.target) ? e.target : e.srcElement;
	}
	if (element.nodeType == 3){ // Safari bug
		element = element.parentNode;
	}
	if (target != undefined){
		while (element.nodeName.toLowerCase() != target && element.parentNode){
			element = element.parentNode;
		}
	}
	return element;
}

function isEmpty(prop)
{
	if (prop == undefined || prop == null || prop == '') return true;
	return false;
}

function isset(variable_name)
{
	try{
		if (typeof(eval(variable_name)) != 'undefined'){
			if (eval(variable_name) != null){
				return true;
			}
		}
	}catch (e){
	}

	return false;
}

function getIndex (arr, arrItem)
{
	for (var i = 0; i < arr.length; i++){
		if (arr[i] == arrItem) return i;
	}
	return -1;
}

function generateId(prefix, ln)
{
	if (prefix == undefined) prefix = 'gid';
	if (ln == undefined) ln = 10;
	var str = 'abcdefghijklmnopqrstuvwxyz';
	var newid = prefix;
	while(newid.length < (ln + 1)){
		newid += str.charAt(randomMax(str.length - 1));
	}
	return newid;
}

function randomMax(maxVal,asFloat)
{
	var val = Math.random()*maxVal;
	return asFloat?val:Math.round(val);
}

function debugObj(obj, from, to)
{
	if (from == undefined) from = 0;
	if (to == undefined) to = 999999;
	var buffer = '';
	var s = 0;
	for (var xx in obj){
		s++
		if (from < s < to){
			var val = eval('obj.' + xx);
			buffer += xx + ': ' + val + "\n";
			if (typeof(val) == 'object'){
				for (var yy in val){
					buffer += '  - ' + yy + ': ' + eval('val.' + yy) + "\n";
				}
			}
		}
	}
	return buffer;
}

function send_mail(email, subject)
{
	var str = email;
	str = str.replace("[*et*]", "@");
	str = str.replace("[*dt*]", ".");
	str = str.replace("[*dt*]", ".");
	
	if(subject != undefined) {
		var sbj = '?Subject='+subject;
	} else {
		var sbj = '';
	}

	window.location='mailto: ' + str + sbj;
}

function lTrim(str)
{
	var whitespace = new String(" \t\n\r");
	var s = new String(str);

	if (whitespace.indexOf(s.charAt(0)) != -1){
		var j=0, i = s.length;
		while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
			j++;
		s = s.substring(j, i);
	}

	return s;
}

function rTrim(str)
{
	var whitespace = new String(" \t\n\r");
	var s = new String(str);

	if (whitespace.indexOf(s.charAt(s.length-1)) != -1){
		var i = s.length - 1;
		while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
			i--;
		s = s.substring(0, i+1);
	}

  return s;
}

function trim(str)
{
	return rTrim(lTrim(str));
}

function strpad(val, len, chr, side)
{
	if (isEmpty(chr)) chr = ' ';
	if (isEmpty(side)) side = 'right';
	while (val.toString().length < len){
		if (side.toLowerCase() == 'left'){
			val = chr.toString() + val.toString();
		}else{
			val += chr.toString();
		}
	}
	return val;
}

function hasClass(ele,cls)
{
	return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}

function addClass(ele,cls)
{
	if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}

function removeClass(ele,cls)
{
	if (hasClass(ele,cls)) {
		var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
		ele.className=ele.className.replace(reg,' ');
	}
}

function loadCSS(filename, media)
{
	if (media == undefined) media = 'all';
	var fileref = document.createElement('link');
	fileref.setAttribute('rel', 'stylesheet');
	fileref.setAttribute('type', 'text/css');
	fileref.setAttribute('media', media);
	fileref.setAttribute('href', filename);

	if (typeof fileref != 'undefined') document.getElementsByTagName('head')[0].appendChild(fileref);
}

function unloadCSS(filename)
{
	var head = document.getElementsByTagName('head')[0];
	var links = head.getElementsByTagName('link');
	for (var i = 0; i < links.length; i++){
		if (links[i].getAttribute('href') == filename){
			head.removeChild(links[i]);
		}
	}
}

function loadJS(filename)
{
	var fileref = document.createElement('script');
	fileref.setAttribute('type','text/javascript');
	fileref.setAttribute('src', filename);

	if (typeof fileref != 'undefined') document.getElementsByTagName('head')[0].appendChild(fileref);
}

function unloadJS(filename)
{
	var head = document.getElementsByTagName('head')[0];
	var scripts = head.getElementsByTagName('script');
	for (var i = 0; i < scripts.length; i++){
		if (scripts[i].getAttribute('src') == filename){
			head.removeChild(scripts[i]);
		}
	}
}

function getStyle(oElm, strCssRule)
{
	var strValue = '';
	if (document.defaultView && document.defaultView.getComputedStyle){
		strValue = document.defaultView.getComputedStyle(oElm, '').getPropertyValue(strCssRule);
	}else if (oElm.currentStyle){
		strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
			return p1.toUpperCase();
		});
		strValue = oElm.currentStyle[strCssRule];
	}
	return strValue;
}

function setDivPosition(id, l, t)
{
	var divObj = document.getElementById(id);
	if (l == 'c'){
		if (divObj.style.width){
			divW = divObj.style.width;
		}else{
			divW = "240px";
		}
		if (document.all){
			l = parseInt(parseInt(document.body.clientWidth) / 2) - (parseInt(divW) / 2);
		}else{
			l = parseInt(parseInt(window.innerWidth) / 2) - (parseInt(divW) / 2);
		}
	}
	if (t == 'c'){
		var divH;
		if (divObj.style.height){
			divH = divObj.style.height;
		}else{
			divH = "100px";
		}
		if (document.all){
			t = parseInt(parseInt(document.body.clientHeight) / 2) - (parseInt(divH) / 2);
		}else{
			t = parseInt(parseInt(window.innerHeight) / 2) - (parseInt(divH) / 2);
		}
	}
	if (l == 'mouse'){
		if (window.event){
			l = window.event.x;
			t = window.event.y;
		}else{
			l = t.pageX;
			t = t.pageY;
		}
	}
	document.getElementById(id).style.left = l + 'px';
	document.getElementById(id).style.top = t + 'px';
}

function toggleVisibility(id)
{
	var obj = document.getElementById(id);
	if (!obj.style.display){
		obj.style.display = '';
	}
	if (obj.style.display == 'none'){
		obj.style.display = '';
	}else{
		obj.style.display = 'none';
	}
}

function makeVisible(obj)
{
	var caller = obj.previousSibling;
	if (!obj.style){
		obj = obj.nextSibling;
	}
	obj.style.display = '';
}

function makeInvisible(obj)
{
	var caller = obj.previousSibling;
	if (!obj.style){
		obj = obj.nextSibling;
	}
	obj.style.display = 'none';
}

function hideVisible(id)
{
	var obj = document.getElementById(id);
	obj.style.display = 'none';
}

function showInvisible(id)
{
	var obj = document.getElementById(id);
	obj.style.display = '';
}

function getTopScroll()
{
	var iebody = (document.compatMode && document.compatMode != 'BackCompat') ? document.documentElement : document.body;
	return window.pageYOffset ? window.pageYOffset : iebody.scrollTop;
}

//---FORM HIGHLIGHT->>

function attachFormHL()
{
	var fields = document.getElementsByTagName('input');
	for (var i = 0; i < fields.length; i++){
		if (fields[i].type != 'radio' && fields[i].type != 'checkbox' && fields[i].type != 'button' && fields[i].type != 'submit' && fields[i].type != 'file' && fields[i].className != 'textInput' && fields[i].className != 'calc' && fields[i].className != 'calc_error'){
			if (!fields[i].readOnly && !fields[i].disabled){
				addListener(fields[i], 'focus', FC, true);
				addListener(fields[i], 'blur', BL, true);
			}
		}else{
			if ((fields[i].type == 'button' || fields[i].type == 'submit') && fields[i].className == 'butt'){
				addListener(fields[i], 'mouseover', overButt, true);
				addListener(fields[i], 'mouseout', outButt, true);
			}
			if ((fields[i].type == 'button' || fields[i].type == 'submit') && fields[i].className == 'cancel'){
				addListener(fields[i], 'mouseover', overCancel, true);
				addListener(fields[i], 'mouseout', outCancel, true);
			}
		}
	}
	fields = document.getElementsByTagName('select');
	for (var i = 0; i < fields.length; i++){
		if (document.all){
			addListener(fields[i], 'focusin', FC, true);
		}else{
			addListener(fields[i], 'focus', FC, true);
		}
		addListener(fields[i], 'blur', BL, true);
	}
	fields = document.getElementsByTagName('textarea');
	for (var i = 0; i < fields.length; i++){
		if (!fields[i].readOnly && !fields[i].disabled){
			addListener(fields[i], 'focus', FC, true);
			addListener(fields[i], 'blur', BL, true);
		}
	}
}

function FC(e)
{
	var field = getTrigger(e);
	addClass(field,'focus');
}

function BL(e)
{
	var field = getTrigger(e);
	removeClass(field,'focus');
}

function overButt(e)
{
	var btn = getTrigger(e);
	btn.className = 'buttHover';
}

function outButt(e)
{
	var btn = getTrigger(e);
	btn.className = 'butt';
}

function overCancel(e)
{
	var btn = getTrigger(e);
	btn.className = 'cancelHover';
}

function outCancel(e)
{
	var btn = getTrigger(e);
	btn.className = 'cancel';
}

//<<-FORM HIGHLIGHT---

//---TABLE HIGHLIGHT->>

var tableHL_historyClass;
var tableHL_tableClass = 'dataList';
var tableHL_hiLiteClass = 'hilite';
var tableHL_historyHit;
var tableHL_historyHitClass;
var tableHL_hitClass = 'hit';

function tableHL(tableClass, hit){
	if (tableClass == undefined) tableClass = tableHL_tableClass;
	if (hit == undefined) hit = false;
	var trs = document.getElementsByTagName('tr');
	var s = 0;
	for (var i = 0; i < trs.length; i++){
		if (trs[i].parentNode.parentNode.className == tableClass){
			addListener(trs[i], "mouseover", hiliteRow, true);
			addListener(trs[i], "mouseout", unhiliteRow, true);
			if (hit){
				addListener(trs[i], "click", hitRow, true);
			}
			s++;
		}
	}
}

function hiliteRow(e){
	var element = getTrigger(e,'tr');
	tableHL_historyClass = element.className;
	element.className = tableHL_hiLiteClass;
}

function unhiliteRow(e){
	var element = getTrigger(e,'tr');
	element.className = tableHL_historyClass;
}

function hitRow(e){
	var element = getTrigger(e,'tr');
	if (tableHL_historyHit != undefined){
		addListener(tableHL_historyHit, "mouseover", hiliteRow, true);
		addListener(tableHL_historyHit, "mouseout", unhiliteRow, true);
		addListener(tableHL_historyHit, "click", hitRow, true);
		tableHL_historyHit.className = tableHL_historyHitClass;
	}
	tableHL_historyHit = element;
	tableHL_historyHitClass = tableHL_historyClass;
	removeListener(element, 'mouseover', hiliteRow, true);
	removeListener(element, 'mouseout', unhiliteRow, true);
	removeListener(element, 'click', hitRow, true);
	element.className = tableHL_hitClass;
}

//<<-TABLE HIGHLIGHT---

function extractNumbers(str)
{
	var tt = str.match(/\d+/g);
	tt = tt.toString().replace(/\,/g, "");
	return parseInt(tt);
}

function CheckUrl(target, e)
{
    var asciiCode = (e.which || e.charCode || e.keyCode);
    if ((target.value == "http://" || target.value == "http:/") && asciiCode == 8){
		target.value = "http://";
        if (!document.all){
            e.preventDefault();
        }
    }else if (target.value.substring(0,7) != "http://"){
        target.value = "http://" + target.value;
        if (!document.all){
            e.preventDefault();
        }
    }
}

function selectSideMenu(menuId, selected)
{
	if (selected != '' && selected != undefined){
		var links = document.getElementById(menuId).childNodes;
		for (var i = 0; i < links.length; i ++){
			var action = '';
			if (links[i].href){
				var temp = links[i].href.split('/');
				temp = temp.reverse();
				action = temp[1];
				temp = temp[0].split('.');
				if (temp.length == 2){
					action = temp[0];
				}
			}
			if (action == selected){
				links[i].className = 'selected';
				break;
			}
		}
	}
}

//---TABS MENU->>

function setTabs(tabsId, initSelected, displayIdPrefix)
{
	if (initSelected == undefined){
		initSelected = 1;
	}
	if (displayIdPrefix == undefined){
		displayIdPrefix = 'tabDisplay';
	}
	var tabs = document.getElementById(tabsId).childNodes;
	var s = 0;
	for (var i = 0; i < tabs.length; i++){
		if (tabs[i].nodeName.toLowerCase() == 'div'){
			s++;
			tabs[i].id = tabsId + '_' + displayIdPrefix + '_' + s;
			tabs[i].onclick = selectTab;
			tabs[i].onmouseover = function()
			{
				this.className = 'hover';
			};
			tabs[i].onmouseout = function()
			{
				this.className = '';
			};
			if (s == initSelected){
				tabs[i].onmouseover = null;
				tabs[i].onmouseout = null;
				tabs[i].className = 'selected';
			} else {
				tabs[i].className = '';
			}
			
			if (document.getElementById(displayIdPrefix + '_' + s) && s != initSelected){
				document.getElementById(displayIdPrefix + '_' + s).style.display = 'none';
			} else {
				document.getElementById(displayIdPrefix + '_' + s).style.display = '';
			}
		}
	}
}

function selectTab(tab_id)
{
	var elem;
	if (typeof(tab_id) != 'string') {
		elem = this;
		tab_id = this.id;
	} else {
		elem = $(tab_id);
	}
	
	var idArr = tab_id.toString().split('_');
	var parentId = idArr[0];
	var displayIdPrefix = idArr[1];
	var showTab = idArr[2];
	var tabs = document.getElementById(parentId).childNodes;
	var s = 0;
	for (var i = 0; i < tabs.length; i++){
		if (tabs[i].nodeName.toLowerCase() == 'div'){
			s++;
			tabs[i].className = '';
			tabs[i].onmouseover = function()
			{
				this.className = 'hover';
			};
			tabs[i].onmouseout = function()
			{
				this.className = '';
			};
			if (document.getElementById(displayIdPrefix + '_' + s)){
				document.getElementById(displayIdPrefix + '_' + s).style.display = 'none';
			}
		}
	}
	document.getElementById(displayIdPrefix + '_' + showTab).style.display = 'block';
	faderIn(displayIdPrefix + '_' + showTab);
	elem.onmouseover = null;
	elem.onmouseout = null;
	elem.className = 'selected';
}

function sideTabs(caller, trg)
{
	if (trg == undefined) trg = s$('sideTabsContent');
	var lnks = s$$('a', caller.parentNode);
	for (var i = 0; i < lnks.length; i++){
		lnks[i].className = '';
	}
	caller.className = 'selected';
	trg.innerHTML = s$(caller.id + 'Content').innerHTML;
}

//<<-TABS MENU---

//---SLIDER->>

var sliderLooped = false;
var showSlideCaptionTimer;
var SliderThumbHeight = 33;

function showSlideCaption(e)
{
	var holder = getTrigger(e,'div');
	var caption = $$$('.imgCaption', holder.parentNode)[0];
	if (caption.id == '') caption.id = generateId();
	showSlideCaptionTimer = setTimeout("faderIn('" + caption.id + "')", 400);
}

function hideSlideCaption(e)
{
	var holder = getTrigger(e,'div');
	var caption = $$$('.imgCaption', holder.parentNode)[0];
	if (caption.id == '') caption.id = generateId();
	clearTimeout(showSlideCaptionTimer);
	clearTimeout(faderInTimer);
	setOpacity(0, caption);
}

function setSlider(sliderId, thumbNo)
{
	if (thumbNo == undefined) thumbNo = 2;
	var items = $$$('.item', $(sliderId));
	var thumbLimit = thumbNo < items.length ? thumbNo : items.length;
	var arrows = s$$('a',$$$('.nav', $(sliderId))[0]);
	if (items.length == thumbLimit && !sliderLooped){
		arrows[0].style.display = 'none';
		arrows[1].style.display = 'none';
	}else if (!sliderLooped){
		arrows[0].className = 'disabled';
	}
	for (var i = 0; i < items.length; i++){
		items[i].style.display = 'none';
		var imgHolder = $$$('.imgHolder', items[i])[0];
		addListener(imgHolder, 'mouseover', showSlideCaption, true);
		addListener(imgHolder, 'mouseout', hideSlideCaption, true);
	}
	items[0].style.display = 'block';
	var imgs = s$$('img', $(sliderId));
	for (var i = 0; i < imgs.length; i++){
		imgs[i].alt = '';
	}
	if (items.length < 2){
		$$$('.nav', $(sliderId))[0].style.display = 'none';
		$(sliderId).style.height = 'auto';
		return false;
	}
	for (var i = 0; i < thumbLimit; i++){
		var thumb = document.createElement('div');
		thumb.innerHTML = '<img src="' + s$$('img', items[i])[0].src + '" height="' + SliderThumbHeight + '" border="0" alt="" />';
		if (i == 0){
			thumb.className = 'thumbA';
		}else{
			thumb.className = 'thumb';
		}
		addListener(thumb, 'click', setActiveImg, true);
		$$$('.thumbs', $(sliderId))[0].appendChild(thumb);
	}
}

function setActiveImg(e, obj)
{
	var thumb;
	if (obj == undefined){
		thumb = getTrigger(e,'div');
	}else{
		thumb = obj;
	}
	var sld = thumb.parentNode.parentNode.parentNode;
	var thumbs = s$$('div',thumb.parentNode);
	var arrows = s$$('a',$$$('.nav', sld)[0]);
	arrows[0].className = '';
	arrows[1].className = '';
	for (var i = 0; i < thumbs.length; i++){
		thumbs[i].className = 'thumb';
	}
	var activeImg = s$$('img',thumb)[0];
	var items = $$$('.item', sld);

	for (var i = 0; i < items.length; i++){
		items[i].style.display = 'none';
		var img = s$$('img',items[i])[0];
		if (img.src == activeImg.src){
			items[i].style.display = 'block';
			thumb.className = 'thumbA';
			if (i == 0 && !sliderLooped){
				arrows[0].className = 'disabled';
			}
			if (i == (items.length - 1) && !sliderLooped){
				arrows[1].className = 'disabled';
			}
		}
	}
}

function getCurrentSliderItem(items)
{
	for (var i = 0; i < items.length; i++){
		if (items[i].style.display != 'none'){
			return items[i];
		}
	}
}

function nextSlider(nav)
{
	var sld = nav.parentNode.parentNode;
	var activeThumb = $$$('.thumbA', sld)[0];
	var thumbs = s$$('div',activeThumb.parentNode);
	var items = $$$('.item', sld);
	var nextItem = items[0];
	var currentItem = getCurrentSliderItem(items);
	var pos = getIndex(items, currentItem);
	if (pos < (items.length - 1)){
		nextItem = items[pos + 1];
	}else{
		if (!sliderLooped){
			return false;
		}
	}
	currentItem.style.display = 'none';
	nextItem.style.display = 'block';

	var thumbPos = getIndex(thumbs, activeThumb);
	if (thumbPos < (thumbs.length - 1)){
		setActiveImg(false, thumbs[thumbPos + 1]);
	}else{
		var newThumb = document.createElement('div');
		newThumb.innerHTML = '<img src="' + s$$('img', nextItem)[0].src + '" height="' + SliderThumbHeight + '" border="0" alt="" />';
		addListener(newThumb, 'click', setActiveImg, true);
		$$$('.thumbs', sld)[0].appendChild(newThumb);
		$$$('.thumbs', sld)[0].removeChild(thumbs[0]);
		setActiveImg(false, thumbs[thumbs.length - 1]);
	}
}

function prevSlider(nav)
{
	var sld = nav.parentNode.parentNode;
	var activeThumb = $$$('.thumbA', sld)[0];
	var thumbs = s$$('div',activeThumb.parentNode);
	var items = $$$('.item', sld);
	var nextItem = items[(items.length - 1)];
	var currentItem = getCurrentSliderItem(items);
	var pos = getIndex(items, currentItem);
	if (pos > 0){
		nextItem = items[pos - 1];
	}else{
		if (!sliderLooped){
			return false;
		}
	}
	currentItem.style.display = 'none';
	nextItem.style.display = 'block';

	var thumbPos = getIndex(thumbs, activeThumb);
	if (thumbPos > 0){
		setActiveImg(false, thumbs[thumbPos - 1]);
	}else{
		var newThumb = document.createElement('div');
		newThumb.innerHTML = '<img src="' + s$$('img', nextItem)[0].src + '" height="' + SliderThumbHeight + '" border="0" alt="" />';
		addListener(newThumb, 'click', setActiveImg, true);
		$$$('.thumbs', sld)[0].insertBefore(newThumb,thumbs[0])
		$$$('.thumbs', sld)[0].removeChild(thumbs[thumbs.length - 1]);
		setActiveImg(false, thumbs[0]);
	}
}

//<<-SLIDER---

//---IMAGE SLIDER->>

var slideTimer;
var fadeoutTimer;
var fadeinTimer;
var switchTime = 3000;
var fadeoutTime = 20;
var fadeinTime = 40;
var faderSmoothness = 5;

function clearTimers()
{
	if (fadeoutTimer != undefined) clearTimeout(fadeoutTimer);
	if (fadeinTimer != undefined) clearTimeout(fadeinTimer);
	if (slideTimer != undefined) clearTimeout(slideTimer);
}

function initSlider(sliderId)
{
	if (sliderId == undefined) sliderId = 'slider';
	if (s$(sliderId)){
		var firstItem = s$$('div',s$(sliderId))[0];
		if (firstItem.id == '') firstItem.id = generateId();
		clearTimers();
		slide(firstItem.id);
	}
}

function slide(itemId)
{
	if (!s$(itemId)){
		clearTimers();
		return false;
	}
	var item = s$(itemId);
	var items = s$$('div',item.parentNode);
	for (var i = 0; i < items.length; i++){
		if (items[i].id == '') items[i].id = generateId();
		if (items[i].style.opacity > 0){
			fadeout(items[i].id);
		}
	}
	fadein(item.id);
	var itemIndex = getIndex(items, item);
	var nextItem;
	if (itemIndex < (items.length - 1)){
		nextItem = items[itemIndex+1];
	}else{
		nextItem = items[0];
	}
	slideTimer = setTimeout('slide("' + nextItem.id + '")', switchTime);
}

function fadeout(objId, op)
{
	if (!s$(objId)){
		clearTimers();
		return false;
	}
	var obj = s$(objId);
	if (op == undefined) op = 100;
	if (op < 0){
		clearTimeout(fadeoutTimer);
		return false;
	}
	op -= faderSmoothness;
	obj.style.opacity = op / 100;
	obj.style.filter = 'alpha(opacity=' + op + ')';
	fadeoutTimer = setTimeout('fadeout("' + obj.id + '", ' + op + ')', fadeoutTime);
}

function fadein(objId, op)
{
	if (!s$(objId)){
		clearTimers();
		return false;
	}
	var obj = s$(objId);
	if (op == undefined) op = 0;
	if (op > 100){
		clearTimeout(fadeinTimer);
		return false;
	}
	op += faderSmoothness;
	obj.style.opacity = op / 100;
	obj.style.filter = 'alpha(opacity=' + op + ')';
	fadeinTimer = setTimeout('fadein("' + obj.id + '", ' + op + ')', fadeinTime);
}

//<<-IMAGE SLIDER---

//---FADER->>

var faderOutTime = 50;
var faderInTime = 50;
var faderSmoothness = 5;

var faderOutTimer;
var faderInTimer;

function setOpacity(opacity, id)
{
	var object;
	if (typeof(id) == 'string'){
		object = document.getElementById(id).style;
	}else{
		object = id.style;
	}
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 100);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + opacity + ")";
}

function getOpacity(id)
{
	var object;
	if (typeof(id) == 'string'){
		object = document.getElementById(id).style;
	}else{
		object = id.style;
	}
	if (object.opacity != undefined) return object.opacity * 100;
	if (object.MozOpacity != undefined) return object.MozOpacity;
	if (object.KhtmlOpacity != undefined) return object.KhtmlOpacity;
	if (object.filter != undefined) return object.filter.opacity;//= "alpha(opacity=" + opacity + ")";
}

function faderOut(id, op, end)
{
	if (op == undefined) op = 100;
	if (op > 100) op = 100;
	if (end == undefined) end = 0;
	if (end > 100) end = 0;
	op -= faderSmoothness;
	setOpacity(op, id);
	if (op > end){
		faderOutTimer = setTimeout("faderOut('" + id + "'," + op + "," + end + ")", faderOutTime);
	}else{
		return false;
	}
}

function faderIn(id, op)
{
	if (op == undefined){
		op = 0;
	}
	op += faderSmoothness;
	setOpacity(op, id);
	if (op < 100){
		faderInTimer = setTimeout("faderIn('" + id + "'," + op + ")", faderInTime);
	}else{
		return false;
	}
}

function selfFadeIn(e)
{
	var elm = getTrigger(e,'div');
	if (elm.id == '') elm.id = generateId();
	setOpacity(100, elm.id);
}

function selfFadeOut(e)
{
	var elm = getTrigger(e,'div');
	if (elm.id == '') elm.id = generateId();
	setOpacity(50, elm.id);
}

//<<-FADER---

//---CMS MODAL->>

var liveAjaxRequest;

if (isset('Ajax')){
	Ajax.Request.prototype.abort = function(){
		this.transport.onreadystatechange = Prototype.emptyFunction;
		this.transport.abort();
		Ajax.activeRequestCount--;
		if (Ajax.activeRequestCount < 0){
			Ajax.activeRequestCount = 0;
		}
	};
}

function cmsModalAjax(url, w, h, title)
{
	cmsModalCancel();
	if (w == undefined) w = 640;
	if (h == undefined) h = 480;
	if (title == undefined) title = '&nbsp;';
	var box = $('cmsModalBox');
	var contentBox = $('cmsModalContent');
	var blocker = $('cmsModalBlocker');
	$('cmsModalTitle').innerHTML = title;
	box.style.display = 'block';
	blocker.style.display = 'block';
	box.style.width = w + 'px';
	contentBox.style.maxHeight = (h - 23) + 'px';
	centerModal(box);
	cmsModalResizeBlocker();
	if (navigator.appVersion.indexOf('MSIE 6.0') != -1){ //IE6 FIX
		box.style.position = 'absolute';
		var topOff = document.body.parentNode.scrollTop;
		var yPos = box.offsetTop;
		var templ = box.offsetParent;
		while (templ != null) {
  			yPos += templ.offsetTop;
	  		templ = templ.offsetParent;
  		}
		box.style.top = (topOff + yPos) + 'px';
		var selects = $$('select');
		for (var i = 0; i < selects.length; i++){
			selects[i].style.display = 'none';
		}
	}

	liveAjaxRequest = new Ajax.Updater('cmsModalContent', url, {
		method: 'get',
		asynchronous: true,
		evalScripts: true,
		onSuccess: function(request, json){
			Element.hide('cmsModalLoader');
			liveAjaxRequest = undefined;
		},
		onComplete: function(){
			centerModal($('cmsModalBox'));
			Drag.init($('cmsModalTitle'), $('cmsModalBox'));
			attachFormHL();
		}
	});
}

function centerModal(elm)
{
	if (elm == undefined) elm = $('modalBox');
	if (elm.style == undefined) elm.style = '';
	var w = elm.offsetWidth;
	var h = elm.offsetHeight;
	if (!window.innerHeight){
		elm.style.left = (Math.round(document.body.clientWidth / 2) - Math.round(w / 2)) + 'px';
		elm.style.top = (Math.round(document.body.clientHeight / 2) - Math.round(h / 2)) + 'px';
	}else{
		elm.style.left = (Math.round(window.innerWidth / 2) - Math.round(w / 2)) + 'px';
		elm.style.top = (Math.round(window.innerHeight / 2) - Math.round(h / 2)) + 'px';
	}
}

function cmsCenterModal(elm)
{
	centerModal($('cmsModalBox'));
}

function cmsModalCancel()
{
	if (!isEmpty(liveAjaxRequest)){
		liveAjaxRequest.abort();
	}
	var box = $('cmsModalBox');
	var blocker = $('cmsModalBlocker');
	$('cmsModalContent').innerHTML = '&nbsp;';
	$('cmsModalLoader').style.display = '';
	centerModal(box);
	box.style.display = 'none';
	blocker.style.display = 'none';
	if (navigator.appVersion.indexOf('MSIE 6.0') != -1){ //IE6 FIX
		var selects = document.getElementsByTagName('select');
		for (var i = 0; i < selects.length; i++){
			selects[i].style.display = '';
		}
	}
}

function cmsModalResizeBlocker()
{
	if ($('cmsModalBlocker')){
		var blocker = $('cmsModalBlocker');
		if	(blocker.style.display == 'block'){
			var innerH;
			var theHeight;
			var b = document.body;
			if (!window.innerWidth){
				//IE
				innerH = b.clientHeight;
				theHeight = b.scrollHeight;
				if (isEmpty(blocker.style.filter)) blocker.style.filter = 'alpha(opacity=80)';
			}else{
				//w3c
				if (document.documentElement){
					b = document.documentElement;
				}
				theHeight = b.scrollHeight;
				innerH = window.innerHeight;
			}
			if (theHeight < innerH){
				theHeight = innerH;
			}
			blocker.style.height = theHeight + 'px';
		}
	}
}

//<<-CMS MODAL---

//---MODAL->>

function modal(cleanBuffer, title , w, h)
{
	modalCancel();
	if (w == undefined) w = 640;
	if (h == undefined) h = 480;
	if (title == undefined) title = '&nbsp;';
	var box = $('modalBox');
	var contentBox = $('modalContent');
	var blocker = $('modalBlocker');
	$('modalTitle').innerHTML = title;
	contentBox.innerHTML = '';
	box.style.display = 'block';
	blocker.style.display = 'block';
	box.style.width = w + 'px';
	contentBox.style.maxHeight = (h - 23) + 'px';
	contentBox.innerHTML = cleanBuffer;
	Element.hide('modalLoader');
	modalResizeBlocker();
	if (navigator.appVersion.indexOf('MSIE 6.0') != -1){ //IE6 FIX
		box.style.position = 'absolute';
		var topOff = document.body.parentNode.scrollTop;
		var yPos = box.offsetTop;
		var templ = box.offsetParent;
		while (templ != null) {
  			yPos += templ.offsetTop;
	  		templ = templ.offsetParent;
  		}
		box.style.top = (topOff + yPos) + 'px';
		var selects = $$('select');
		for (var i = 0; i < selects.length; i++){
			selects[i].style.display = 'none';
		}
	}
	centerModal(box);
	Drag.init($('modalTitle'), box);
	attachFormHL();
}

function modalImage(imgSrc, title, desc, w, h)
{
	modalCancel();
	if (w == undefined) w = 150;
	if (h == undefined) h = 150;
	if (title == undefined) title = '&nbsp;';
	var box = $('modalBox');
	var contentBox = $('modalContent');
	var blocker = $('modalBlocker');
	$('modalTitle').innerHTML = title;
	contentBox.innerHTML = '';
	box.style.display = 'block';
	blocker.style.display = 'block';
	box.style.width = w + 'px';
	contentBox.style.maxHeight = (h - 23) + 'px';
	Element.show('modalLoader');
	centerModal(box);
	modalResizeBlocker();
	if (navigator.appVersion.indexOf('MSIE 6.0') != -1){ //IE6 FIX
		box.style.position = 'absolute';
		var topOff = document.body.parentNode.scrollTop;
		var yPos = box.offsetTop;
		var templ = box.offsetParent;
		while (templ != null) {
  			yPos += templ.offsetTop;
	  		templ = templ.offsetParent;
  		}
		box.style.top = (topOff + yPos) + 'px';
		var selects = $$('select');
		for (var i = 0; i < selects.length; i++){
			selects[i].style.display = 'none';
		}
	}

	var newImg = null;
	newImg = new Image();
	newImg.onerror = function(){
		contentBox.innerHTML = 'ERROR! Failed to load "' + imageSrc + '"';
		return false;
	}
	newImg.src = null;
	newImg.src = imgSrc;
	if (!newImg.complete){
		setTimeout('modalImage("' + imgSrc + '", "' + title + '", "' + desc + '", ' + w + ', ' + h + ')',100);
		return false;
	}

	box.style.width = (newImg.width + 39) + 'px';
	contentBox.innerHTML = '<img src="' + imgSrc + '" border="0" alt="' + title + '" title="' + title + '" />';
	if (desc != undefined && desc != ''){
		contentBox.innerHTML += '<p style="margin-bottom: 0; padding-bottom: 0;">' + desc + '</p>';
		contentBox.style.maxHeight = (newImg.height + 30) + 'px';
	}else{
		contentBox.style.maxHeight = newImg.height + 'px';
	}
	Element.hide('modalLoader');
	centerModal(box);
	Drag.init($('modalTitle'), box);
	attachFormHL();
}

function modalAjax(url, w, h, title)
{
	modalCancel();
	if (w == undefined) w = 640;
	if (h == undefined) h = 480;
	if (title == undefined) title = '&nbsp;';
	var box = $('modalBox');
	var contentBox = $('modalContent');
	var blocker = $('modalBlocker');
	$('modalTitle').innerHTML = title;
	box.style.display = 'block';
	blocker.style.display = 'block';
	box.style.width = w + 'px';
	contentBox.style.maxHeight = (h - 23) + 'px';
	centerModal(box);
	modalResizeBlocker();
	if (navigator.appVersion.indexOf('MSIE 6.0') != -1){ //IE6 FIX
		box.style.position = 'absolute';
		var topOff = document.body.parentNode.scrollTop;
		var yPos = box.offsetTop;
		var templ = box.offsetParent;
		while (templ != null) {
  			yPos += templ.offsetTop;
	  		templ = templ.offsetParent;
  		}
		box.style.top = (topOff + yPos) + 'px';
		var selects = $$('select');
		for (var i = 0; i < selects.length; i++){
			selects[i].style.display = 'none';
		}
	}

	liveAjaxRequest = new Ajax.Updater('modalContent', url, {
		method: 'get',
		asynchronous: true,
		evalScripts: true,
		onSuccess: function(request, json){
			Element.hide('modalLoader');
			liveAjaxRequest = undefined;
		},
		onComplete: function(){
			centerModal($('modalBox'));
			Drag.init($('modalTitle'), $('modalBox'));
			attachFormHL();
		}
	});
}

function modalCancel()
{
	if (!isEmpty(liveAjaxRequest)){
		liveAjaxRequest.abort();
	}
	var box = $('modalBox');
	var blocker = $('modalBlocker');
	$('modalContent').innerHTML = '&nbsp;';
	$('modalLoader').style.display = '';
	centerModal(box);
	box.style.display = 'none';
	blocker.style.display = 'none';
	if (navigator.appVersion.indexOf('MSIE 6.0') != -1){ //IE6 FIX
		var selects = document.getElementsByTagName('select');
		for (var i = 0; i < selects.length; i++){
			selects[i].style.display = '';
		}
	}
}

function modalResizeBlocker()
{
	if ($('modalBlocker')){
		var blocker = $('modalBlocker');
		if	(blocker.style.display == 'block'){
			var innerH;
			var theHeight;
			var b = document.body;
			if (!window.innerWidth){
				//IE
				innerH = b.clientHeight;
				theHeight = b.scrollHeight;
				if (isEmpty(blocker.style.filter)) blocker.style.filter = 'alpha(opacity=80)';
			}else{
				//w3c
				if (document.documentElement){
					b = document.documentElement;
				}
				theHeight = b.scrollHeight;
				innerH = window.innerHeight;
			}
			if (theHeight < innerH){
				theHeight = innerH;
			}
			blocker.style.height = theHeight + 'px';
		}
	}
}

//<<-MODAL---

//---COLLAPSABLE TABLES->>

function toggleVisible(obj, colapse)
{
	if (colapse == undefined) colapse = false;
	var caller = obj.previousSibling;
	if (!obj.style){
		obj = obj.nextSibling;
	}
	if (!obj.style.display){
		obj.style.display = '';
	}
	if (colapse){
		if (obj.className){
			if (obj.style.display == 'none'){
				collapseVisible(obj.className);
			}
		}
	}
	if (obj.style.display == 'none'){
		obj.style.display = '';
		if (caller.firstChild){
			var mark = caller.firstChild;
			if (mark.tagName == undefined) mark = mark.nextSibling;
			if (mark.className == 'openerMark'){
				mark.innerHTML = '-';
				mark.style.padding = '0 0 2px 2px';
				mark.style.width = '5px';
				mark.style.height = '5px';
				mark.style.lineHeight = '5px';
			}
		}
	}else{
		obj.style.display = 'none';
		if (caller.firstChild){
			var mark = caller.firstChild;
			if (mark.tagName == undefined) mark = mark.nextSibling;
			if (mark.className == 'openerMark'){
				mark.innerHTML = '+';
				mark.style.padding = '0';
				mark.style.width = '7px';
				mark.style.height = '7px';
				mark.style.lineHeight = '7px';
			}
		}
	}
}

function collapseVisible(cls)
{
	var elms = $$$('.' + cls);
	for (var i = 0; i < elms.length; i++){
		elms[i].style.display = 'none';
		var caller = elms[i].previousSibling;
		if (!caller.style){
			caller = caller.previousSibling;
		}
		if (caller.firstChild){
			var mark = caller.firstChild;
			if (mark.tagName == undefined) mark = mark.nextSibling;
			if (mark.className == 'openerMark'){
				mark.innerHTML = '+';
				mark.style.padding = '0';
				mark.style.width = '7px';
				mark.style.height = '7px';
				mark.style.lineHeight = '7px';
			}
		}
	}
}

function ctShow(obj)
{
	if (typeof(obj) == 'string'){
		obj = document.getElementById(obj);
	}
	var divs = $$$('div.openerBar');
	for (var i = 0; i < divs.length; i++){
		var openerBody = divs[i].nextSibling;
		while (openerBody.className == undefined){
			openerBody = openerBody.nextSibling;
		}
		if (openerBody.style.display != 'none') toggleVisible(divs[i].nextSibling);
	}
	toggleVisible(obj.nextSibling);
}

//<<-COLLAPSABLE TABLES---

//---GET ELEMENT(s)->>

function s$(id, elem)
{
	if (elem == undefined){
		elem = document;
	}
	return elem.getElementById(id);
}

function s$$(tagname, elem)
{
	if (elem == undefined){
		elem = document;
	}
	return elem.getElementsByTagName(tagname);
}

function s$$$(e, elem)
{
	if (!e || !e.length || e.length == 0)
	return [];
	var store = [elem || document.body];
	var store_t = [];
	e = e.split(" ");
	for (var i = 0; i < e.length; i++) {
		var r = {
			id:  "",
			tag: "*",
			clas:[]
		};
		var c, s, t = e[i];
		while (t.length > 0){
			s = t.search(/.[#\.]/) + 1 || t.length;
			c = t.substr(0, s);

			if (c.substr(0, 1) == "#"){
				r.id = c.substr(1);
			}else if (c.substr(0, 1) == "."){
				r.clas.push(c.substr(1));
			}else{
				r.tag = c;
			}

			t = t.substr(s);
		}
		while (store.length > 0){
			var curr = [], temp = store.shift().getElementsByTagName(r.tag);
			for (var j = 0; j < temp.length; j++){
				curr.push(temp[j]);
			}
			while (curr.length > 0){
				var ok = true, ce = curr.shift();
				if (r.id && ce.id != r.id){
					ok = false;
				}
				for (j = 0; j < r.clas.length; j++){
					if ((" " + ce.className + " ").indexOf(" " + r.clas[j] + " ") == -1){
						ok = false;
						break;
					}
				}
				if (ok){
					store_t.push(ce);
				}
			}
		}
		store = store_t;
		store_t = [];
	}
	return store;
}

//<<-GET ELEMENT(s)---

//---DRAG->>

var Drag = {

	obj : null,

	init : function(o, oRoot, minX, maxX, minY, maxY, bSwapHorzRef, bSwapVertRef, fXMapper, fYMapper)
	{
		o.onmousedown	= Drag.start;

		o.hmode			= bSwapHorzRef ? false : true ;
		o.vmode			= bSwapVertRef ? false : true ;

		o.root = oRoot && oRoot != null ? oRoot : o ;

		o.minX	= typeof minX != 'undefined' ? minX : null;
		o.minY	= typeof minY != 'undefined' ? minY : null;
		o.maxX	= typeof maxX != 'undefined' ? maxX : null;
		o.maxY	= typeof maxY != 'undefined' ? maxY : null;

		o.xMapper = fXMapper ? fXMapper : null;
		o.yMapper = fYMapper ? fYMapper : null;

		o.root.onDragStart	= new Function();
		o.root.onDragEnd	= new Function();
		o.root.onDrag		= new Function();
	},

	start : function(e)
	{
		var o = Drag.obj = this;
		e = Drag.fixE(e);
		var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);
		var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right );
		o.root.onDragStart(x, y);

		o.lastMouseX	= e.clientX;
		o.lastMouseY	= e.clientY;

		if (o.hmode) {
			if (o.minX != null)	o.minMouseX	= e.clientX - x + o.minX;
			if (o.maxX != null)	o.maxMouseX	= o.minMouseX + o.maxX - o.minX;
		} else {
			if (o.minX != null) o.maxMouseX = -o.minX + e.clientX + x;
			if (o.maxX != null) o.minMouseX = -o.maxX + e.clientX + x;
		}

		if (o.vmode) {
			if (o.minY != null)	o.minMouseY	= e.clientY - y + o.minY;
			if (o.maxY != null)	o.maxMouseY	= o.minMouseY + o.maxY - o.minY;
		} else {
			if (o.minY != null) o.maxMouseY = -o.minY + e.clientY + y;
			if (o.maxY != null) o.minMouseY = -o.maxY + e.clientY + y;
		}

		document.onmousemove	= Drag.drag;
		document.onmouseup		= Drag.end;

		return false;
	},

	drag : function(e)
	{
		e = Drag.fixE(e);
		var o = Drag.obj;

		var ey	= e.clientY;
		var ex	= e.clientX;
		var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);
		var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right );
		var nx, ny;

		if (o.minX != null) ex = o.hmode ? Math.max(ex, o.minMouseX) : Math.min(ex, o.maxMouseX);
		if (o.maxX != null) ex = o.hmode ? Math.min(ex, o.maxMouseX) : Math.max(ex, o.minMouseX);
		if (o.minY != null) ey = o.vmode ? Math.max(ey, o.minMouseY) : Math.min(ey, o.maxMouseY);
		if (o.maxY != null) ey = o.vmode ? Math.min(ey, o.maxMouseY) : Math.max(ey, o.minMouseY);

		nx = x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1));
		ny = y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1));

		if (o.xMapper)		nx = o.xMapper(y)
		else if (o.yMapper)	ny = o.yMapper(x)

		Drag.obj.root.style[o.hmode ? "left" : "right"] = nx + "px";
		Drag.obj.root.style[o.vmode ? "top" : "bottom"] = ny + "px";
		Drag.obj.lastMouseX	= ex;
		Drag.obj.lastMouseY	= ey;

		Drag.obj.root.onDrag(nx, ny);
		return false;
	},

	end : function()
	{
		document.onmousemove = null;
		document.onmouseup   = null;
		Drag.obj.root.onDragEnd(	parseInt(Drag.obj.root.style[Drag.obj.hmode ? "left" : "right"]), 
									parseInt(Drag.obj.root.style[Drag.obj.vmode ? "top" : "bottom"]));
		Drag.obj = null;
	},

	fixE : function(e)
	{
		if (typeof e == 'undefined') e = window.event;
		if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;
		if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;
		return e;
	}
};

//<<-DRAG---
