﻿/**
 * Custom UI and Ajax helpers
 */
var Common = {};
Common.showAjaxActivity = function(elementId) {
  var indicator = $get(elementId);
  if (indicator) {
    indicator.style.display = 'block';
  }
};
Common.hideAjaxActivity = function(elementId) {
  var indicator = $get(elementId);
  if (indicator) {
    indicator.style.display = 'none';
  }
};

Common.swapIconOnOff = function(element) {
  if(element) {
    var origMode = element.src.substring(element.src.indexOf('_') + 1).replace(".gif", ""); 
    if(origMode == "choose")
         Common.markAvailableImageButton(element);       
    else
        Common.markChosenImageButton(element);
  }
  
};

Common.markChosenImageButton = function(element) {
  if(element) {
    var origMode = element.src.substring(element.src.indexOf('_') + 1).replace(".gif", ""); 
    element.src = element.src.replace(origMode, "choose");    
    element.setAttribute("onmouseover", "this.src='" + element.src.replace("over", "choose") + "';");
    element.setAttribute("onmouseout", "this.src='" + element.src.replace("out", "choose") + "';");
    //element.disabled = true;    
  }
};
Common.markAvailableImageButton = function(element) {
  if(element) {
    var origMode = element.src.substring(element.src.indexOf('_') + 1).replace(".gif", ""); 
    element.src = element.src.replace(origMode, "basic");    
    
    if (Common.isIE()) {
        var out = element.src;
        var over = element.src.replace("basic", "over");
        element.onmouseover  = function() { this.src = over;  } 
        element.onmouseout = function() { this.src = out; }
    } else {
        element.setAttribute("onmouseover", "this.src='" + element.src.replace("basic", "over") + "';");
        element.setAttribute("onmouseout", "this.src='" + element.src + "';");
    } 
  }
};
Common.disableImageButton = function(elementId) {
  var button = document.getElementById(elementId);
  if(button) {
    var origMode = button.src.substring(button.src.indexOf('_') + 1).replace(".gif", ""); 
    button.src = button.src.replace(origMode, "closed");
    button.disabled = true;    
  }
};
Common.enableImageButton = function(elementId) {
 var button = document.getElementById(elementId);
  if(button) {
    var origMode = button.src.substring(button.src.indexOf('_') + 1).replace(".gif", ""); 
    button.src = button.src.replace(origMode, "basic");
    button.disabled = true;    
  }
};
Common.delayedPostBack = function (command, argument, timeout) {
  if (!timeout) {
    timeout = 0;
  }
  setTimeout('__doPostBack(\'' + command + '\',\'' + argument + '\')', timeout);
};

Common.shortenString = function(text, size) {
   if (text == null)
     return "";            
   else if (text.length < size)
     return text;
   else
     return text.substring(0, size) + "...";
};

/**
 * Because there was an issue with this function while placed at MasterPage
 * (Telerik sometimes did not see this function)
 */
function focusTextarea() {
    var noteTextArea =  document.getElementById("NoteText");
    if (noteTextArea) {
      noteTextArea.focus();
    }
}

/**
 * DOM helpers
 */
Common.getElementsByClassName = function(classname, tag) {
 if(!tag) tag = "*";
 var anchs =  document.getElementsByTagName(tag);
 var total_anchs = anchs.length;
 var regexp = new RegExp('\\b' + classname + '\\b');
 var class_items = new Array()
 
 for(var i=0;i<total_anchs;i++) {
  var this_item = anchs[i];
  if(regexp.test(this_item.className)) {
   class_items.push(this_item);
  }
 }
  
 return class_items;
};
// version for iframe second content
Common.getElementsByClassName2 = function(classname, tag) {
 if(!tag) tag = "*";
 var anchs =  document.getElementById("ctl00_SecondContentIframe").contentDocument.getElementsByTagName(tag);
 var total_anchs = anchs.length;
 var regexp = new RegExp('\\b' + classname + '\\b');
 var class_items = new Array()
 
 for(var i=0;i<total_anchs;i++) {
  var this_item = anchs[i];
  if(regexp.test(this_item.className)) {
   class_items.push(this_item);
  }
 }
  
 return class_items;
};
Common.insertAfter = function(newElement, targetElement) {
  try {
    var parent = targetElement.parentNode;
    if(parent.lastchild == targetElement) {
      parent.appendChild(newElement);
    }
    else {
      parent.insertBefore(newElement, targetElement.nextSibling);
    }
  }
  catch(e) {
    Common.displayException("insert", e);
  }
};

/**
 * Debug helpers
 */
Common.displayException = function(message, exception) {
  var sb = new Sys.StringBuilder("JavaScript " + exception.name + " Exception\n");
  sb.append("------------------------------------------------------------------------------\n");
  sb.append("Method: " + message + "\n");
  var description = exception.description;
  if (exception instanceof TypeError) {
    description = "Type of a variable is not as expected";
  }
  else if (exception instanceof SyntaxError) {
    description = "Syntax error occurs while parsing code";
  }
  else if (exception instanceof ReferenceError) {
    description = "Invalid reference is used";
  }
  else if (exception instanceof RangeError) {
    description = "Numeric variable exceeds its allowed range";
  }
  else if (exception instanceof EvalError) {
    description = "eval() functions is used in an incorrect manner";
  }        
  sb.append("Description: " + description + "\n");
        
  alert(sb.toString());
};
Common.isIE = function () {
    return /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent);
};

/**
 * Helper for creating Guid
 */ 
var Guid = {};
Guid.newGuid = function() {
  var sb = new Sys.StringBuilder(this._getRandomHex());
  sb.append(this._getRandomHex());
  sb.append("-");
  sb.append(this._getRandomHex());
  sb.append("-");
  sb.append(this._getRandomHex());
  sb.append("-");
  sb.append(this._getRandomHex());
  sb.append("-");
  sb.append(this._getRandomHex());
  sb.append(this._getRandomHex());
  sb.append(this._getRandomHex());

  return sb.toString();
};
Guid._getRandomHex = function() {
  return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1).toLowerCase();
};