/**
 * COMMON DHTML FUNCTIONS
 * These are handy functions I use all the time.
 *
 * By Seth Banks (webmaster at subimage dot com)
 * http://www.subimage.com/
 *
 * Up to date code can be found at http://www.subimage.com/dhtml/
 *
 * This code is free for you to use anywhere, just keep this comment block.
 */

/**
 * X-browser event handler attachment and detachment
 * TH: Switched first true to false per http://www.onlinetools.org/articles/unobtrusivejavascript/chapter4.html
 *
 * @argument obj - the object to attach event to
 * @argument evType - name of the event - DONT ADD "on", pass only "mouseover", etc
 * @argument fn - function to call
 */
/*
// subModal.js implementation
function addEvent(obj, evType, fn){
 if (obj.addEventListener){
    obj.addEventListener(evType, fn, false);
    return true;
 } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
 } else {
    return false;
 }
}
*/

function addEvent(obj,evType,fn,useCapture)
{
  if( obj.addEventListener ){
    obj.addEventListener(evType,fn,useCapture);
    return true;
  }
  if( obj.attachEvent ){
    return obj.attachEvent("on"+evType,fn);
  }
  alert("Unable to add event listener for "+evType+ " to "+obj.tagName);
}




function removeEvent(obj, evType, fn, useCapture){
  if (obj.removeEventListener){
    obj.removeEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.detachEvent){
    var r = obj.detachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be removed");
  }
}

/**
 * Code below taken from - http://www.evolt.org/article/document_body_doctype_switching_and_more/17/30655/
 *
 * Modified 4/22/04 to work with Opera/Moz (by webmaster at subimage dot com)
 *
 * Gets the full width/height because it's different for most browsers.
 */
function getViewportHeight() {
	if (window.innerHeight!=window.undefined) return window.innerHeight;
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientHeight;
	if (document.body) return document.body.clientHeight; 
	return window.undefined; 
}
function getViewportWidth() {
	if (window.innerWidth!=window.undefined) return window.innerWidth; 
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientWidth; 
	if (document.body) return document.body.clientWidth; 
	return window.undefined; 
}


// get radio button's value
function get_radio_value(ary)
{
  var checked_value = null;
  for(var i=0;i<ary.length;i++){
    if( ary[i].checked ){
      checked_value = ary[i].value;
    }
  }
  return checked_value;
}
// get select box's value
function get_select_value(element)
{
  return element.options[element.selectedIndex].value;
}

// set current time in editor.
function set_time()
{
  var date = new Date();
  var month = date.getMonth()+1;
  var day = date.getDate();
  var hour = date.getHours();
  var min = date.getMinutes();
  var sec = date.getSeconds();
  if( month<10 ){ month="0"+month; }
  if( day<10 ){ day="0"+day; }
  if( hour<10 ){ hour="0"+hour; }
  if( min<10 ){ min="0"+min; }
  if( sec<10 ){ sec="0"+sec; }
  var current_time = date.getFullYear()+"-"+month+"-"+day+" "+hour+":"+min+":"+sec;
  document.getElementById('updated_at').value = current_time;
}

/*
function Aquaize()
{
  AquaizeOnFocus = function(){
alert(this.id);
    this.style.border = "solid 3px #90b7d8;";
  }
  AquaizeOnBlur = function(){
    this.style.border = "solid 1px #000;";
  }

  inputs = document.getElementsByTagName('input');
  for(var i=0;i<inputs.length;i++){
//alert(document.getElementsByTagName('input').length);
    this.id="input_"+i;
    addEvent(inputs[i],"focus",AquaizeOnFocus,false);
    addEvent(inputs[i],"blur",AquaizeOnBlur,false);
  }
}
*/

function truncate(str,len)
{
  if( len==undefined ){
    len = 13;
  }
  if( str.length>len ){
//    return str.substring(0,len)+"...";
    return str.substr(0,len)+"...";
  }
  return str;
}

function GetJson(request)
{
  var xml = request.responseXML;
  var json = xml.getElementsByTagName('html_content')[0].firstChild.data;
  if( json.length==4096 ){ // FF
    json = request.responseText.split(/html_content>/);
    json = json[1];
    json = json.substring(0,json.length-2);
  }
  return json;
}


/////////////////// <!-- debug.js
function showTable(id)
{
  var str = document.getElementById(id).innerHTML;
  pat = new RegExp("<");
  while( str.match(pat) ){
    str = str.replace(pat,"&lt;");
  }
  pat = new RegExp(">");
  while( str.match(pat) ){
    str = str.replace(pat,"&gt;");
  }
  document.getElementById('debug').innerHTML = str;
}

