// define class
function Css(id) {
	this.getElementId = typeof(id) == 'object' ? id : document.getElementById(id);
    this.zakladniCss = this.getElementId.className;
    this.modifikovaneCss = this.zakladniCss;
}

//prida dalsi tridu k ostatnim do atributu class
Css.prototype.addClass   =function(classCss)
{
	var css;
		
    if(this.modifikovaneCss.search(classCss) == -1)
    {
    	css	=this.modifikovaneCss +' '+ classCss;
    	css	=css.replace('[ ]+', ' ');
        this.modification(css);        
    }       
}

//vrati vse do puvodniho stavu ktere bylo jako vychozi
Css.prototype.setDefault =function()
{           
	this.getElementId.className =this.zakladniCss;
    this.modifikovaneCss  		=this.zakladniCss;
}

//kompletne smaze class a nastavi novy
Css.prototype.setNew =function(classCss)
{           
	this.getElementId.className     =classCss;
    this.modifikovaneCss  =classCss;
}

//smaze danou tridu 
Css.prototype.deleteClass =function(classCss)
{        
	this.replaceCss(classCss, '');
}

//nahradi jednu tridu jinou
//pokud neexistuje hledana trida tak nenahradi
Css.prototype.replaceCss =function(cssFound, cssWrite)
{
	this.modification( this.modifikovaneCss.replace(cssFound, cssWrite) );
}   

//nahradi jednu tridu jinou ikdyz neexistuje tak prida
Css.prototype.replaceCss404 =function(cssFound, cssWrite)
{	
	this.deleteClass(cssFound);
	this.addClass(cssWrite);
}

//na zaklade prvniho znaku se rozhoduje co udela a vyuziva vsechny ostatni metody
Css.prototype.update =function(classCss)
{
	var znak	=classCss.substring(0, 1);
	var newClass=classCss.substring(1);
	
	switch(znak)
	{
		case '+':
			this.addClass(newClass);
		break;
		
		case '-':
			this.deleteClass(newClass);
		break;
		
		case '*':
			this.setDefault();
		break;
		
		case ';':
			value	=newClass.split(";");
			this.replaceCss(value[0], value[1]);
		break;
		
		case '%':
			value	=newClass.split(";");
			this.replaceCss404(value[0], value[1]);
		break;
		
		default:
			this.setNew(classCss);
		break;
	}
}

//pomocna metoda udrzujici zmeny
Css.prototype.modification=function(modifity)
{
    this.modifikovaneCss  =modifity;
    this.getElementId.className     =modifity;
}
