//decare campaign_id before including this file

var http_request = false;
var menuArr = new Array();
var tLE = null;
var tGF = null;

function stripHTML(oldString)
{
	oldString = oldString.replace(/<a>/gi ,"");
	oldString = oldString.replace(/<\/a>/gi ,"");
	oldString = oldString.replace(/<b>/gi ,"");
	oldString = oldString.replace(/<b>/gi ,"");
	oldString = oldString.replace(/<\/b>/gi ,"");
	return oldString.replace(/<&#91;^>&#93;*>/g, "");
  
}

function returnMouseXY(e)
{
	if(!e)
		e = window.event;

	if(e.clientX || e.clientY)
	{
		tempX = e.clientX + document.body.scrollLeft;
		tempY = e.clientY + document.body.scrollTop;
	}
	else
	{
		tempX = e.pageX;
		tempY = e.pageY;
	}

	return [tempX, tempY];
}

function openGenericFlyover(body, time, e)
{
	clearLECloseTimeout();

	var mp = returnMouseXY(e);

	var le_popup = document.getElementById('gen_flyover');
	le_popup.style.top = (mp[1] + 5) + 'px';
	le_popup.style.left = (mp[0] + 5) + 'px';

	document.getElementById('gen_flyover_body').innerHTML = body;
	
	tGF = window.setTimeout("showGenericFlyover();", time);
}

function showGenericFlyover()
{
	var le_popup = document.getElementById('gen_flyover');
	le_popup.style.display = 'block';
}

function flyoverViewIdea(idea_id)
{
	window.location = 'ct_a_view_idea.bix?idea_id=' + idea_id;
}

function flyoverViewIdeaSb(idea_id, campaign_id)
{
	window.location = 'sb_ai_eval.bix?c=' + campaign_id + '&idea_id=' + idea_id;
}

function flyoverViewIdeaSbRoom(idea_id, campaign_id)
{
	window.location = 'sb_idea_room.bix?c=' + campaign_id + '&idea_id=' + idea_id;
}


function openLabelEditor(id_wrap, e)
{
  closeLE();
	clearLECloseTimeout();
  window.status = "";

	var mp = returnMouseXY(e);

  var default_holder = document.getElementById('label_edit_defaultval');
  var default_str = document.getElementById('label_default_' + id_wrap);
  var label_language_id = document.getElementById('label_language_id');
	var le_popup = document.getElementById('label_editor_popup');

  if ( !le_popup ) return;
	le_popup.style.top = (mp[1] + 5) + 'px';
	le_popup.style.left = (mp[0] + 5) + 'px';
	le_popup.style.display = 'block';

  if ( document.getElementById('innerMultiline') ) {
    var multilineContainer = document.getElementById('innerMultiline');
    if ( multilineContainer && ( 0 < languagesIdList.length ) ) {
      var multiline_body = "";
      var langDataContainer = document.getElementById(id_wrap);
      var labelKey;
      var current_value_id;
      if ( langDataContainer && getChildNodeById(langDataContainer,'label_name') ) {
        labelKey = getChildNodeById(langDataContainer,'label_name').value;
      } else {
        labelKey = "";
      }
      multiline_body += '<input type="hidden" name="label_name" value="' + labelKey + '">';
      multiline_body += '<input type="hidden" name="label_editor_container" value="' + id_wrap + '">';
      for ( var i = 0 ; i < languagesIdList.length ; i++ ) {
        var labelValue = document.getElementById('label_' + languagesIdList[i] + '_' + labelKey); 
        var matchCurrentDefault = (languagesIdList[i] == mleCurrentUserLangId) ? 'style="font-weight:bold;color:#0000c0;font-style:italic;"' : (languagesIdList[i] == mleCurrentDefaultId ? 'style="font-weight:bold;color:black;"' : '');
        var userColorNotice = (languagesIdList[i] == mleCurrentUserLangId) ? 'Your current language setting (set in your Profile)' : (languagesIdList[i] == mleCurrentDefaultId ? 'The site default language' : '');
        if ( labelValue ) {
          labelValue = labelValue.value;
        } else {
          labelValue = "";
        }
        multiline_body += '<span ' + matchCurrentDefault + ' title="' + userColorNotice + '">' + languagesNameList[i] + '</span>&nbsp;';
        multiline_body += '<input type="text" name="label_edit_input_' + languagesIdList[i] + '" value="' + labelValue + '"/>'; 
        multiline_body += "<br/>";
      }
			multiline_body += "<div style='margin-top:3px;white-space:nowrap;'>";
      multiline_body += "<button onClick='saveLabelEdit();' style='width:50px; font-size:12px;'>Save</button>";
      multiline_body += "</div>";

      multilineContainer.innerHTML = multiline_body;
    }
  } else {
    var le_input = document.getElementById('label_edit_input');
    var container_data = document.getElementById(id_wrap);
    var value_holder = container_data ? getChildNodeById(container_data, 'lbl_currentvalue') : '';
    var labelValue = value_holder ? stripHTML(value_holder.value) : '';
    var container_id_holder = document.getElementById('label_data_container_id');
    var language_id_holder = document.getElementById('label_language_id');
    document.getElementById('label_edit_link').value = id_wrap;
    if ( default_holder ) default_holder.innerHTML = '...';
    if ( default_str && default_holder ) {
      default_holder.innerHTML = default_str.value + "&nbsp;";
    } else if ( default_holder ) {
      default_holder.innerHTML = "";
    }
    if ( container_id_holder && language_id_holder && container_data ) {
      var langid_value = getChildNodeById(container_data,'label_name');
      langid_value = langid_value ? langid_value.value : '';
      container_id_holder.value = id_wrap;
      if ( langid_value.length > 0 && ( mleEditingTarget.length > 0 ) ) {
        language_id_holder.value = 'label_' + mleEditingTarget + '_' + langid_value;
      }
    }
    le_input.value = labelValue;
    le_input.focus();
  }
}

function closeLabelEditor()
{
	if(tGF)
		clearTimeout(tGF);
		
	tLE = window.setTimeout("document.getElementById('label_editor_popup').style.display = 'none'; document.getElementById('gen_flyover').style.display = 'none';", 8500);
  
}

function clearLECloseTimeout()
{
	if(tLE)
		clearTimeout(tLE);
}

function saveLabelEdit()
{
  if ( document.getElementById('innerMultiline') ) {
    var multics = document.getElementById('innerMultiline');
    var pollvars = "";
    var labelname = ""
    var changed_labels = 0;
    var pure_ws = 0;
    for ( var i = 0 ; i < multics.childNodes.length ; i++ ) {
      var cn = multics.childNodes[i];
      var wrapper;
      var wrappername = "";
      if ( cn && cn.name ) {
        if ( cn.name.indexOf('abel_edit_input_') > 0 ) {
          var ci = cn.name.replace(/label_edit_input_/,"");
          var ch = cn.name.replace(/label_edit_input_/,"label_") + "_" + labelname;
          var cv = stripHTML(cn.value.replace(';','|'));
          if ( wrapper && wrapper.childNodes && ( wrapper.childNodes.length > 0 ) ) {
            // alert( "Seeking " + ch + " in " + wrappername + " (" + wrapper + ")" ); 
            var cho = getChildNodeById(wrapper,ch) ;
            if ( cho && ( cn.value != cho.value ) && ( cn.value.length > 0 ) ) {
              var repval = cn.value.replace(/(\s)+/gi," ");
              if ( repval != ' ' ) {
                changed_labels++;
                pollvars += ci + "^" + cv + ";"; 
                cho.value = cn.value;
              } else {
                cn.value = cho.value;
                pure_ws++;
                i = multics.childNodes.length;
              }
            }
          }
        } else if ( cn.name == 'label_name' ) {
          labelname = cn.value; 
        } else if ( cn.name == 'label_editor_container' ) {
          wrappername = cn.value;
          wrapper = document.getElementById(wrappername);
        }
      }
    }
    if ( pure_ws > 0 ) {
      openMessageBox('Label Edit','Empty labels not allowed',1700);
    } else if ( changed_labels > 0 ) {
      editMenuLabelRequest('multilang', 'label^' + labelname + ';' + pollvars, true);
    } else {
      closeLE();
      openMessageBox('Label Edit','No Changes',1700);
    }
  } else {
    var containerid = document.getElementById('label_edit_link').value;
    var obj_wrap = document.getElementById(containerid);
    var defaultlabel_indicator = document.getElementById('label_default_' + containerid);
    var obj_text = getChildNodeById(obj_wrap, 'lbl_text');
    var obj_edit = document.getElementById('label_edit_input');
    var obj_hide = getChildNodeById(obj_wrap, 'hidden_info');
    var obj_lbl = getChildNodeById(obj_wrap, 'label_name');
    var obj_curval = getChildNodeById(obj_wrap,'lbl_currentvalue');
    var ml_edit_target_container = document.getElementById('label_data_container_id');
    var ml_edit_target = document.getElementById('label_language_id');

    if(obj_edit && obj_edit.value && obj_edit.value.length > 0) {
      // Only put onto displayed label if editing the current user's language
      if( ml_edit_target &&
          ml_edit_target_container &&
          ml_edit_target_container.value &&
          ( ml_edit_target_container.value.length > 0 ) &&
          document.getElementById(ml_edit_target_container.value) ) {
        var oev = obj_edit.value;
        var ml_target = document.getElementById(ml_edit_target_container.value);
        oev = stripHTML(oev + '');
        ml_edit_target_container = null;
        ml_edit_target_container = getChildNodeById(ml_target,ml_edit_target.value);
        if ( ml_edit_target_container ) {
          ml_edit_target_container.value = oev;
        }
        if ( obj_curval ) {
          obj_curval.value = oev;
        }
        if ( ml_edit_target &&
            ( ml_edit_target.value.indexOf('11111111111111111111111111111111') > 0 ) ) {
          if ( defaultlabel_indicator ) 
          {
            // defaultlabel_indicator.innerHTML = oev;
          }
          document.getElementById('label_edit_defaultval').innerHTML =  oev + "&nbsp;";
        }
      }
      if ( mleEditingTarget == mleCurrentUserLangId ) {
        obj_text.innerHTML = stripHTML(obj_edit.value);
      }
    } else {
      //obj_text.innerHTML = stripHTML(obj_hide.value);
      openMessageBox('Label Edit', 'Please enter a label before saving.', 1700);
      return;
    }
    editMenuLabelRequest(obj_lbl.value, stripHTML(obj_edit.value), true);
  }
}

function getChildNodeById(obj, id)
{
	for(var i = 0; i < obj.childNodes.length; i++)
	{
		if(obj.childNodes[i].id == id)
			return obj.childNodes[i];
	}

	return null;
}

function editMenuLabelRequest(lbl, id_ipt, display_confirm)
{
	var url = "ct_xt_update_label.bix?c=" + campaign_id + "&lbl=" + lbl + "&val=" + escape(encodeURI(id_ipt));

	http_request = false;

	// Mozilla, Safari,...
	if(window.XMLHttpRequest)
	{
	    http_request = new XMLHttpRequest();
	    if (http_request.overrideMimeType) {
		http_request.overrideMimeType('text/xml');
	    }
	}
	// IE
	else if(window.ActiveXObject)
	{
	    try
	    {
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	    }
	    catch(e)
	    {
		try
		{
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e){}
	    }
	}

	if(!http_request)
	{
	    alert("Cannot create an XMLHTTP instance");
	    return false;
	}
	
	http_request.abort();
	
	if(display_confirm)
		http_request.onreadystatechange = (function(){editMenuLabelExecute(true);});
	else
		http_request.onreadystatechange = (function(){editMenuLabelExecute(false);});
		
	http_request.open('GET', url, true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.setRequestHeader('Content-length', '0');
	http_request.send(null);
}

function editMenuLabelExecute(display_confirm) 
{
	if (http_request.readyState == 4) 
	{
	    if (http_request.status == 200) 
	    {
	    	if(!checkSessionTimeout(http_request.responseText))
	    		return;
	    	
	    	if(display_confirm)
	    	{
          if(http_request.responseText.indexOf('ultilanguage label edit sucessful') > 0)
          {
            openMessageBox('Label Edit', 'Multilanguage label edited successfully.', 1700);
            closeLE();
          }
          else if (http_request.responseText.indexOf('abel edit sucessful') > 0)
          {
            openMessageBox('Label Edit', 'Label edited successfully.', 1700);
            closeLE();
          }
          else
          {
            openMessageBox('Label Edit', 'Error editing label.', 1700);
          }
        }
	    } 
	    else 
	    {
		openMessageBox('Server Error', 'There was a problem with the request.', 1700);
	    }
	}

}

function openMenuLabelEdit(id_lbl, id_ipt, obj_ref)
{
	document.getElementById(id_lbl).style.display = "none";
	document.getElementById(id_ipt).style.display = "block";
	document.getElementById(id_ipt).focus();

	obj_ref.style.display = "none";
}

function closeMenuLabelEdit(id_title, id_mas, id_input, id_asp_lbl)
{
	document.getElementById(id_title).innerHTML = document.getElementById(id_input).value;
	document.getElementById(id_input).style.display = "none";
	document.getElementById(id_mas).style.display = "block";

	editMenuLabelRequest(id_asp_lbl, document.getElementById(id_input).value);
}

function minMaxMenu(obj_sp, obj_name, obj_ref)
{
	var obj = document.getElementById(obj_sp);
	var contentObj = document.getElementById(obj_name);

	if(obj.style.backgroundImage.indexOf('maximize.gif') != -1)
	{
		if(parseInt(contentObj.offsetHeight) < menuArr[obj_name])
		{
			contentObj.style.height = parseInt(contentObj.offsetHeight) + 10;
			window.setTimeout("minMaxMenu('" + obj_sp + "', '" + obj_name + "', null)" ,45);
		}
		else
		{
			contentObj.style.height = menuArr[obj_name];
			obj.style.backgroundImage = "url('images/minimize.gif')";
		}
	}
	else
	{
		if(parseInt(contentObj.offsetHeight) > 1)
		{
			var newHeight = parseInt(contentObj.offsetHeight) - 10;
			
			if(newHeight < 2)
				newHeight = 1;
				
			contentObj.style.height = newHeight;
			window.setTimeout("minMaxMenu('" + obj_sp + "', '" + obj_name + "', null)" ,45);
		}
		else
		{
			contentObj.style.height = 1;
			obj.style.backgroundImage = "url('images/maximize.gif')";
		}
	}

	if(obj_ref)
		obj_ref.style.display = "none";
}

function stopPropagation(e)
{
	//e = e.event;
	e.stopPropagation? e.stopPropagation() : e.cancelBubble = true;
}

function addMenuObjs()
{
	addMenuObj('main-content-td', false);
	addMenuObj('invite-friend-td', false);
	addMenuObj('comm-stats-td', false);
	addMenuObj('my-stats-td', false);
	addMenuObj('status-td', true);
	addMenuObj('tags-td', true);
	addMenuObj('categories-td', false);
	addMenuObj('recent-entried-td', false);
	addMenuObj('active-discusions-td', false);
	addMenuObj('archive-td', false);
}

function addMenuObj(id, isClosed)
{
	var obj = document.getElementById(id);
	
	if(obj)
	{
		menuArr[id] = parseInt(obj.offsetHeight);
		
		if(isClosed)
			obj.style.height = 1;
	}
}

function loadWhiteout()
{
	var divWhiteout = document.createElement('div');
	divWhiteout.setAttribute('id', 'popup_whiteout');
	divWhiteout.style.backgroundColor = '#FFFFFF';
	divWhiteout.style.filter = 'alpha(opacity=80)';
	divWhiteout.style.opacity = '0.8';
	divWhiteout.style.zIndex = '500';
	divWhiteout.style.display = 'none';
	divWhiteout.style.position = 'absolute';
	divWhiteout.style.top = '0px';
	divWhiteout.style.left = '0px';
	divWhiteout.style.width = '100%';
	document.body.appendChild(divWhiteout);
}

function openWhiteout()
{
	var windowSize = getWindowSize();
	var bodyHeight = document.getElementById("body_div").offsetHeight;
	var bodyWidth = document.getElementsByTagName("body")[0].offsetWidth;
	var divWhiteout = document.getElementById('popup_whiteout');
	
	if(bodyHeight < windowSize[1])
		bodyHeight = windowSize[1];
	
	divWhiteout.style.display = "block";
	divWhiteout.style.height = (bodyHeight) + 'px';
}

function closeWhiteout()
{
	document.getElementById('popup_whiteout').style.display = "none";
}

function getScrollXY()
{
	var scrOfX = 0, scrOfY = 0;
	
	if( typeof( window.pageYOffset ) == 'number' )
	{
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	}
	else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) )
	{
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	}
	else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) )
	{
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	
	return [ scrOfX, scrOfY ];
}