function setClipboard(str)
{
  if( window.clipboardData ){ // IE
    window.clipboardData.setData("text",str);
  }else{ // FF
    var url = [
      'data:text/html;charset=utf-8;base64,PGJvZHk+PC9ib2',
      'R5PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKGZ1',
      'bmN0aW9uKGVuY29kZWQpe3ZhciBzd2ZfZGF0YSA9IFsKICdkYX',
      'RhOmFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoO2Jhc2U2',
      'NCxRMWRUQjJ3JywKICdBQUFCNG5EUGdZbGpBd01qSTRNejAlMk',
      'YlMkY5JTJGZTJaZkJnYUdhV3dNRE1uNUthJywKICdrTU10TjRH',
      'ZGdaZ1NJTXdaWEZKYW01UUFFJTJCQm9iaTFCTG5uTXlDcFB6RW',
      '9oU0dJJywKICdQRnAlMkZBeHNEREJRa3BGWkRGUUZGQ2d1eVM4',
      'QXlqSTRBRVVCaXkwVndBJTNEJTNEJwpdLmpvaW4oIiIpOwpkb2',
      'N1bWVudC5ib2R5LmlubmVySFRNTCA9IFsKICc8ZW1iZWQgc3Jj',
      'PSInLHN3Zl9kYXRhLCciICcsCiAnRmxhc2hWYXJzPSJjb2RlPS',
      'csZW5jb2RlZCwnIj4nLAogJzwvZW1iZWQ+JwpdLmpvaW4oIiIp',
      'Owp9KSgi',
      base64encode( encodeURIComponent(str) + '")</'+'script>')
    ].join("");
    var tmp = document.createElement("div");
    tmp.innerHTML = [
      '<iframe src="',url,'"'
      ,' width="0" height="0">'
      ,'</iframe>'
    ].join("");
    with(tmp.style){
      position ="absolute";
     left = "-10px";
     top  = "-10px";
     visibility = "hidden";
    };
    document.body.appendChild(tmp);
    setTimeout(function(){document.body.removeChild(tmp)},1000);
  }
}

// need for  clipboard
function base64encode(str){
  var Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");
  var c1, c2, c3;
  var buf = [];
  var len = str.length;
  var i = 0;
  while(i < len){
    c1 = str.charCodeAt(i) & 0xff;
    c2 = str.charCodeAt(i+1);
    c3 = str.charCodeAt(i+2);
    buf.push(Chars[(c1 >> 2)]);
    if(i+1 == len){
      buf.push(Chars[(c1 & 0x3) << 4],"==");
      break;
    }
    buf.push(Chars[((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)]);
    if(i+2 == len){
      buf.push(Chars[(c2 & 0xF) << 2],"=");
      break;
    }
    buf.push(
      Chars[((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6)],
      Chars[(c3 & 0x3F)]
    );
    i+=3;
  }
  return buf.join("")
}

function setClipboard(str)
{
  if( window.clipboardData ){ // IE
    window.clipboardData.setData("text",str);
  }else{ // FF
    var url = [
      'data:text/html;charset=utf-8;base64,PGJvZHk+PC9ib2',
      'R5PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKGZ1',
      'bmN0aW9uKGVuY29kZWQpe3ZhciBzd2ZfZGF0YSA9IFsKICdkYX',
      'RhOmFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoO2Jhc2U2',
      'NCxRMWRUQjJ3JywKICdBQUFCNG5EUGdZbGpBd01qSTRNejAlMk',
      'YlMkY5JTJGZTJaZkJnYUdhV3dNRE1uNUthJywKICdrTU10TjRH',
      'ZGdaZ1NJTXdaWEZKYW01UUFFJTJCQm9iaTFCTG5uTXlDcFB6RW',
      '9oU0dJJywKICdQRnAlMkZBeHNEREJRa3BGWkRGUUZGQ2d1eVM4',
      'QXlqSTRBRVVCaXkwVndBJTNEJTNEJwpdLmpvaW4oIiIpOwpkb2',
      'N1bWVudC5ib2R5LmlubmVySFRNTCA9IFsKICc8ZW1iZWQgc3Jj',
      'PSInLHN3Zl9kYXRhLCciICcsCiAnRmxhc2hWYXJzPSJjb2RlPS',
      'csZW5jb2RlZCwnIj4nLAogJzwvZW1iZWQ+JwpdLmpvaW4oIiIp',
      'Owp9KSgi',
      base64encode( encodeURIComponent(str) + '")</'+'script>')
    ].join("");
    var tmp = document.createElement("div");
    tmp.innerHTML = [
      '<iframe src="',url,'"'
      ,' width="0" height="0">'
      ,'</iframe>'
    ].join("");
    with(tmp.style){
      position ="absolute";
     left = "-10px";
     top  = "-10px";
     visibility = "hidden";
    };
    document.body.appendChild(tmp);
    setTimeout(function(){document.body.removeChild(tmp)},1000);
  }
}
//////////////////////////// debug.js -->
function toggle_class(obj)
{
//  this.className += "hi";
//alert(obj.nodeName+":"+obj.parentNode.nodeName);
//alert(obj.className+":"+obj.parentNode.className);
//alert(Element.hasClassName(obj,'CLICKABLE')+":"+Element.hasClassName(obj.parentNode,'CLICKABLE'));
  var i=0;
  while( !Element.hasClassName(obj,'CLICKABLE') ){
//alert("[toggle_class]nodeName="+obj.nodeName);
    obj = obj.parentNode;
    if( i++>5 ){ return; }
  }
  // $B$3$N(Belement$B$O!"(BCLICKABLE$B$J(Bclass
  if( Element.hasClassName(obj,'hi') ){
    Element.removeClassName(obj,'hi');
  }else{
    Element.addClassName(obj,'hi');
  }
//alert(obj.className);
/*
  if( obj.parentNode.nodeName.toUpperCase()=='TD' ){
    obj = obj.parentNode;
  }
  if( obj.nodeName.toUpperCase()=='TD' ){
    if( obj.className == 'hi' ){
      obj.className = '';
    }else{
      obj.className = 'hi';
    }
  }
*/

}

