var INTERFACE_PATH = "http://i.folkd.com";
var WWW_PATH = "http://www.folkd.com";

//toggles divs visibility and changes a leading image on demand
function toggle(thisdiv, thisimg, imgoff, imgon)
{
	var f = $(thisdiv);
    if (f.style.display != "none") {		
    	f.style.display = "none";
	} else {    
	    f.style.display = "block";
	}
	if (thisimg) {
   		var i = $(thisimg);
		if (f.style.display == "none") {		
			i.src=imgoff;
		} else {    
   			i.src=imgon;
		}
	}
}  
function folk(itemid,itemtype,mode) {
	
	var user = '';
	var brandbutton = $(itemtype+'_'+itemid+'_folkit');
	var blockbutton = $(itemtype+'_'+itemid+'_block');
		
	if (user=='') {
		loginAlert('outer_page_note'+itemid);
	} else {
		
		if (mode=='folkit') {
			if (brandbutton.className=='button-branded') {
				var new_state = 'normal';
				var new_class = "button-brand";
				var new_cross_class = "button-block";
			} else {
				var new_state = 'folkd';
				var new_class = "button-branded";
				var new_cross_class = "button-block";
			}
		} else {
			if (blockbutton.className=='button-blocked') {
				var new_state = 'normal';
				var new_class = "button-block";
				var new_cross_class = "button-brand";
			} else {
				var new_state = 'justbad';
				var new_class = "button-blocked";
				var new_cross_class = "button-brand";
			}
		}
		// save setting call	
		var url = '/scripts/ajax.notification.php';	
		var pars = 'printfolks=1&type=' + encodeURIComponent(itemtype) + '&id=' + encodeURIComponent(itemid) + '&mode=' + encodeURIComponent(new_state);
		new Ajax.Request( url, { method: 'get', parameters: pars, onSuccess: function(r){ 
			if (mode=='folkit') { 
				brandbutton.className = new_class;
				blockbutton.className = new_cross_class;
			} else {
				blockbutton.className = new_class;
				brandbutton.className = new_cross_class;	
			}
			$(itemtype+'_'+itemid+'_brand_count').innerHTML=trim(r.responseText);
			}
		});
	}
	brandbutton.blur();
	blockbutton.blur();
}
function loginAlert(div) {
	var html = '<div id="login_alert" style="position:absolute; left:0; top:0; height:100%; width:100%;"><div style="position:absolute; top:0; height:100%; width:100%; filter:alpha(opacity=80); -moz-opacity:0.80; text-align:center; background-color:#fff;"></div><div style="font-size:14px; position:absolute; left:50px; top:30px; padding:4px 13px 4px 8px; display:block; border:1px solid #aaa; background:#f1f1f1; color:#404000">To use this function, please <a href="/page/login.html">Login</a> or <a href="/page/register.html">Register</a> first. <img src="/images/div_x.gif" style="border:0;vertical-align:middle;cursor:pointer;" onclick="$(\'login_alert\').remove();"></div>';
	new Insertion.Bottom(div, html);
}
function getNote(id) {
	var url = '/scripts/ajax.getnote.php';	
	var pars = 'where=web&n_id='+id;
	new Ajax.Updater( id+'_note' ,url, { method: 'post', parameters: pars, onFailure: function(){ $(id+'_note').style.border ='1px solid red' } });
}


//send url to browser plugin to open it in a new window
function open_url_in_browser( url ) { location.href = url; }
function showTab( id, tab ) {
	if( navigator.appName != "Microsoft Internet Explorer") {
		// IE crashes at this command
		//this.blur();
	}
	allowed_tabs = tabsets[id];
	i_max   	 = allowed_tabs.length;
	
	for( i=0; i<i_max; i++ ) {
		$('link_'+id+'_'+allowed_tabs[i]).removeClassName('active');
		$('tabdiv_'+allowed_tabs[i]).hide();
	}
	
	$('link_'+id+'_'+tab).addClassName('active');
	$('tabdiv_'+tab).show();
	
	return false;
}


//**************************************************************************
// Controlles Highlighting Tag-Cloud
function triggerTag(tag) {	
	var tagarray = new Array();
	var tagarray_show = new Array();
	var string = $('add_tags').value;
	var i = 0;
	tagarray = string.split('{[%]}');
	if (inarray(tag, tagarray)!== false) {
		tagarray.splice(inarray(tag, tagarray), 1 );
		//alert('true');
	} else if (inarray("\""+tag+"\"", tagarray)!== false) {
		tagarray.splice(inarray(tag, tagarray), 1 );
		//alert('true with "');
	} else {
		tagarray.push(tag);
	}
	tagarray = array_cleanup(tagarray);
	while (tagarray[i]) {
		if (tagarray[i].search(/(.+?) (.+?)/) != -1) {
			tagarray_show.push("\""+tagarray[i]+"\"");
		} else {
			tagarray_show.push(tagarray[i]);
		}
		i++;
	}
	$('add_tags_show').value=tagarray_show.join(" ");
	$('add_tags').value=tagarray.join("{[%]}");
	refreshHighlights('add_tags_show');
}

