var opera = (navigator.appName.indexOf("Opera") != -1) ? true : false;
var firefox = navigator.userAgent.toLowerCase(); 
    firefox = (firefox.indexOf("firefox") != -1) ? true : false;
var safari = navigator.userAgent.toLowerCase();
    safari = (safari.indexOf("safari") != -1) ? true : false;
var msie_only = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;
var msie_old = false; // MSIE versions older than 7
var msie_70  = false; // MSIE vesrion 7.0 or newer
var msie_60  = false; // only MSIE 6.0

if (msie_only) {
  fullVerStr = navigator.appVersion;
  verStr = fullVerStr.substring(fullVerStr.indexOf('MSIE')+4,fullVerStr.length);
  verStr = verStr.substring(0,verStr.indexOf(';'));
  msie_old = (parseFloat(verStr) <  7.0) ? true : false;
  msie_70  = (parseFloat(verStr) >= 7.0) ? true : false;
  msie_60  = (parseFloat(verStr) == 6.0) ? true : false;
}

function placeFlash(path, width, height, quality, loop) {
  var RandomNumber = Math.ceil(Math.random()*100000);
  var ObjectId = "eiuoa" + RandomNumber;
  var FlashObjectCode;

  FlashObjectCode = '<object id="' + ObjectId + '"  width="' + width + '" height="' + height + '" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0">\n';
  FlashObjectCode+= '<param name="quality" value="' + quality + '" />\n';
  FlashObjectCode+= '<param name="loop" value="' + loop + '" />\n';
  FlashObjectCode+= '<param name="wmode" value="opaque" />\n';
  FlashObjectCode+= '<param name="allowScriptAccess" value="sameDomain" />\n';
  FlashObjectCode+= '<embed src="' + path + '" quality="' + quality + '" width="' + width + '" height="' + height + '" menu="false" allowscriptaccess="sameDomain" wmode="opaque" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed>\n';
  FlashObjectCode+= '</object>\n';
  document.write(FlashObjectCode);
  document.getElementById(ObjectId).movie=path;
  //alert(FlashObjectCode);
}

function clearField (field_to_clear, initial_value) {
  if (initial_value == field_to_clear.value) field_to_clear.value="";
} 

function fillField (field_to_clear, initial_value) {
  if (field_to_clear.value == "") field_to_clear.value=initial_value;
}

//information box on validation image rollover
function validationInfo(operation, img_ref){
  if(operation == "show") {
    if (img_ref.alt.length > 0) img_ref.previousSibling.innerHTML = img_ref.alt;
    img_ref.alt = "";
    img_ref.previousSibling.style.display = "block";
  }
  if(operation == "hide") img_ref.previousSibling.style.display = "none";
}

//Limits length of text in textarea "element" (dom reference), writes information in "info" (id), counts characters
function checkLength(element, info, max_length){
  var actual_length = element.value.length;
  var characters_left = max_length - actual_length;
  if (characters_left < 0) characters_left = 0;

  if (actual_length == 0) {
    document.getElementById(info).innerHTML="Maximum text length is "+ max_length +" characters.";
  }
  if ((actual_length > 0)&&(actual_length <= max_length)) {
    document.getElementById(info).innerHTML="You may enter "+ characters_left +" more characters.";
  }
  if (actual_length > max_length) {
    element.value = element.value.substr(0, max_length);
    document.getElementById(info).innerHTML="You may enter "+ characters_left +" more characters.";
  }
}

//init a textarea, textarea_container - id, for charaacters limit
function initLengthInfo(textarea_container, info_id, max_length) {
  if (document.getElementById(textarea_container)) {
    element_ref = document.getElementById(textarea_container).getElementsByTagName("textarea")[0];
    checkLength(element_ref, info_id, max_length);
  }
}

//init up to max_number_of_textareas textareas with the same maximum number of characters
function initLengthInfoAll(max_number_of_textareas, max_number_of_characters) {
  for(var m=1; m<=max_number_of_textareas; m++) {
    if ((document.getElementById("ForJSTextarea" + m) != null) && (document.getElementById("LengthInfo" + m) != null)) {
      initLengthInfo("ForJSTextarea" + m, "LengthInfo" + m, max_number_of_characters);
    }
  }
}

//trims only spaces from the end of a string
function trim(text) {
  while (text.charAt(text.length - 1) == " ") {
    text = text.substr(0, (text.length - 1));
  }
  return (text);
}

