home *** CD-ROM | disk | FTP | other *** search
/ old.mactech.com / old.mactech.com.tar / old.mactech.com / commnews-js / engine.js
Text File  |  2005-12-29  |  7KB  |  217 lines

  1. function SetCookie(cookieName, cookieData) {
  2.     var expires = new Date ();
  3.     expires.setTime(expires.getTime() + 31 * (24 * 60 * 60 * 1000));
  4.     document.cookie = cookieName + "=" + escape(cookieData) + "; expires=" + expires.toGMTString();
  5.  
  6. function GetCookie(name) {
  7.     var dc = document.cookie;
  8.     var prefix = name + "=";
  9.     var begin = dc.indexOf("; " + prefix);
  10.     if (begin == -1)
  11.     {
  12.         begin = dc.indexOf(prefix);
  13.         if (begin != 0) return null;
  14.     }
  15.     else
  16.     {
  17.         begin += 2;
  18.     }
  19.     var end = document.cookie.indexOf(";", begin);
  20.     if (end == -1)
  21.     {
  22.         end = dc.length;
  23.     }
  24.     return unescape(dc.substring(begin + prefix.length, end));
  25. }
  26.  
  27. // Custom Event Handling
  28. document.onclick = EVT_Click;
  29.  
  30. function EVT_Click(evt) {
  31.     evt = (evt) ? evt : ((window.event) ? event : null ) ;
  32.     var target = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null ) ;
  33.     OBJ_Click(target) ;
  34.     evt.cancelBubble ;
  35. }
  36.  
  37. function OBJ_Click(target) {
  38.     if (target.id) {
  39.         ObjectID = target.id ;
  40.         ObjectType = ObjectID.substring(0,5) ;
  41.         ObjectNyyum = ObjectID.substring(6,38) ; // Asumption that len(number)<20 ... 
  42.         switch(ObjectType) {
  43.         case 'TITLE' :
  44.             ItemId = getItemId(target) ;
  45.             ItemShowHide(ItemId) ;
  46.             return ;
  47.             break ;
  48.         case 'IMARK' :
  49.             ItemId = getItemId(target) ;
  50.             setMark(ItemId) ;
  51.             return ;
  52.         default:
  53.             break ;
  54.         }
  55.     }
  56.     if (!target.parentNode) {
  57.         return ;
  58.     } else {
  59.         OBJ_Click(target.parentNode) ;    
  60.     }
  61. }
  62.  
  63. function Obj_findStyleValue(target,styleProp, IEStyleProp) {
  64.     if (target.currentStyle) return target.currentStyle[ IEStyleProp ] ;
  65.     else if (window.getComputedStyle) {
  66.         compStyle = window.getComputedStyle(target,'') ;
  67.         return compStyle.getPropertyValue(styleProp) ;
  68.     }
  69. }
  70.  
  71. function getItemId(obj) {
  72.     if (obj.id && obj.id.substring(0,5)=='IITEM' ) {
  73.         return obj.id.substring(6,38) ;
  74.     }
  75.     if (!obj.parentNode) return null;
  76.     return getItemId(obj.parentNode) ;
  77. }
  78. function ItemShowHide(id) {
  79.     var item = document.getElementById('IITEM-'+id) ;
  80.     var i ;
  81.     for (i=0; i<item.childNodes.length; i++)
  82.     if (item.childNodes[i].id && item.childNodes[i].id.substring(0,5)=='ICONT') {
  83.         content = item.childNodes[i] ;
  84.         break ;
  85.     }
  86.     status =  Obj_findStyleValue(content,'display','display')  ;
  87.     if (status!='block') {
  88.         content.style['display'] = 'block' ;
  89.         item.style['background'] = Obj_findStyleValue(document.getElementById('c2'),'color','color') ;
  90.     } else {
  91.         content.style['display'] = 'none' ;
  92.         item.style['background'] = Obj_findStyleValue(document.getElementById('c1'),'color','color') ;
  93.     }
  94. }
  95. function getMarkObj(element) {
  96.     var i ;
  97.     if (!element) return null ;
  98.     if (element.id && element.id.substring(0,5)=='IMARK') return element ;
  99.     if (!element.childNodes) return null ;
  100.  
  101.     for (i=0; i<element.childNodes.length; i++) {
  102.         itm = getMarkObj(element.childNodes[i]) ;
  103.         if (itm) return itm ;
  104.     }
  105. }
  106. function getMarkById(id) {
  107.     var item = document.getElementById('IITEM-'+id) ;
  108.     return getMarkObj(item) ;
  109. }
  110. function setMark(id) {
  111.     var item ;
  112.     if (!markID) { markID=id ; }
  113.     if (item = getMarkById(markID) ) {
  114.         item.setAttribute( 'src', './commnews-i/mark_off.gif' );
  115.     }
  116.     if (item = getMarkById(id) ) {
  117.         item.setAttribute( 'src', './commnews-i/mark_on.gif' );
  118.     }
  119.     markID = id ;
  120.     SetCookie('mark', markID) ;
  121. }
  122. function SourcesSetShowHide(show) {
  123.     var item = document.getElementById('sources') ;
  124.     if (show) {
  125.         item.style['display'] = 'block' ;
  126.     } else {
  127.         item.style['display'] = 'none' ;
  128.     }
  129. }
  130.  
  131.  
  132. function ItemSetShowHide(id,show) {
  133.     var item = document.getElementById('IITEM-'+id) ;
  134.     var i ;
  135.     for (i=0; i<item.childNodes.length; i++)
  136.     if (item.childNodes[i].id && item.childNodes[i].id.substring(0,5)=='ICONT') {
  137.         content = item.childNodes[i] ;
  138.         break ;
  139.     }
  140.     if (show) {
  141.         content.style['display'] = 'block' ;
  142.         item.style['background'] = Obj_findStyleValue(document.getElementById('c2'),'color','color') ;
  143.     } else {
  144.         content.style['display'] = 'none' ;
  145.         item.style['background'] = Obj_findStyleValue(document.getElementById('c1'),'color','color') ;
  146.     }
  147. }
  148.  
  149. function visible_mode(display) {
  150.         var main = document.getElementById('main') ;
  151.         var i ;
  152.         var j ;
  153.         var items ;
  154.     var feed ;
  155.         for (i=0; i<main.childNodes.length; i++) {
  156.         feed = main.childNodes[i] ;
  157.                 for (j=0; j<feed.childNodes.length; j++) {
  158.                         if (feed.childNodes[j].id && feed.childNodes[j].id.substring(0,5)=='IITEM') {
  159.                                 itemID = feed.childNodes[j].id.substring(6,38) ;
  160.                                 ItemSetShowHide(itemID,display) ;
  161.                         }
  162.                 }
  163.     }
  164.         showDetails = display ;         SetCookie('showDetails', showDetails) ;
  165. }
  166.  
  167. /*
  168. function visible_mode(display) {
  169.         var main = document.getElementById('main') ;
  170.         var i ;
  171.         var j ;
  172.         var items ;
  173.         for (i=0; i<main.childNodes.length; i++) {
  174.                 items = main.childNodes[i] ;
  175.                 for (j=0; j<items.childNodes.length; j++) {
  176.                         if (items.childNodes[j].id && items.childNodes[j].id.substring(0,5)=='IITEM') {
  177.                                 itemID = items.childNodes[j].id.substring(6,38) ;
  178.                                 ItemSetShowHide(itemID,display) ;
  179.                         }
  180.                 }
  181.         }
  182.         showDetails = display ;         SetCookie('showDetails', showDetails) ;
  183. }
  184. */
  185.  
  186. function toggleStyle(StyleName) {
  187.     object = document.getElementById(StyleName) ;
  188.     if (object.disabled==true) object.disabled=false ;
  189.     else object.disabled=true;
  190. }
  191. function visible_mode_toggle() {
  192.     visible_mode(!showDetails) ;
  193. }
  194.  
  195. function deliciousPost(URL,title) {
  196.     delicious_username = GetCookie('delicious') ;
  197.     if (!delicious_username) {
  198.         window.open('commnews-set_delicious.php','delicious_set_username','toolbar=no,width=300,height=20,top=150,left=150') ;
  199.         // alert('username for del.icio.us is not set!') ;
  200.         return ;
  201.     }
  202.     q=URL;
  203.     p=title;
  204.     void(open('http://del.icio.us/'+delicious_username+'?v=2&noui=yes&jump=close&url='+encodeURIComponent(q)+'&title='+encodeURIComponent(p),'delicious', 'toolbar=no,width=700,height=250'));
  205. }
  206. function furlPost(URL,title) {
  207.     q=URL;
  208.     p=title;
  209.  
  210.     d=document;
  211.     t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');
  212.     void(furlit=window.open('http://www.furl.net/storeIt.jsp?t='+escape(title)+'&u='+escape(URL)+'&c='+escape(t),'furlit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));furlit.focus();
  213. }
  214.  
  215.  
  216.