function triggerTag2( tag, id ) {
	var tagarray = new Array();
	var tagarray_show = new Array();
	var string = $(id+'tags_editpage').value;
	var i = 0;
	tagarray = string.split('{[%]}');
	if (inarray(tag, tagarray)!== false) {
		tagarray.splice(inarray(tag, tagarray), 1 );
		//alert('true');
	} else if (inarray("\""+tag+"\"", tagarray)!== false) {
		tagarray.splice(inarray(tag, tagarray), 1 );
		//alert('true with "');
	} else {
		tagarray.push(tag);
	}
	tagarray = array_cleanup(tagarray);
	while (tagarray[i]) {
		if (tagarray[i].search(/(.+?) (.+?)/) != -1) {
			tagarray_show.push("\""+tagarray[i]+"\"");
		} else {
			tagarray_show.push(tagarray[i]);
		}
		i++;
	}
	$(id+'tags_editpage_show').value=tagarray_show.join(" ");
	$(id+'tags_editpage').value=tagarray.join("{[%]}");	
	refreshHighlights(id+'tags_editpage_show');
}

function triggerTagInField( tag, field ) {
	var tagarray 		= new Array();
	var tagarray_show 	= new Array();
	var string 			= $(field).value;
	var i 				= 0;
	tagarray 			= string.split('{[%]}');
	
	if( inarray(tag, tagarray)!==false ) {
		tagarray.splice( inarray(tag, tagarray), 1 );
	} else if( inarray('"'+tag+'"', tagarray)!==false ) {
		tagarray.splice( inarray(tag, tagarray), 1 );
	} else {
		tagarray.push( tag );
	}
	
	tagarray = array_cleanup(tagarray);
	while( tagarray[i] ) {
		if( tagarray[i].search( /(.+?) (.+?)/)!=-1 ) {
			tagarray_show.push('"'+tagarray[i]+'"');
		} else {
			tagarray_show.push(tagarray[i]);
		}
		i++;
	}
	
	$(field+'_show').value = tagarray_show.join(' ');
	$(field).value		   = tagarray.join('{[%]}');
	refreshHighlights( field+'_show' );
}

