jQuery.noConflict();
var $j = jQuery;


function doFind()
{
	
}

function doReplace()
{
	$j('#divReplacePrompt').modal();
	$j('#divReplacePrompt').keyup(keyup_prompt);
	$j('#btnReplaceTest').bind('click',click_btnReplaceTest);
	$j('#btnReplaceOk').bind('click',click_btnReplaceOk);
	$j('#btnReplaceCancel').bind('click',click_btnReplaceCancel);
	$j('#cbRegEx').bind('click',click_cbRegEx);
	$j('#txtFind').focus();
}

function click_cbRegEx()
{
	//$j('#cbIgnoreCase')[0].checked = false;
	//$j('#cbIgnoreCase')[0].disabled = !this.checked;
	//$j('#btnReplaceTest')[0].disabled = !this.checked;
}

function click_btnReplaceOk()
{
	var code = myCpWindow.getCode();
	var replace = $j('#txtReplace').val();
	var ignoreCase = ($j('#cbIgnoreCase:checked').length > 0);
	var useRegEx = ($j('#cbRegEx:checked').length > 0);
	
	var find = $j('#txtFind').val();
	if(!useRegEx) find = RegExp.escape(find);
	
	find = new RegExp(find,'gm' + (ignoreCase?'i':''));
	
	var newCode = code.replace(find,replace);
	
	myCpWindow.setCode(newCode);
	
	$j.modal.close();
}

function click_btnReplaceTest()
{
	var code = myCpWindow.getCode();
	var replace = $j('#txtReplace').val();
	var ignoreCase = ($j('#cbIgnoreCase:checked').length > 0);
	var useRegEx = ($j('#cbRegEx:checked').length > 0);
	
	var find = $j('#txtFind').val();
	if(!useRegEx) find = RegExp.escape(find);
	
	find = new RegExp(find,'gm' + (ignoreCase?'i':''));
	
	var matches = code.match(find,replace);
	var matchCount = 0;
	if(matches) matchCount = matches.length;
	
	$j('#lblReplaceMessage').text('Match count: ' + matchCount);
}

function click_btnReplaceOk()
{
	var code = myCpWindow.getCode();
	var replace = $j('#txtReplace').val();
	var ignoreCase = ($j('#cbIgnoreCase:checked').length > 0);
	var useRegEx = ($j('#cbRegEx:checked').length > 0);
	
	var find = $j('#txtFind').val();
	if(useRegEx) find = new RegExp(find,'gm' + (ignoreCase?'i':''));
	
	var newCode = code.replace(find,replace);
	
	myCpWindow.setCode(newCode);
	
	$j.modal.close();
}

function click_btnReplaceCancel()
{
	$j.modal.close();
}

RegExp.escape = function(text) {
  if (!arguments.callee.sRE) {
    var specials = [
      '/', '.', '*', '+', '?', '|',
      '(', ')', '[', ']', '{', '}', '\\'
    ];
    arguments.callee.sRE = new RegExp(
      '(\\' + specials.join('|\\') + ')', 'g'
    );
  }
  return text.replace(arguments.callee.sRE, '\\$1');
}

function changeLanguage()
{
	var language = this.innerHTML.replace(/c#/i,'csharp').toLowerCase();
	$j('.lnkLanguage').removeClass('selected');
	$j(this).addClass('selected');
	
	myCpWindow.edit(myCpWindow.getCode(),language);
}

function adjustHeightClose()
{
	$j.modal.close();
}

function keyup_prompt(event)
{
	if (event.keyCode == 27) {
        $j(this).find('.btnCancel').click();
        return false;
    } else if (event.keyCode == 13 & event.ctrlKey) {
        $j(this).find('.btnOK').click();
        return false;
    }
}

function adjustHeight()
{
	$j('#divAdjustHeightPrompt').modal();
	$j('#divAdjustHeightPrompt').keyup(keyup_prompt);
	$j('#btnAdjustHeightOk').bind('click',click_btnAdjustHeightOk);
	$j('#btnAdjustHeightCancel').bind('click',click_btnAdjustHeightCancel);
	$j('#txtHeight').focus();
}

function click_btnAdjustHeightOk()
{
	myCpWindow.style.height = $j('#txtHeight').val();
	adjustHeightClose();
}

function click_btnAdjustHeightCancel()
{
	adjustHeightClose();
}


$j(document).ready(function() {
	$j('ul.jd_menu').jdMenu({ showDelay: 50,activateDelay: 50 });
	
	//bind event handlers
	$j('#lnkFind').bind('click',doFind);
	$j('#lnkReplace').bind('click',doReplace);
	$j('.lnkLanguage').bind('click',changeLanguage);
	$j('#lnkAdjustHeight').bind('click',adjustHeight);
});