//Limits length of text in textarea "element" (dom reference), writes information in "info" (id), counts words
function checkLengthWords(element, info, max_length){
  var text_trimmed = trim(element.value);
  var text_in_array = new Array();
  if (text_trimmed.length > 0) 
    text_in_array = text_trimmed.split(" ");
  var actual_length = text_in_array.length;
  var words_left = max_length - actual_length;
  if (words_left < 0) words_left = 0;

  if (actual_length == 0) {
    document.getElementById(info).innerHTML="Maximum text length is "+ max_length +" words.";
  }
  if ((actual_length > 0)&&(actual_length <= max_length)) {
    document.getElementById(info).innerHTML="You may enter "+ words_left +" more words.";
  }
  if (actual_length > max_length) {
    text_in_array = text_in_array.slice(0, max_length);
    element.value = text_in_array.join(" ") + " ";
    document.getElementById(info).innerHTML="You may enter "+ words_left +" more words.";
  }
}

//init a textarea, textarea_container - id, for words limit
function initLengthInfoWords(textarea_container, info_id, max_length) {
  if (document.getElementById(textarea_container)) {
    element_ref = document.getElementById(textarea_container).getElementsByTagName("textarea")[0];
    checkLengthWords(element_ref, info_id, max_length);
  }
}

//init up to max_number_of_textareas textareas with the same maximum number of characters
function initLengthInfoWordsAll(max_number_of_textareas, max_number_of_words) {
  for(var m=1; m<=max_number_of_textareas; m++) {
    if ((document.getElementById("ForJSTextarea" + m) != null) && (document.getElementById("LengthInfo" + m) != null)) {
      initLengthInfoWords("ForJSTextarea" + m, "LengthInfo" + m, max_number_of_words);
    }
  }
}

//for search panel
function clearSearchField (field_to_clear) {
  var tmp_obj = field_to_clear.previousSibling;
  tmp_obj=tmp_obj.previousSibling;
  var initial_value = tmp_obj.value;
  if (initial_value == field_to_clear.value) field_to_clear.value="";
} 

//for search panel
function fillSearchField (field_to_fill) {
  var tmp_obj = field_to_fill.previousSibling;
  tmp_obj=tmp_obj.previousSibling;
  var initial_value = tmp_obj.value;
  if (field_to_fill.value == "") field_to_fill.value=initial_value;
}

function __loadAction() {
  //empty
}

function __printPage(strUrl) {
  var newWindow = window.open(strUrl,"Print", "toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes,copyhistory=no,width=800,height=700");
}
	
function __popupPage(strUrl) {
  var newWindow = window.open(strUrl,"PopUp", "toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes,copyhistory=no,width=916,height=600,top=200,left=200");
}

function initMeasureHeadings(){
  $('.MeasureList').css('overflowX','hidden')

  $('.MeasureList li:not(li li)').click(function(){
    if($(this).find('ul').is(':hidden')){
      $(this).parent().find('ul').slideUp(300)
      $('.MeasureOpen').removeClass('MeasureOpen')
      $(this).addClass('MeasureOpen')
      $(this).find('ul').slideDown(300)
    }
    else{
      $(this).removeClass('MeasureOpen')
      $(this).find('ul').slideUp(300)
    }
  });
  
  $('.MeasureList li li').hover(function(){
    $(this).addClass('ListHover')
  }, function(){
    $(this).removeClass('ListHover')    
  });
}

function bindDrag() {
  var measure_value = '';
  var measure_parent ='';
  $(function() {
    $(".MeasureList ul li li")
		.bind("dragstart", function(event) {
		  measure_parent = $(this).parent().parent().find('span').html()
		  measure_value = $(this).html()
		  var $drag = $(this), $proxy = $drag.clone();
		  $drag.addClass("outline BeingDragged");
		  $drag.css("opacity", "0.5");
		  return $proxy.appendTo(document.body).addClass("ghost");
		})
		.bind("drag", function(event) {
		  $('.SelectedDiv').removeClass('SelectedDiv')
		  $(event.dragProxy).css({
		    position: "absolute",
		    cursor: "default",
		    zIndex: "1000",
		    left: event.offsetX,
		    top: event.offsetY,
		    opacity: "0.5",
		    fontSize: '1.2em',
		    listStyle: 'none'
		  });
		})
		.bind("dragend", function(event) {
		  $(event.dragProxy).fadeOut("normal", function() {
		    $(this).remove();
		  });
		  $(this).removeClass("outline");
		  $(this).css("opacity", "1");
		  bindSelectionMeasure()
		});
    $('.MeasureBlackBoard')
		.bind("dropstart", function(event) {
		event.stopPropogation()
		  if (this == event.dragTarget.parentNode) return false;
		  $(this).addClass("active");
		})
		.bind("drop", function(event) {
		  var ANDOR = '';
		  if($(this).find('div').length != 0 ){
		    ANDOR = '<span class="BindSelect ANDOR MeasureBold MeasureANDOR">AND</span>'
		  }
		  $(this).append(ANDOR + '<div><span class="BindSelect">' + measure_parent + '</span><span class="BindSelect SpanEquals MeasureBold">IS</span><span class="BindSelect">' + measure_value + '</span></div>')
		  $('.BeingDragged').removeClass('BeingDragged')
		})
		.bind("dropend", function(event) {
		  $(this).removeClass("active");
		});

  });
}

