/*
----------------------------------------------------------------------------------
common functions
----------------------------------------------------------------------------------
*/

var debug = false; // debug mode

/* generic */
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

/* set javascript mode on ;) */
document.write('<link rel="stylesheet" type="text/css" href="/styles/javascript.css" media="all">');

/* cross browser get computed style */
function getStyleComputed(el, property) 
{
	var value;
	if (el.currentStyle) {
		value = el.currentStyle[property];
	} else {
		try {
            value = document.defaultView.getComputedStyle(el,null).getPropertyValue(property);
        } catch(e) { 
            // nothing :)
        }
	}
	return value;
}

/* by Scott Andrew (http://www.scottandrew.com/) */
function createCookie(name, value, days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1, c.length);
    if (c.indexOf(nameEQ) == 0) 
    	return c.substring(nameEQ.length, c.length);
  }
  return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

/* by ethanak */
function remClass(el,x)
{
	if (!el.className) return;
	if (!arguments.callee.r) arguments.callee.r=new Array();
	var r;
	if (!(r=arguments.callee.r[x])) r=arguments.callee.r[x]=
		new RegExp('\\b'+x+'\\b\\s*|\\s*'+x+'\\b','g');
	var c=el.className.replace(r,'');
	if (c != el.className) el.className=c;
}

function addClass(el,x)
{
	if (!el.className) {
		el.className=x;
		return;
	}
	if (!arguments.callee.r) arguments.callee.r=new Array();
	var r;
	if (!(r=arguments.callee.r[x])) r=arguments.callee.r[x]=
		new RegExp('\\b'+x+'\\b');
	if (!r.test(el.className)) el.className+=' '+x;
}

function hasClass(el,x)
{
    if(!el.className) {
        return false;
    }
    var classArr = el.className.split(' ');
    for(var i=0; i<classArr.length; i++) {
        if(classArr[i]==x) {
            return true;
        }
    }
    
    return false;
}

/* blend & opacity */
function opacity(elem, opacityLevel) {		
	opacityLevel = ( opacityLevel == 100 ) ? 99.999 : opacityLevel;
	elem.style.filter = 'alpha(opacity:' + opacityLevel + ')';
	elem.style.opacity = opacityLevel / 100;
}

function fadein(elem, opacityLevel) {
	opacityLevel += 10;
	opacity(elem, opacityLevel);
	if (opacityLevel < 100) {
		elem.style.display="block";
		setTimeout((
			function(a, b) { 
				return function() { 
					fadein(a, b) 
				}
			}
		)(elem, opacityLevel), 50);
	}
}
function fadeout(elem, opacityLevel) {
	opacityLevel -= 10;
	opacity(elem, opacityLevel);
	if (opacityLevel > 0) {
		setTimeout((
			function(a, b) { 
				return function() { 
					fadeout(a, b) 
				}
			}
		)(elem, opacityLevel), 50);	
	}
	
}

/**
 used for pretty-url'ing in search forms.
 Uses form input's values for preparing url.
 
 @param form : HTMLForm
 @param format : String
 
 Example format :
    '/%module%/%controller%/%month%/
    Script search HTMLForm object for inputs with
    names 'module', 'controller', 'month' and replaces
    respective parts of format string with coresponding 
    values from inputs
 
 Recommend embeding:
    <form method="..." action="..." onchange="return rewriteFromParams(this,'format string')"> 
 */
function rewriteFormParams(form,format){
    var reg = new RegExp('(?:%([a-zA-Z-_]+)%)');
    var match;
    while((match = reg.exec(format)) != null) {
        var el = form[match[1]];
        if(el) {
            format = format.replace(match[0],el.value);
        }
        else {
            // maybe alert user of invalid placeholder ?
            format = format.replace(match[0],'-invalid placeholder ' + match[1] + '-');
        }
    }
    
    format = form.action + format;
    //alert("Redirect format : " + format);
    
    window.location = format;
    return false;
}