function getWindowSize()
{
	var myWidth = 0, myHeight = 0;
	if( typeof( window.innerWidth ) == 'number' )
	{
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	}
	else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
	{
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	}
	else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
	{
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}

	return [myWidth, myHeight];
}

function openMessageBox(title, message, displayTime, openWhiteout_)
{
	var genMessPopup = document.getElementById('gen_message_popup');

	var windowSize = getWindowSize();
	var halfBodyWidth = windowSize[0]/2;
	var scroll = getScrollXY();
	genMessPopup.style.left = (halfBodyWidth - 200) + 'px';
	genMessPopup.style.top = (scroll[1] + 215) + 'px';

	document.getElementById("gen_mess_title").innerHTML = title;
	document.getElementById("gen_mess_message").innerHTML = message;

	genMessPopup.style.display = "block";
	genMessPopup.style.opacity = 1.0;
	genMessPopup.style.filter = "alpha(opacity=100)";
	genMessPopup.title=title;

	if(displayTime)
		window.setTimeout("closeMessageBox()", displayTime);
		
	if(openWhiteout_)
		openWhiteout();
}

function closeMessageBox()
{
	var genMessPopup = document.getElementById('gen_message_popup');
	var opacity = genMessPopup.style.opacity;

	if(opacity > 0.0)
	{
		var newOpacity = opacity - 0.1;
		genMessPopup.style.opacity = newOpacity;
		genMessPopup.style.filter = "alpha(opacity=" + (newOpacity*100) + ")";

		window.setTimeout("closeMessageBox()", 35);
	}
	else
	{
		closeWhiteout();
		genMessPopup.style.display = "none";
	}
}

