 var ua=navigator.userAgent.toLowerCase(),
		is=function(t){ return ua.indexOf(t) != -1; },
		h=document.getElementsByTagName('html')[0],
		b=(!(/opera|webtv/i.test(ua))&&/msie (\d)/.test(ua))?('ie ie'+RegExp.$1):is('gecko/')? 'gecko':is('opera/9')?'opera opera9':/opera (\d)/.test(ua)?'opera opera'+RegExp.$1:is('konqueror')?'konqueror':is('applewebkit/')?'webkit safari':is('mozilla/')?'gecko':'',
		os=(is('x11')||is('linux'))?' linux':is('mac')?' mac':is('win')?' win':'';
	var c=b+os+' js';
	h.className += h.className?' '+c:c;
	
function submitOnReturn(evt) {
	var evt  = (evt) ? evt : ((event) ? event : null);
	var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
	if ((evt.keyCode == 13) && (node.type=="text")) { $('submit').click(); return false;}	
}
function checkUncheckAll(theElement) {
  var theForm = theElement.form, z = 0;
  for(z=0; z<theForm.length;z++) {
    if(theForm[z].type == 'checkbox' && theForm[z].name != 'checkall') {
      theForm[z].checked = theElement.checked;
    }
  }
}
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function ons_bind(obj, method) {
   var args = [];
   for(var ii = 2; ii < arguments.length; ii++) {
      args.push(arguments[ii]);
      }
   return function() {
      var _obj = obj || this;
      var _args = args.slice();
      for(var jj = 0; jj < arguments.length; jj++) {
         _args.push(arguments[jj]);
         }
      if(typeof(method) == "string") {
         if(_obj[method]) {
            return _obj[method].apply(_obj, _args);
            }
         }
      else {
         return method.apply(_obj, _args);
         }
      }
   }
Function.prototype.ons_bind = function(context) {
   var argv = [arguments[0], this];
   var argc = arguments.length;
   for(var ii = 1; ii < argc; ii++) {
      argv.push(arguments[ii]);
      }
   return ons_bind.apply(null, argv);
   }
function dd_menu(arrow, link, menu, event, arrow_class, arrow_old_class, on_click_callback, off_click_callback) {
   if(menu.style.display == 'none') {
      menu.style.display = 'block';
      var old_arrow_classname = arrow_old_class ? arrow_old_class : arrow.className;
      if(link) {
         link.className = 'active';
         }
      arrow.className = arrow_class ? arrow_class : 'sugar_menu_arrow_active';
      var justChanged = true;
      var shim = get_element(menu.id + '_iframe');
      if(shim) {
         shim.style.top = menu.style.top;
         shim.style.right = menu.style.right;
         shim.style.display = 'block';
         shim.style.width = (menu.offsetWidth + 2) + 'px';
         shim.style.height = (menu.offsetHeight + 2) + 'px';
         }
      menu.offclick = function(e) {
         if(!justChanged) {
            ons_hide(this);
            if(link) {
               link.className = '';
               }
            arrow.className = old_arrow_classname;
            var shim = get_element(menu.id + '_iframe');
            if(shim) {
               shim.style.display = 'none';
               shim.style.width = menu.offsetWidth + 'px';
               shim.style.height = menu.offsetHeight + 'px';
               }
            if(off_click_callback) {
               off_click_callback(e);
               }
            removeEventBase(document, 'click', this.offclick, menu.id);
            }
         else {
            justChanged = false;
            }
         }.ons_bind(menu);
      if(on_click_callback) {
         on_click_callback();
         }
      addEventBase(document, 'click', menu.offclick, menu.id);
      }
   return false;
   }
function get_element(id) {
   if(typeof(id) == 'undefined') {
      Util.error('Tried to get an undefined element!');
      return null;
      }
   var obj;
   if(typeof(id) == 'string') {
      obj = document.getElementById(id);
      if(!(spi_ua.ie() >= 7)) {
         return obj;
         }
      if(!obj) {
         return null;
         }
      else if(typeof(obj.id) == 'string' && obj.id == id) {
         return obj;
         }
      else {
         var candidates = document.getElementsByName(id);
         if(!candidates ||!candidates.length) {
            return null;
            }
         var maybe = [];
         for(var ii = 0; ii < candidates.length; ii++) {
            var c = candidates[ii];
            if(!c.id && id) {
               continue;
               }
            if(typeof(c.id) == 'string' && c.id != id) {
               continue;
               }
            maybe.push(candidates[ii]);
            }
         if(maybe.length != 1) {
            return null;
            }
         return maybe[0];
         }
      }
   else {
      return id;
      }
   return null;
   }
