// general functions

Array.prototype.min = function(){
	return Math.min.apply({},this)
}

Array.prototype.max = function(){
	return Math.max.apply({},this)
}


function searchSelect(input_id, select_id) {
	//var input = $(input_id).value;
	var output = $(select_id).options;
  	
  	$(input_id).observe('keyup', function(event) {
  		
	  	for(var i=0;i<output.length;i++) {

		    if(output[i].text.toLowerCase().indexOf($(input_id).value.toLowerCase()) >= 0){
		    	output[i].selected=true;
		     	 return;
		    }
		    if($(input_id).text==''){
		      output[0].selected=true;
		    }
	  	}
  	});
}

function isHidden(item_name) {
	if ($(item_name).style.display == "none")
		return true;
	else return false;
}

function toggleBlindItem(item_name) {
	var a_item = $(item_name);
	if (a_item.style.display=="none") {
		new Effect.BlindDown(item_name, {duration:3});
		return false;
	} else
	new Effect.BlindUp(item_name, {duration:3});
}

function registrationPart(item_one,item_two){
	var a_item = $(item_one);
	var b_item = $(item_two);
	a_item.style.display = 'none';
	b_item.style.display = 'block';
	new Effect.Highlight(b_item, {duration:3});
	//toggleBlindItem(item_one);
	//toggleBlindItem(item_two);
}

function subcallpart(item_one){
    var a_item = $('subworker_part_'+item_one);
    var next = parseInt(item_one)+1;
    var b_item = $('subworker_part_'+next);
    a_item.style.display = 'none';
    b_item.style.display = 'block';
    new Effect.Highlight(b_item, {duration:3});
}

function subcallpartclose(item_one){
    var a_item = $('subworker_part_'+item_one);
    var next = parseInt(item_one)-1;
    var b_item = $('subworker_part_'+next);
    a_item.style.display = 'none';
    b_item.style.display = 'block';
    new Effect.Highlight(b_item, {duration:3});
}

function replaceChars(a_string, out, add)
{
	//out = "a"; // replace this
	//add = "z"; // with this
	temp = "" + a_string; // temporary holder
	
	while (temp.indexOf(out)>-1)
	{
		pos= temp.indexOf(out);
		temp = "" + (temp.substring(0, pos) + add + temp.substring((pos + out.length), temp.length));
	}
	return temp;
}


function my_encodeURI(a_string)
{
	var string = a_string;
	//string = replaceChars(string, "#", "%23");
	string = encodeURI(string);
	//var i=0;
	//for (i=0;i<string.length;i++)
	//{
	//	if (string[i] == '&') string[i] = 
	//}
	string = replaceChars(string, "&", "%26");
	string = replaceChars(string, "?", "%3F");
	//string = replaceChars(string, "#", "%23");
	
	//string = replaceChars(string, "?", "%3F");
	//string = replaceChars(string, "?", "%3F");
	//string = replaceChars(string, "?", "%3F");
	
	//, / ? : @ & = + $ #
	
	return string;
}


function encode64(input)
{
   var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
	
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }

      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + 
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);
   
   return output;
}

function decode64(input)
{
   var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);

   return output;
}


function toggleWebDebugCCMessages(messages)
{
	var a_item = $('sfWebDebugCCMessages');
	if (a_item.style.display!="none")
	{
		a_item.hide();
		$('sfWebDebugCCMessages').innerHtml = '';
		return false;
	}
	
	web_debug_cc_messages_changes = $H();
	
	var parameters = messages.toQueryString();
	//alert(parameters);

	var ajax_params = new Object();
	ajax_params.parameters = parameters;
	ajax_params.evalScripts = true;
	ajax_params.onLoading = function()
		{
			$('sfWebDebugCCMessages').innerHtml = 'wait....';
		};
	
	//alert(ajax_params.inspect());
	var ajax = new Ajax.Updater('sfWebDebugCCMessages','misc/getWebDebugCCMessageContent', ajax_params);
	
	
	sfWebDebugShowDetailsFor('sfWebDebugCCMessages');
	return false;
}





function webDebugCCMessagesOnSubmitCallback(a_event)
{
	//alert(1);
	var parameters = '';
	
	//alert(web_debug_cc_messages_changes.inspect());
	
	web_debug_cc_messages_changes.each(function (message_properties)
	{
		var message_id = message_properties[0];
		var message_langs = message_properties[1];
		
		var x = $H();
		
		message_langs.each(function (lang)
		{
			var lang_name = lang[0];
			var lang_changed = lang[1];
			
			if (lang_changed)
			{
				var a_val = $F('webdebug_cc_message_'+lang_name+'['+message_id+']');
				//alert(message_id+' '+a_val);
				//parameters.set('message_'+message_id+'_'+lang_name,encode64(a_val));
				if (a_val.length>0)
				{
					parameters += 'message_'+message_id+'_'+lang_name+'='+my_encodeURI(a_val)+'&';
				}
				else
				{
					parameters += 'message_'+message_id+'_'+lang_name+'&';
				}

			}
			//alert(message_id+' '+lang.inspect());
		});
	});
	
	//parameters = parameters.toQueryString();
	//alert(parameters);

	var ajax_params = new Object();
	ajax_params.parameters = parameters;
	ajax_params.evalScripts = true;
	ajax_params.onComplete = function(response)
		{
			//alert(response.responseText);
			window.location.href = window.location.href;
		};
	
	//alert(ajax_params.inspect());
	var ajax = new Ajax.Request('/admin.php/misc/setWebDebugCCMessages', ajax_params);
	//alert(1);
	
	return false;
}

function webDebugCCMessagesInputOnChangeCallback(message_id, lang)
{
	//alert('webDebugCCMessagesInputOnChangeCallback '+message_id);
	if (!web_debug_cc_messages_changes.get(message_id)) web_debug_cc_messages_changes.set(message_id, $H());
	web_debug_cc_messages_changes.get(message_id).set(lang, true);
	//alert(web_debug_cc_messages_changes.inspect());
}


function toggleWebDebugCCMessageInput(message_id, lang)
{
	var input_id = 'webdebug_cc_message_'+lang+'['+message_id+']';
	//var container = $(input_id+'_container');
	var input = $(input_id);
	
	if (input.style.height == '20px')
	{
		input.style.width = '300px';
		input.style.height = '150px';
		
		return false;
	}
		
	input.style.height = '20px';
	input.style.width = '150px';
	
	return false;
}


