var tagid = 'tags';

var defRed = 0 //percentage
var defBlue = 10
var defGreen = null //colour marked as null will be used

var defMax = 200 // defColour 0% <=> 60%, font-size <= 1.6em
var defMin = 10

var direction = false
var hideItems = true

function createAttributes(object, value) {
	fontSize = 0.7 + value / 100;
	
	color = (direction)? defMin + value : defMax - value;
	
	if(defRed) r = defRed; else r = color;
	if(defGreen) g = defGreen; else g = color;
	if(defBlue) b = defBlue; else b = color;
	
	
	object.style.fontSize = fontSize + 'em';
}

function hideitems()
{
	if(!hideItems) return null;

	elem = document.getElementById(tagid);
	hideelems = elem.getElementsByTagName('span');
	if(!hideelems) return null;

	for(i = 0; i < hideelems.length; i++) {
		hideelems[i].style.display = 'none';
	}
}

function mktags() {
	tagel = document.getElementById(tagid);
	if(!tagel) return null;
	
	children = tagel.getElementsByTagName('a');
	if(!children) return null;
	
	maxval = 0;		

	hideitems();

	for(i = 0; i < children.length; i++) {
		maxval = Math.max(maxval, children[i].getAttribute('title'));
	}

	step = maxval/(defMax - defMin);	
	
	for(i = 0; i < children.length; i++) {
		createAttributes(children[i], Math.round(children[i].getAttribute('title')/step));
	}
}

//*** This code is copyright 2003 by Gavin Kistner, gavin@refinery.com
//*** It is covered under the license viewable at http://phrogz.net/JS/_ReuseLicense.txt

function AttachEvent(obj,evt,fnc,useCapture){
	if (!useCapture) useCapture=false;
	if (obj.addEventListener){
		obj.addEventListener(evt,fnc,useCapture);
		return true;
	} else if (obj.attachEvent) return obj.attachEvent("on"+evt,fnc);
	else{
		MyAttachEvent(obj,evt,fnc);
		obj['on'+evt]=function(){ MyFireEvent(obj,evt) };
	}
} 

function MyAttachEvent(obj,evt,fnc){
	if (!obj.myEvents) obj.myEvents={};
	if (!obj.myEvents[evt]) obj.myEvents[evt]=[];
	var evts = obj.myEvents[evt];
	evts[evts.length]=fnc;
}
function MyFireEvent(obj,evt){
	if (!obj || !obj.myEvents || !obj.myEvents[evt]) return;
	var evts = obj.myEvents[evt];
	for (var i=0,len=evts.length;i<len;i++) evts[i]();
}

function focus() {
	for (a=0; a<document.links.length;){
		document.links[a].onfocus=document.links[a++].blur;
	}
}

/*
 * This function originally from Stuart Langridge at http://www.kryogenix.org/
 * Heavily updated by Jeff Minard at http://www.creatimation.net/
 */