//**************************************************************************
// Controlles Highlighting within the Add-Popup's Tag-Cloud
function refreshHighlights(fieldId) {
	var field 				= $(fieldId);
	var tagarray 			= new Array();
	var temparray 			= new Array();
	var switchon 			= new Array();
	var tempstring 			= '';
	var string 				= ' '+field.value;
	var s 					= 1;
	var processing_sentence = false;
	startarray 				= string.split(' ');
	
	while( startarray[s] ) {
		if( startarray[s].search(/"(.*)"/)!=-1 ) {
			tagarray.push(startarray[s].slice(1, startarray[s].length-1));
			
		} else if (startarray[s].search(/^"(.*)/) != -1) {
			//alert('starting:' +startarray[s]);
			temparray.push(startarray[s]);
			processing_sentence = true;
			
		} else if (startarray[s].search(/.*"$/) != -1) {     
			//alert('ending:' +startarray[s]);
			temparray.push(startarray[s]);
			tempstring = temparray.join(" ");
			tempstring = tempstring.slice(1, tempstring.length-1);
			tagarray.push(tempstring);
			tempstring = "";
			temparray = new Array();
			processing_sentence = false;
		} else if (processing_sentence) {
			//alert('temppush:' +startarray[s]);
			temparray.push(startarray[s]);
		} else {
			//alert('push:' +startarray[s]);
			tagarray.push(startarray[s]);
		}
	 	s++;
	}
	
	// abfangen, wenn ein " nicht geschlossen wurde
	if( processing_sentence ) {
		tempstring 			= temparray.join(' ');
		tempstring 			= tempstring.slice(1, tempstring.length);
		tagarray.push(tempstring);
		tempstring 			= '';
		temparray 			= new Array();
		processing_sentence = false;
	}
	
	// edit by ck
	//var nFieldId = fieldId.substr(0, (fieldId.length-5));
	var nFieldId = fieldId.replace('_show', '');
	$(nFieldId).value = tagarray.join('{[%]}');
	
	var h=0, j=0, i = 0;
	while ($('tagbox'+(j+1))) {
		var actual = $('tagbox'+(j+1));
		while (tagarray[i]) {
			if (
				(trim(tagarray[i].toLowerCase())==actual.innerHTML.toLowerCase()) || 
				(trim(tagarray[i].toLowerCase())==('"'+actual.innerHTML.toLowerCase()+'"'))
			   )
				{ 
				switchon.push(actual); 
				}
			i++;
		}
		actual.className='tagbox';
		i=0;
		j++;
	}
	while (switchon[h]) {
		switchon[h].className='tagbox_sel';
		h++;
	}
}//**************************************************************************
//find position of an element within an array
function inarray(needle, haystack) {
	var t =0;
	for (t=0; t<haystack.length; t++) {
		if (trim(haystack[t].toLowerCase()) == trim(needle.toLowerCase())) { return t; }
	}
	return false;	
}

//**************************************************************************
//remove all empty elements of an array
function array_cleanup (haystack) {
	var t =0;
	var result = new Array();
	for (t=0; t<haystack.length; t++) {
		if (haystack[t].length > 1 ) { result.push(haystack[t]); }
	}
	return result;	
}

//**************************************************************************
//remove empty spaces of an array
function trim(sString)
{
	while (sString.substring(0,1) == ' ')
	{
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

// die PHP funktion als JavaScript
function urlEncode(inStr) {
	var outStr='';
	for (i=0; i < inStr.length; i++) {
		aChar=inStr.substring (i, i+1);
		switch(aChar){
		case '%': outStr += "%25"; break; case ',': outStr += "%2C"; break;
		case '/': outStr += "%2F"; break; case ':': outStr += "%3A"; break;
		case '~': outStr += "%7E"; break; case '!': outStr += "%21"; break;
		case '"': outStr += "%22"; break; case '#': outStr += "%23"; break;
		case '$': outStr += "%24"; break; case "'": outStr += "%27"; break;
		case '`': outStr += "%60"; break; case '^': outStr += "%5E"; break;
		case '&': outStr += "%26"; break; case '(': outStr += "%28"; break;
		case ')': outStr += "%29"; break; case '+': outStr += "%2B"; break;
		case '{': outStr += "%7B"; break; case '|': outStr += "%7C"; break;
		case '}': outStr += "%7D"; break; case ';': outStr += "%3B"; break;
		case '<': outStr += "%3C"; break; case '=': outStr += "%3D"; break;
		case '>': outStr += "%3E"; break; case '?': outStr += "%3F"; break;
		case '[': outStr += "%5B"; break; case '\\': outStr += "%5C"; break;
		case ']': outStr += "%5D"; break; case ' ': outStr += "+"; break;
		default: outStr += aChar;
		}
	}
	return outStr;
}

function nl2br(str) {
   if(typeof(str)=="string") return str.replace(/(\r\n)|(\n\r)|\r|\n/g,"<BR>");
   else return str;
}

function encode_utf8(rohtext) {
       // dient der Normalisierung des Zeilenumbruchs
      rohtext = rohtext.replace(/\r\n/g,"\n");
      var utftext = "";
      for(var n=0; n<rohtext.length; n++)
         {
         // ermitteln des Unicodes des  aktuellen Zeichens
         var c=rohtext.charCodeAt(n);
         // alle Zeichen von 0-127 => 1byte
         if (c<128)
           utftext += String.fromCharCode(c);
           // alle Zeichen von 127 bis 2047 => 2byte
         else if((c>127) && (c<2048)) {
           utftext += String.fromCharCode((c>>6)|192);
           utftext += String.fromCharCode((c&63)|128);}
         // alle Zeichen von 2048 bis 66536 => 3byte
         else {
            utftext += String.fromCharCode((c>>12)|224);
            utftext += String.fromCharCode(((c>>6)&63)|128);
            utftext += String.fromCharCode((c&63)|128);}
         }
     return utftext;
}

function decode_utf8(utftext) {
     var plaintext = ""; var i=0; var c=c1=c2=0;
     // while-Schleife, weil einige Zeichen uebersprungen werden
     while(i<utftext.length)
     {
	     c = utftext.charCodeAt(i);
         if (c<128) {
           plaintext += String.fromCharCode(c);
           i++;}
         else if((c>191) && (c<224)) {
           c2 = utftext.charCodeAt(i+1);
           plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));
           i+=2;}
         else {
           c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);
           plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
           i+=3;}
         }
         return plaintext;
}


function clearSel()
{
	if (window.getSelection)
	{
		window.getSelection().removeAllRanges();
	}
	else if (document.getSelection)
	{
		document.getSelection().removeAllRanges(); 
	}
	else if (document.selection)
	{
		document.selection.empty();
	}
	else return;
}

function array_diff()
{
    var args = array_diff.arguments;
    var T = args[0], arg, k, R = '', out=[];
    var d = '*';
    for(k=1;arg=args[k++];)
        R += arg.join(d)+d;
    for(k=0;k<T.length;k++)
        if(R.indexOf(T[k]+d)<0)
            out[out.length]=T[k];
    return out;
}