function appendOnLoad(func)
{
	var old_func = window.onload;

	if(old_func)
	{
		window.onload = function()
				{
					old_func();
					func();
				}
	}
	else
		window.onload = func;
}

function appendOnClick(func)
{
	var old_func = document.body.onclick;

	if(old_func)
	{
		document.body.onclick = function()
					{
						old_func();
						func();
					}
	}
	else
		document.body.onclick = func;
}

function checkSessionTimeout(returnText)
{
	if(returnText)
	{
		var redirect_arr = returnText.split(": ");
		
		if(redirect_arr[0] == "Session Timeout")
		{
			window.location = redirect_arr[1];
			return false;
		}
	}
	
	return true;
}

function openSendMessage(user_id, reply_message_id, user_screen_name)
{
	openMessageBox('Send Private Message', "<table width='100%' cellpadding='0' cellspacing='5'> <tr> <td> To: </td> <td align='right'> <input type='hidden' id='private_message_user_id' value='" + user_id + "'> <input type='hidden' id='private_message_reply_id' value='" + reply_message_id + "'> <input class='input_box_readonly' type='text' id='private_message_to' style='width:280px;' value='" + user_screen_name + "' readonly> </td> </tr> <tr> <td> Subject: </td> <td align='right'> <input class='input_box' type='text' id='private_message_subject' style='width:280px;'> </td> </tr> <tr> <td colspan='2'> <textarea class='input_box' style='width:100%; height:120px;' id='private_message_message' onKeyUp=\"requireInput(this, 'private_message_send_button');\"></textarea> </td> </tr> <tr> <td colspan='2' align='right'> <button type='button' id='private_message_send_button' onClick='sendPrivateMessageRequest();' disabled>Send</button>&nbsp;<button type='button' onClick='closeMessageBox();'>Cancel</button> </td> </tr> </table>", null, true);
	document.getElementById('private_message_subject').focus();
}

