/** Encoder for tag search **/
var Encoder = {
	// encoding tags
	encode : function (string) {
                string = string.replace(/\%/g,"%25");   // This mess things up
		string = string.replace(/\r\n/g,"%0D%0A");
                string = string.replace(/\$/g,"%24");
                string = string.replace(/\-/g,"%2D");
                string = string.replace(/\_/g,"%5F");
                string = string.replace(/\./g,"%2E");
                string = string.replace(/\+/g,"%2B");
                string = string.replace(/\!/g,"%21");
                string = string.replace(/\*/g,"%2A");
                string = string.replace(/\"/g,"%22");
                string = string.replace(/\'/g,"%27");
                string = string.replace(/\(/g,"%28");
                string = string.replace(/\)/g,"%29");
                string = string.replace(/\;/g,"%3B");
		string = string.replace(/\//g,"%2F");                
		string = string.replace(/\?/g,"%3F");
		string = string.replace(/\:/g,"%3A");
		string = string.replace(/\@/g,"%40");
		string = string.replace(/\=/g,"%3D");
		string = string.replace(/\&/g,"%26");  // Temporarly remove this character %26
                string = string.replace(/\|/g,"%7C");
		string = string.replace(/\£/g,"%C2");  // Temporarly remove this character %C2
		string = string.replace(/\€/g,"%A3");  // Temporarly remove this character %A3
		string = string.replace(/\^/g,"%5E");
		string = string.replace(/\`/g,"%60");
		string = string.replace(/\</g,"%3C");
		string = string.replace(/\>/g,"%3E");
		string = string.replace(/\[/g,"%5B");
		string = string.replace(/\]/g,"%5D");
		string = string.replace(/\{/g,"%7B");
		string = string.replace(/\}/g,"%7D");
		return string;
	},
	// decoding tags
	decode : function (string) {
                string = string.replace(/%24/g,"$");
                string = string.replace(/%2D/gi,"-");
                string = string.replace(/%5F/gi,"_");
                string = string.replace(/%2E/gi,".");
                string = string.replace(/%2B/gi,"+");
                string = string.replace(/%21/g,"!");
                string = string.replace(/%2A/gi,"*");
                string = string.replace(/%22/g,"\"");
                string = string.replace(/%27/g,"'");
                string = string.replace(/%28/g,"(");
                string = string.replace(/%29/g,")");
                string = string.replace(/%3B/gi,";");
                string = string.replace(/%2F/gi,"/");
		string = string.replace(/%3F/gi,"?");
                string = string.replace(/%3A/gi,":");
                string = string.replace(/%40/g,"@");
                string = string.replace(/%3D/gi,"=");
		string = string.replace(/%7C/gi,"|");
		string = string.replace(/%C2/gi,"£");
		string = string.replace(/%A3/gi,"€");
		string = string.replace(/%5E/gi,"^");
		string = string.replace(/%60/g,"`");
		string = string.replace(/%3C/gi,"<");
		string = string.replace(/%3E/gi,">");
		string = string.replace(/%5B/gi,"[");
		string = string.replace(/%5D/gi,"]");
		string = string.replace(/%7B/gi,"{");
		string = string.replace(/%7D/gi,"}");
                string = string.replace(/%26/g,"&");
                string = string.replace(/%25/g,"%");
                string = string.replace(/&amp;/g,"&");
                string = string.replace(/&quot;/g,"\"");
                string = string.replace(/&lt;/g,"<");
                string = string.replace(/&gt;/g,">");
		return string;
	},
        // encoding for xml
	encodeXml : function (string) {
                string = string.replace(/\&/g,"&amp;");
                string = string.replace(/\>/g,"&gt;");
                string = string.replace(/\</g,"&lt;");
		return string;
	}
}