function addEventBase(obj, type, fn, name_hash) {
   if(obj.addEventListener)obj.addEventListener(type, fn, false);
   else if(obj.attachEvent) {
      obj["e" + type + fn + name_hash] = fn;
      obj[type + fn + name_hash] = function() {
         obj["e" + type + fn + name_hash](window.event);
         }
      obj.attachEvent("on" + type, obj[type + fn + name_hash]);
      }
   }
function ons_hide() {
   for(var i = 0; i < arguments.length; i++) {
      var element = get_element(arguments[i]);
      if(element && element.style)element.style.display = 'none';
      }
   return false;
   }
function removeEventBase(obj, type, fn, name_hash) {
   if(obj.removeEventListener)obj.removeEventListener(type, fn, false);
   else if(obj.detachEvent) {
      obj.detachEvent("on" + type, obj[type + fn + name_hash]);
      obj[type + fn + name_hash] = null;
      obj["e" + type + fn + name_hash] = null;
      }
   }
var spi_ua={ie:function(){return this._ie;},firefox:function(){return this._firefox;},opera:function(){return this._opera;},safari:function(){return this._safari;},windows:function(){return this._windows;},osx:function(){return this._osx;},populate:function(){var agent=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso).(\d+\.\d+))|(?:Opera.(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))/.exec(navigator.userAgent);var os=/(Mac OS X;)|(Windows;)/.exec(navigator.userAgent);if(agent){spi_ua._ie=agent[1]?parseFloat(agent[1]):NaN;spi_ua._firefox=agent[2]?parseFloat(agent[2]):NaN;spi_ua._opera=agent[3]?parseFloat(agent[3]):NaN;spi_ua._safari=agent[4]?parseFloat(agent[4]):NaN;}else{spi_ua._ie=spi_ua._firefox=spi_ua._opera=spi_ua._safari=NaN;}}}

function onsugarAjax(url, ajaxFunction, params) {
    var xmlHttpReq;
    
    // IE
    if (window.ActiveXObject) {
        xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");    
    }
    // Mozilla/Safari
    else {
        xmlHttpReq = new XMLHttpRequest();
        xmlHttpReq.overrideMimeType('text/xml');
    }

    xmlHttpReq.open('POST', url, true);
    xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlHttpReq.onreadystatechange = function() {
        if (xmlHttpReq.readyState == 4) {
            ajaxFunction.call(null, xmlHttpReq.responseText);      
        }
    }
    xmlHttpReq.send(params);
}

//The expected return from the PHP is a JSON object with two fields - a "container" to place the output into, and the "output" HTML blob.
function triggerAjaxReplace(url, container) {
    var params = 'container='+container;
    onsugarAjax(url, function(response) {
        var containerEl = document.getElementById(container);
        if(containerEl) {
            containerEl.innerHTML = response;
        }
    }, params);
}

function onsugarInitSlideKeys() {
    var event = 'keydown';
    var handler = onsugarSlideHandleKeyPress;
    if (document.addEventListener) {
        document.addEventListener(event, handler, false);
    } else {
        document.attachEvent('on' + event, handler);
        // Internet Explorer needs to remove event handlers on page unload
        // in order to avoid memory leaks.
        if (window.attachEvent) {
            window.attachEvent("onunload", function() {
                document.detachEvent('on' + event, handler);            
            });
        }
    }
}

function onsugarSlideHandleKeyPress(e) {
    var target;
	if (!e) {
	    var e = window.event;
	}
	if (e.target) {
	    target = e.target;
	}
	else if (e.srcElement) {
	    target = e.srcElement;
	}
	if (target.nodeType == 3) { // defeat Safari bug
		target = target.parentNode;
    }
    if(!(target.tagName == 'INPUT' || target.tagName == 'TEXTAREA')) {
        KEY_RIGHT = 39;
        KEY_LEFT = 37;
        var slide_next = document.getElementById('slide_next');
        var slide_previous = document.getElementById('slide_previous');
    
        var key = e.which || e.keyCode;
        switch (key) {
            case KEY_RIGHT:
                 if(slide_next) {
                     window.location = slide_next.href;
                 }
                 break;
            case KEY_LEFT:
                 if(slide_previous) {
                     window.location = slide_previous.href;
                 }
                 break;
        }
    }
}

function onsugarAddImage(textareaId) {
    var editor = document.getElementById('image_assist_link');
    if (editor) {
        document.mediaAssistTextAreaId = textareaId;
        $(editor).fire('modal:overlay');
    }
}

function onsugarTextEditorInsertHtml(html) {
    if (tinyMCE.activeEditor && tinyMCE.activeEditor.selection) {
        tinyMCE.activeEditor.selection.moveToBookmark(tinyMCE.activeEditor.windowManager.bookmark);
        tinyMCE.execCommand('mceInsertContent', false, html);
    }
    else if (document.mediaAssistTextAreaId) {
        var textarea = document.getElementById(document.mediaAssistTextAreaId);
        doInsertToEditor(html, document, textarea, false);
    }
}