function sendPrivateMessageRequest()
{
	var call_parameters = {
				 'to_member_id':document.getElementById('private_message_user_id').value
				,'reply_message_id':document.getElementById('private_message_reply_id').value
				,'subject':document.getElementById('private_message_subject').value
				,'message':document.getElementById('private_message_message').value
				};
	
	BI.ajax_call('ct_xt_send_private_message.bix?c=' + campaign_id, 'POST', call_parameters, sendPrivateMessageExecute);
}

function sendPrivateMessageExecute(response_)
{	
	openMessageBox('Send Private Message', response_.responseText, 1700);
}

function requireInput(input_obj_, button_id_)
{
	if(input_obj_.value.length > 0)
		document.getElementById(button_id_).disabled = false;
	else
		document.getElementById(button_id_).disabled = true;
}

function closeLE() {
  var le_popup = document.getElementById('label_editor_popup');
  var gen_flyover = document.getElementById('gen_flyover');
  if(tGF) clearTimeout(tGF);
  if ( le_popup ) le_popup.style.display = 'none';
  if ( gen_flyover ) gen_flyover.style.display = 'none';
}

function labelEditorCancelHandler(event){
  if (!event) event = window.event
  if (event.target) {
    if (event.target.nodeType == 3) event.target = event.target.parentNode
  } else if (event.srcElement) {
    event.target = event.srcElement
  }
  switch(event.charCode || event.keyCode) {
    case 27:
      closeLE();
      return false;
      break;
  }
  return true;
}

function closeLEOnEsc() {
  document.onKeyPress = labelEditorCancelHandler;
  document.onkeypress = labelEditorCancelHandler;
}
function appendOnKeyPress(func)
{
	var old_func = document.body.onkeypress;

	if(old_func)
	{
		document.body.onkeypress = function()
					{
						old_func();
						func();
					}
	}
	else
		document.body.onkeypress = func;
}
function appendOnMouseMove(func)
{
	var old_func = document.body.onmousemove;

	if(old_func)
	{
		document.body.onmousemove = function()
					{
						old_func();
						func();
					}
	}
	else
		document.body.onmousemove = func;
}	
appendOnLoad(addMenuObjs);
appendOnLoad(loadWhiteout);
appendOnLoad(closeLEOnEsc);