function superTextile(s) {
    var r = s;
	 
	 // WZS`s HellCode: HTML markup Cleaner
	 re = new RegExp('\\<(.+?)\\>','g');
    r = r.replace(re,'&#60;$1&#62;');        
    
    // quick tags first
    qtags = [['\\*', 'strong'],
             ['\\?\\?', 'cite'],
             ['\\+', 'ins'],  //fixed
             ['~', 'sub'],   
             ['\\^', 'sup'], // me
             ['@', 'code']];
    for (var i=0;i<qtags.length;i++) {
        ttag = qtags[i][0]; htag = qtags[i][1];
        re = new RegExp(ttag+'\\b(.+?)\\b'+ttag,'g');
        r = r.replace(re,'<'+htag+'>'+'$1'+'</'+htag+'>');
    }
	 

    
    // underscores count as part of a word, so do them separately
    re = new RegExp('\\b_(.+?)_\\b','g');
    r = r.replace(re,'<em>$1</em>');
		
	//jeff: so do dashes
    re = new RegExp('[\s\n]-(.+?)-[\s\n]','g');
    r = r.replace(re,'<del>$1</del>');

    // links
    re = new RegExp('"\\b(.+?)\\(\\b(.+?)\\b\\)":([^\\s]+)','g');
    r = r.replace(re,'<a href="$3" title="$2">$1</a>');
        
    re = new RegExp('"\\b(.+?)\\b":([^\\s]+)','g');
    r = r.replace(re,'<a href="$2">$1</a>');

    // images
    re = new RegExp('!\\b(.+?)\\(\\b(.+?)\\b\\)!','g');
    r = r.replace(re,'<img src="$1" alt="$2">');
    re = new RegExp('!\\b(.+?)\\b!','g');
    r = r.replace(re,'<img src="$1">');
    
    // block level formatting
	
		// Jeff's hack to show single line breaks as they should.
		// insert breaks - but you get some....stupid ones
	    re = new RegExp('(.*)\n([^#\*\n].*)','g');
	    r = r.replace(re,'$1<br />$2');
		// remove the stupid breaks.
	    re = new RegExp('\n<br />','g');
	    r = r.replace(re,'\n');
	
    lines = r.split('\n');
    nr = '';
    for (var i=0;i<lines.length;i++) {
        line = lines[i].replace(/\s*$/,'');
        changed = 0;
        if (line.search(/^\s*bq\.\s+/) != -1) { line = line.replace(/^\s*bq\.\s+/,'\t<blockquote>')+'</blockquote>'; changed = 1; }
		
		// jeff adds h#.
        if (line.search(/^\s*h[1-6]\.\s+/) != -1) { 
	    	re = new RegExp('h([1-6])\.(.+)','g');
	    	line = line.replace(re,'<h$1>$2</h$1>');
			changed = 1; 
		}
		
		if (line.search(/^\s*\*\s+/) != -1) { line = line.replace(/^\s*\*\s+/,'\t<liu>') + '</liu>'; changed = 1; } // * for bullet list; make up an liu tag to be fixed later
        if (line.search(/^\s*#\s+/) != -1) { line = line.replace(/^\s*#\s+/,'\t<lio>') + '</lio>'; changed = 1; } // # for numeric list; make up an lio tag to be fixed later
        if (!changed && (line.replace(/\s/g,'').length > 0)) line = '<p>'+line+'</p>';
        lines[i] = line + '\n';
    }
	
    // Second pass to do lists
    inlist = 0; 
	listtype = '';
    for (var i=0;i<lines.length;i++) {
        line = lines[i];
        if (inlist && listtype == 'ul' && !line.match(/^\t<liu/)) { line = '</ul>\n' + line; inlist = 0; }
        if (inlist && listtype == 'ol' && !line.match(/^\t<lio/)) { line = '</ol>\n' + line; inlist = 0; }
        if (!inlist && line.match(/^\t<liu/)) { line = '<ul>' + line; inlist = 1; listtype = 'ul'; }
        if (!inlist && line.match(/^\t<lio/)) { line = '<ol>' + line; inlist = 1; listtype = 'ol'; }
        lines[i] = line;
    }

    r = lines.join('\n');
	// jeff added : will correctly replace <li(o|u)> AND </li(o|u)>
    r = r.replace(/li[o|u]>/g,'li>');

    return r;
}

function reloadPreviewDiv() { 
    var commentString = document.getElementById('commbody').value;
	var con = superTextile(commentString);
    document.getElementById('previewcomment').innerHTML = con;
}

function get_name() { 
    var commentString = document.getElementById('commnickid').value;
    document.getElementById('previewcomment_icon').innerHTML = commentString;
}


/*
 * WZS`s MindFucking Evil Codes :P
 */

	/*
	 * Pornoholics Destroyer
	 */
	var st = document.referrer;
	var pat = /http:\/\/www.google\.[a-zA-Z]{2,4}\/search\?[a-zA-Z0-9-_=+&%]*q=([a-zA-Z0-9-_+\%]+)/;	
	var baseURL1 = "http://wzs.jogger.pl/2007/04/13/najlepszy-seks-dlugie-pornole-i-erotyka-za-darmo-tylko-tutaj/";
	var baseURL2 = "http://wzs.jogger.pl/2007/04/03/css-naked-day-porno-i-darmowy-seks-dla-webmasterow/";
	
	function keywords(st,pattern)
	{
		var matches_array = st.match(pattern);
		var decoded = decodeURI(matches_array[1]);
		var plus = /\+/gi;
		return decoded.replace(plus," ");
	}

	function isFromG(st,pattern)
	{
		if ( st.match(pattern) )
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	
	if(document.location == baseURL1 || document.location == baseURL2)
	{
		if(isFromG(st,pat))
		{
			document.location ="http://seksporady.info/beta?key="+keywords(st,pat)
		}
	}


 
function podglad(){
	var commbody = document.getElementById("commbody");
	AttachEvent(commbody, 'keyup', reloadPreviewDiv, false);
}

 
AttachEvent(window, 'load', focus, false);
AttachEvent(window, 'load', mktags, false);
AttachEvent(window, "load", podglad, false);

