/* basics */

var SUB = '';//'mvc/';
var IMG = 'img/';
var JS = 'js/';

function setEnv(s,i,j){
	if(s) SUB = s;
	if(i) IMG = i;
	if(j) JS = j;
}

//open new browser window
function openWin(url,name,w,h,l,t,menubar){
	if(!l) l = 25;
	if(!t) t = 25;
	if(!w) w = 400;
	if(!h) h = 400;
	menubar = menubar ? '1' : '0';
	var prop = 'status='+menubar+',menubar='+menubar+',location='+menubar+',';
	var w = window.open(url,name,'toolbar=0,'+prop+'top='+t+',left='+l+',width='+w+',height='+h+',scrollbars=1,resizable=1');
	w.focus();
	return false;
}

//inArray
Array.prototype.inArray = function(value){
	for(var i=0;i<this.length;i++) if(this[i]===value) return true;
	return false;
}

//changes visibility of div
//if img then swap image
function toggle(div,img){  
	if(d=$(div)){
		var vis = (d.offsetHeight!=0);
		d.style.display = vis ? 'none' : 'block';
		if(img) swapImg(img,vis ? 2 : 1);
		if(d.id && typeof(setCookie)=='function') setCookie('visible_'+d.id,(vis ? '0' : '1'));
		return vis ? 0 : 1;
	}
	else return 0;
}

function swapImg(img,to){
	if(img.src) img.src = img.src.replace(''+(3-to)+'.',''+to+'.');
}

/* quick getElement reference */
function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string') element = document.getElementById(element);
		if (arguments.length == 1) return element;
		elements[elements.length] = element;
	}
	return elements;
}


//find child sibling with specified tagName, parent given by id or @
//mode: none=childs, 1=nexts, 2=parents, 3=previouses
function findTag(el,tag,mode){
	tag = ','+tag.toLowerCase()+',';
	var d = $(el);
	if(!d) return;
	if(!mode){ d = d.firstChild; if(d.tagName) if(tag.indexOf(','+d.tagName.toLowerCase()+',')>-1) return d; }
	
	if(mode==1 || !mode){ while(d=d.nextSibling) if(d.tagName) if(tag.indexOf(','+d.tagName.toLowerCase()+',')>-1) return d; }
	else if(mode==2){ while(d=d.parentNode) if(d.tagName) if(tag.indexOf(','+d.tagName.toLowerCase()+',')>-1) return d; }
	else if(mode==3){ while(d=d.previousSibling) if(d.tagName) if(tag.indexOf(','+d.tagName.toLowerCase()+',')>-1) return d; }
}

//onload events
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
	window.onload = func;
  } else {
	window.onload = function() {
	  if(oldonload) oldonload();
	  func();
	}
  }
}

//array of elements by [className] and/or [tagName] [inside element]
function getByClass(tag,cl,el) {
	var r = new Array();
	if(!el) el = document;
	if(!tag) tag = '*';
	var els = el.getElementsByTagName(tag);
	if(!cl) r = els;
	else{
		var elsLen = els.length;
		var pattern = new RegExp("(^|\\s)"+cl+"(\\s|$)");
		for(var i=0;i<elsLen;i++) if(pattern.test(els[i].className)) r[r.length] = els[i];
	}
	//alert('getByClass('+tag+','+cl+') = '+r.length)
	return r;
}