function bindSelectionMeasure(){
  $('.BindSelect').hover(function(){
    $(this).addClass('HoverSpan')
  },function(){
    $(this).removeClass('HoverSpan')
  });
  $('span.SpanEquals').click(function(){
    if($(this).html() == 'IS'){
    $(this).html('IS NOT')
    }
    else{
      $(this).html('IS')
    }
  });
  $('span.ANDOR').click(function(){
    if($(this).html() == 'AND'){
      $(this).html('OR')
    }
    else{
      $(this).html('AND')
    }
  });
  
//  $('.MeasureBlackBoard').unbind("dropstart")
//  $('.MeasureBlackBoard').unbind("drop")
//  $('.MeasureBlackBoard').unbind("dropend")
//  
//   $('.MeasureBlackBoard div')
//		.bind("dropstart", function(event) {
//		  alert('222')
//		  //event.stopPropogation()
//		  if (this == event.dragTarget.parentNode) return false;
//		  $(this).addClass(".HoverSpan");
//		})
//		.bind("drop", function(event) {
//		  //event.stopPropogation()
//		  var ANDOR = '';
//		  if($(this).find('div').length != 0 ){
//		    ANDOR = '<span class="BindSelect ANDOR MeasureBold MeasureANDOR">AND</span>'
//		  }
//		  $(this).parent().before(ANDOR + '<div><span class="BindSelect">' + measure_parent + '</span><span class="BindSelect SpanEquals MeasureBold">IS</span><span class="BindSelect">' + measure_value + '</span></div>')
//		  $('.BeingDragged').removeClass('BeingDragged')
//		})
//		.bind("dropend", function(event) {
//		  //event.stopPropogation()
//		  $(this).removeClass("active");
//		});
  
  
  
  $('.BindSelect').removeClass('BindSelect')
  $('.SpanEquals').removeClass('SpanEquals')
  $('.ANDOR').removeClass('ANDOR')
}


function deleteMeasure(){
  $('#MeasureMessage').html('Please select the measure you wish to delete')
  $('.MeasureBlackBoard div').click(function(){
    if($(this).find('.MeasureANDOR').length < 1){
      $(this).next('.MeasureANDOR').remove()
    }
    $(this).prev('.MeasureANDOR').remove()
    $(this).remove()

    $('.MeasureBlackBoard div').unbind('click')
    $('#MeasureMessage').empty()
  });
}

function groupMeasures(){
  $('#MeasureMessage').html('Please select one end of the group you wish to create.')
  $('.MeasureBlackBoard div').click(function(){
    $(this).addClass('BeginGroup')
    $('.MeasureBlackBoard div').unbind('click')
    endGroupMeasures()
  });
}
function endGroupMeasures(){
  $('#MeasureMessage').html('Please select the other end of the group you wish to create.')
  $('.MeasureBlackBoard div').click(function(){
    $(this).addClass('EndGroup')
    var html_check = $('.MeasureBlackBoard').html()
    if(html_check.indexOf('BeginGroup') < html_check.indexOf('EndGroup')){
      $('.BeginGroup').before('<span class="MeasureBold">{</span>')
      $('.EndGroup').after('<span class="MeasureBold">}</span>')
    }
    else{
      $('.EndGroup').before('<span class="MeasureBold">{</span>')
      $('.BeginGroup').after('<span class="MeasureBold">}</span>')    
    }
    $('.EndGroup').removeClass('EndGroup')
    $('.BeginGroup').removeClass('BeginGroup')
    $('.MeasureBlackBoard div').unbind('click')
    $('#MeasureMessage').empty()
  });
}

function createMeasureString(){
  var span_length = $('.MeasureBlackBoard span').length
  
  var raw_data = $('.MeasureBlackBoard').html()
  var new_str = ''
  for(var i = 0; i < span_length; i++){
    new_str = new_str + $('.MeasureBlackBoard span:eq(' + i + ')').html()
  }
  var fixed_str = new_str.replace(/IS NOT/g,' != ').replace(/IS/g,' == ').replace(/AND/g,' AND ').replace(/OR/g,' OR ').replace(/{/g,' { ').replace(/}/g,' } ')
  $('.MeasureHiddenField input').val(fixed_str)
//  alert(fixed_str)
}
