//Zibb Search
var selectedBucketType = '';

function doSearchStuff(){
	var i = 0;
	var searchField = document.getElementById('searchtext');

	switch (searchField.value)
	{
		case "":
		case "Enter Keywords":
			window.alert("Please enter a search term.");
			searchField.focus();
			return false;
	}
		for(i=0;i<3;i++){
		if(document.searchform.stype[i].checked == true){
			window.location.href  = '/search/' + document.searchform.stype[i].value +'?q=' + escape(document.searchform.q.value);
		}
	}	
	return false;
}

function trim(psText) 
{
	psText = psText.replace(/^[\s]+/g,"");
	psText = psText.replace(/[\s]+$/g,"");
	return psText;
}

function ss(w, id)
{
	window.status = w;
	return true;
}

function cs()
{
	window.status = "";
}

function jump(url)
{
	if (document.images && url)
	{
		if (arguments.length > 1)
		{
			type = arguments[1];
		}
		else
		{
			type = 'result';
		}
	
 		new Image().src = '/contents/images/_jump.gif?url=' + escape(url).replace(/\+/g, '%2B') + '&type=' + type;
	}
	
	return true;
}

// sample call: TimeToNowFrom('2006-03-20T22:00:20Z')
Date.prototype.setISO8601 = function (string) {
	var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
		"(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +
		"(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
	var d = string.match(new RegExp(regexp));

	var offset = 0;
	var date = new Date(d[1], 0, 1);

	if (d[3]) { date.setMonth(d[3] - 1); }
	if (d[5]) { date.setDate(d[5]); }
	if (d[7]) { date.setHours(d[7]); }
	if (d[8]) { date.setMinutes(d[8]); }
	if (d[10]) { date.setSeconds(d[10]); }
	if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); }
	if (d[14]) {
		offset = (Number(d[16]) * 60) + Number(d[17]);
		offset *= ((d[15] == '-') ? 1 : -1);
	}

//	offset -= date.getTimezoneOffset();
	time = (Number(date) + (offset * 60 * 1000));
	this.setTime(Number(time));
}

Date.prototype.toISO8601String = function (format, offset) {
	/* accepted values for the format [1-6]:
	 1 Year:
	   YYYY (eg 1997)
	 2 Year and month:
	   YYYY-MM (eg 1997-07)
	 3 Complete date:
	   YYYY-MM-DD (eg 1997-07-16)
	 4 Complete date plus hours and minutes:
	   YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00)
	 5 Complete date plus hours, minutes and seconds:
	   YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00)
	 6 Complete date plus hours, minutes, seconds and a decimal
	   fraction of a second
	   YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45+01:00)
	*/
	if (!format) { var format = 6; }
	if (!offset) {
		var offset = 'Z';
		var date = this;
	} else {
		var d = offset.match(/([-+])([0-9]{2}):([0-9]{2})/);
		var offsetnum = (Number(d[2]) * 60) + Number(d[3]);
		offsetnum *= ((d[1] == '-') ? -1 : 1);
		var date = new Date(Number(Number(this) + (offsetnum * 60000)));
	}

	var zeropad = function (num) { return ((num < 10) ? '0' : '') + num; }

	var str = "";
	str += date.getUTCFullYear();
	if (format > 1) { str += "-" + zeropad(date.getUTCMonth() + 1); }
	if (format > 2) { str += "-" + zeropad(date.getUTCDate()); }
	if (format > 3) {
		str += "T" + zeropad(date.getUTCHours()) +
			":" + zeropad(date.getUTCMinutes());
	}
	if (format > 5) {
		var secs = Number(date.getUTCSeconds() + "." +
			((date.getUTCMilliseconds() < 100) ? '0' : '') +
			zeropad(date.getUTCMilliseconds()));
		str += ":" + zeropad(secs);
	} else if (format > 4) { str += ":" + zeropad(date.getUTCSeconds()); }

	if (format > 3) { str += offset; }
	return str;
}

Date.prototype.getMonthName = function (abbreviated) {
	var monthName = '';
	switch (this.getMonth())
	{
		case 0:
			monthName = 'January';
			break;
		case 1:
			monthName = 'February';
			break;
		case 2:
			monthName = 'March';
			break;
		case 3:
			monthName = 'April';
			break;
		case 4:
			monthName = 'May';
			break;
		case 5:
			monthName = 'June';
			break;
		case 6:
			monthName = 'July';
			break;
		case 7:
			monthName = 'August';
			break;
		case 8:
			monthName = 'September';
			break;
		case 9:
			monthName = 'October';
			break;
		case 10:
			monthName = 'November';
			break;
		case 11:
			monthName = 'December';
			break;
	}

	if (abbreviated)
		monthName = monthName.substr(0, 3);

	return monthName;
}

Math.truncate = function (value)
{
	value = '' + value;
	var position = value.indexOf('.');

	if (position != -1)
		return value.substr(0, position);
	else
		return value;
}

function TimeToNowFrom(iso8601String)
{
	var output = '';

	var fromDate = new Date();
	fromDate.setISO8601(iso8601String);

	var currentDate = new Date();

	var difference = currentDate - fromDate;

	var seconds = (difference / 1000) % 60;
	var minutes = ((difference / 1000) / 60) % 60;
	var hours = (((difference / 1000) / 60) / 60) % 24;
	var days = ((((difference / 1000) / 60) / 60) / 24);

	seconds = Math.truncate(seconds);
	minutes = Math.truncate(minutes);
	hours = Math.truncate(hours);
	days = Math.truncate(days);

	/* test (for use in a browser)
	document.write('Current date: ' + currentDate.toISO8601String(5) + '<hr/>');
	document.write('Compare date: ' + fromDate.toISO8601String(5) + '<hr/>');
	document.write('Difference (days hours minutes seconds | difference): ' + days + ' ' + hours + ' ' + minutes + ' ' + seconds + ' | ' + difference + '<hr/>');
	*/

	if (difference > 0)
	{
		if (days > 0)
		{
			output = fromDate.getMonthName(true) + ' ' + fromDate.getDate() + ', ' + fromDate.getYear();
		}
		else
		{
			if (hours > 1)
				output += hours + ' hours ';
			else if (hours > 0)
				output += hours + ' hour ';

			if (minutes > 1)
				output += minutes + ' minutes ';
			else if (minutes > 0)
				output += minutes + ' minute ';

			output += 'ago';
		}
	}

	return output;
}

function google_ad_request_done(google_ads) {
    /*
     * This function is required and is used to display
     * the ads that are returned from the JavaScript
     * request. You should modify the document.write
     * commands so that the HTML they write out fits
     * with your desired ad layout.
     */
    var s = '';
    var i;

    /*
     * Verify that there are actually ads to display.
     */
    if (google_ads.length == 0) {
      return;
    }
    /*
     * If an image or Flash ad is returned, display that ad.
     * Otherwise, build a string containing all of the ads and
     * then use a document.write() command to print that string.
     */

    if (google_ads[0].type == "flash") {
      s += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' +
              ' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"' +
              ' WIDTH="' + google_ad.image_width +
              '" HEIGHT="' + google_ad.image_height + '">' +
              '<PARAM NAME="movie" VALUE="' + google_ad.image_url + '">' +
              '<PARAM NAME="quality" VALUE="high">' +
              '<PARAM NAME="AllowScriptAccess" VALUE="never">' +
              '<EMBED src="' + google_ad.image_url +
              '" WIDTH="' + google_ad.image_width +
              '" HEIGHT="' + google_ad.image_height + 
              '" TYPE="application/x-shockwave-flash"' + 
              ' AllowScriptAccess="never" ' + 
              ' PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED></OBJECT>';

    } else if (google_ads[0].type == "image") {
      s += '<a hre' + 'f=\"' + google_ads[0].url +
              '" target="_blank" title="go to ' + google_ads[0].visible_url +
              '"><img border="0" src="' + google_ads[0].image_url +
              '"width="' + google_ads[0].image_width +
              '"height="' + google_ads[0].image_height + '"></a>';

    } else {
      s += '<div id=\"google\"><div class=\"googlesponsor\"><a class="ad_attribution" href="'+google_info.feedback_url+'">Ads By Google</a></div>';
      if (google_ads.length == 1) {
        /*
         * Partners should adjust text sizes
         * so ads occupy the majority of ad space.
         */
        s += '<a hre' + 'f=\"' + google_ads[0].url + '" ' +
                          'target="_blank" ' + 
                          'onmouseout="window.status=\'\'" ' +
                          'onmouseover="window.status=\'go to ' +
                          google_ads[0].visible_url + '\'" ' +
                          'style="text-decoration:none">' +
                          '<div class=\"googlead\">' + google_ads[0].line1 + '</div>' +
						  '<div class=\"googleadtext\">' + google_ads[0].line2 + 
						  '&nbsp;' + google_ads[0].line3 + '</div>' +
                          '<div class=\"googleadurl\">' +
                          google_ads[0].visible_url + '</div></a></div>';
      } else if (google_ads.length > 1) {
        /*
         * For text ads, append each ad to the string.
         */
        for(i=0; i < google_ads.length; ++i) {
          s += '<a hre' + 'f=\"' + google_ads[i].url + '" ' +
                            'target="_blank" ' + 
                            'onmouseout="window.status=\'\'" ' +
                            'onmouseover="window.status=\'go to ' +
                            google_ads[i].visible_url + '\'" ' +
                            'style="text-decoration:none">' +
                            '<div class=\"googlead\">' + google_ads[i].line1 + '</div>' + 
                            '<div class=\"googleadtext\">' + google_ads[i].line2 + 
							'&nbsp;' + google_ads[i].line3 + '</div>' +
                            '<div class=\"googleadurl\">' +
                            google_ads[i].visible_url + '</div></a>';

        }
s += '</div>';
      }
    }

    document.write(s);
    return;
  }

function toggleLayer(sourceElement, elementId)
{
	var element;

	if (document.getElementById)
	{
		// this is the way the standards work
		element = document.getElementById(elementId);
	}
	else if (document.all)
	{
		// this is the way old msie versions work
		element = document.all[elementId];
	}
	else if (document.layers)
	{
		// this is the way nn4 works
		element = document.layers[elementId];
	}

	element.style.display = element.style.display ? '' : 'inline';
	
	sourceElement.innerHTML = element.style.display ? '&lt; <strong style="text-decoration:none;">less</strong>' : '<strong style="text-decoration:none;">more</strong> &gt; ';
}

//Topnav Dropdown Menu
var sfHover
sfHover = function() {
	var sfEls = document.getElementById("topnav").getElementsByTagName("li");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

var hover
hover = function() {
            var sfhls = document.getElementById("topnav").getElementsByTagName("a");
            for (var i=0; i<sfhls.length; i++) {
                        sfhls[i].onmouseover=function() {
                                    this.className+=" hover";
                        }
                        sfhls[i].onmouseout=function() {
                                    this.className=this.className.replace(new RegExp(" hover\\b"), "");
                        }
            }
}

if (window.attachEvent) window.attachEvent("onload", hover);

function toggleBlock(elementId) {
    var element = document.getElementById(elementId);

    if(element.style.display == '')
      element.style.display = 'none';

    else
      element.style.display = '';  }
	  
	function ToggleImage(obj) {
   		var element = document.getElementById(obj);
   		
   		if ( document.getElementById(obj).src == 'images/collapse_bar' ) {
		   // alert(document.getElementById(obj).src);
			document.getElementById(obj).src = 'images/expand_bar.gif';
		}
  		else{ 
			// alert(document.getElementById(obj).src);
  			document.getElementById(obj).src = 'images/collapse_bar.gif';   
		}
	}
	
function swapin(divName)
{
	try
	    {
		    if(currentDiv != null)
			{
				document.getElementById(currentDiv).style.display = "none";
			}
			currentDiv = divName;
			document.getElementById(currentDiv).style.display = "block";
            }

    catch(e)
	    {
			return;
        }
}

function P7_swapClass(){ //v1.4 by PVII
 var i,x,tB,j=0,tA=new Array(),arg=P7_swapClass.arguments;
 if(document.getElementsByTagName){for(i=4;i<arg.length;i++){tB=document.getElementsByTagName(arg[i]);
  for(x=0;x<tB.length;x++){tA[j]=tB[x];j++;}}for(i=0;i<tA.length;i++){
  if(tA[i].className){if(tA[i].id==arg[1]){if(arg[0]==1){
  tA[i].className=(tA[i].className==arg[3])?arg[2]:arg[3];}else{tA[i].className=arg[2];}
  }else if(arg[0]==1 && arg[1]=='none'){if(tA[i].className==arg[2] || tA[i].className==arg[3]){
  tA[i].className=(tA[i].className==arg[3])?arg[2]:arg[3];}
  }else if(tA[i].className==arg[2]){tA[i].className=arg[3];}}}}
}

function urlMenu(that) {
	theURL = that.options[that.selectedIndex].value; 
	if (theURL) {
		window.location = theURL;
	}
}

function appendLocation(theLink) {
    var thisPage = "" + location;
    var bits = thisPage.split("&");
    var s = ""
    for (var i = 0; i < bits.length; i++) {
      s += bits[i] + "^"
    }
    if (s == "") {
      theLink.href = theLink.href + "&refPage=" + thisPage
     } else {
       theLink.href = theLink.href + "&refPage=" + s
    }
    return true;
}

function initRollTabs(tabParentId)
{
	var tabs = jQuery('#' + tabParentId + ' > ul li:not(.counted)');
	var contents = jQuery(tabs).parents('div#' + tabParentId).find(' > div');
	
	jQuery(tabs).get(0).className = 'lion';
	jQuery(contents).hide();
	jQuery(contents).get(0).style.display = 'block';
	
	jQuery(tabs).each(function() {
		jQuery(this).click(function() {
			jQuery(tabs).removeClass('lion').addClass('lioff');
			jQuery(this).removeClass('lioff').addClass('lion counted');
			
			var tabPos = jQuery(tabs).index(this);
			
			jQuery(contents).hide();
			jQuery(contents).get(tabPos).style.display = 'block';
		});
	});
	
	jQuery(tabs).addClass('counted');
	jQuery(contents).addClass('counted');
}

/* Formatting of video page is different from normal tab modules */
function initRollTabsVideo(tabParentId, curPage)
{
	var tabs = jQuery('.' + tabParentId + ' > div ul li:not(.counted)');
	var contents = jQuery(tabs).parents('div.' + tabParentId).find(' > div:not(.clearleft,.clearboth,.clear,.clearright,#tabheader)');
	
	jQuery(tabs).get(curPage - 1).className = 'lion';
	jQuery(contents).hide();
	jQuery(contents).get(curPage - 1).style.display = 'block';
	
	jQuery(tabs).each(function() {
		jQuery(this).click(function() {
			jQuery(tabs).removeClass('lion').addClass('lioff');
			jQuery(this).removeClass('lioff').addClass('lion counted');
			
			var tabPos = jQuery(tabs).index(this);
			
			jQuery(contents).hide();
			jQuery(contents).get(tabPos).style.display = 'block';
		});
	});
	
	jQuery(tabs).addClass('counted');
	jQuery(contents).addClass('counted');
}

//Functions for Article - Email a Colleague 
function CheckForm(){
  
	mystr = document.emailArticle.mailTo.value;
	varArr = new Array();
	varArr = mystr.split(";");

	for (j=0; j<=varArr.length-1; j++){     
 		if(!ValidEmail(varArr[j]))
 			{strMsg = "The Colleague email address you typed is invalid.";            
 				alert(strMsg);
 				document.emailArticle.mailTo.focus();
 			return false;
 			}
	}

	if (!ValidEmail(document.emailArticle.mailFrom.value))
	   {strMsg = "The email address you typed as yours is invalid.";            
	    alert(strMsg);
	    document.emailArticle.mailFrom.focus();
	    return false;
	   }	   
	   addRefPage();
}
	
//Functions for Article - Email friends
function CheckFormFriends(){

    mystr = document.emailArticle.mailTo.value;
    varArr = new Array();
    varArr = mystr.split(";");
	
    for (j=0; j<=varArr.length-1; j++){     
         if(!ValidEmail(varArr[j]))
                 {strMsg = "The Colleague email address you typed is invalid.";            
                         alert(strMsg);
                         document.emailArticle.mailTo.focus();
                 return false;
                 }
    }
    
    if (document.emailArticle.fullName.value == '')
    {
    	strMsg = "Please enter your full name.";
    	alert(strMsg);
    	document.emailArticle.fullName.focus();
    	return false; 
    }

    if (!ValidEmail(document.emailArticle.mailFrom.value))
       {strMsg = "The email address you typed as yours is invalid.";            
        alert(strMsg);
        document.emailArticle.mailFrom.focus();
        return false;
       }
    addRefPageLoc();
}
	
function addRefPageLoc() {
     var loc = "" + location
     document.emailArticle.refPage.value = loc;
     return true;
}

function ValidEmail(email) {	
	var invalidChars = " /:,;";
	var invalidChar;

	if (email == "") {
   		return false;
	}

	for (i=0; i<invalidChars.length; i++) {
     invalidChar = invalidChars.charAt(i)
     	if (email.indexOf(invalidChar,0) != -1) {
        	return false;
     	}
     }
     atPos = email.indexOf("@",1)
     if (atPos == -1) {
        return false;
     }
     if (email.indexOf("@",atPos+1) != -1) {
        return false;
     }
     periodPos = email.indexOf(".",atPos)
     if (periodPos == -1) {
        return false;
     }
     if (periodPos+3 > email.length) {
        return false;
     }       

     return true;
}

function addRefPage() {
     var loc = "" + location
     /*if (loc.indexOf("&refPage") == -1) 
     return  
     var ref = loc.substring( loc.indexOf("&refPage=") + 9, loc.length );*/
     document.emailArticle.refPage.value = loc;
     return true;
 }
 
function emailArticle_clearall() {
var oForm = document.forms['sendToFriend'];
for(i=0; i<oForm.elements.length; i++) {
field_type = oForm.elements[i].type.toLowerCase();
switch(field_type) {
case "text":
case "password":
case "textarea":
case "hidden": 
oForm.elements[i].value = "";
break;
}
} 
}
	
//Article Tools Drop Down Menu - used by articletoolsDropDownMenu.tpl
function shareExpandItTop(type){
	var shareExpandItTop = document.getElementById('shareExpandItBoxTop');	

	if(type =="show") {
		shareExpandItTop.className = "expanded";
	} else {
		shareExpandItTop.className = "collapsed";
	}
}

function shareExpandItBtm(type){
	var shareExpandItBtm = document.getElementById('shareExpandItBoxBtm');
	
	if(type =="show") {
		shareExpandItBtm.className = "expanded";
	} else {
		shareExpandItBtm.className = "collapsed";
	}
}

function subscriptionsExpandItTop(type){
	var shareExpandItTop = document.getElementById('subscriptionsExpandItBoxTop');	

	if(type =="show") {
		shareExpandItTop.className = "expanded";
	} else {
		shareExpandItTop.className = "collapsed";
	}
}

function subscriptionsExpandItBtm(type){
	var shareExpandItBtm = document.getElementById('subscriptionsExpandItBoxBtm');
	
	if(type =="show") {
		shareExpandItBtm.className = "expanded";
	} else {
		shareExpandItBtm.className = "collapsed";
	}
}

function marketPlaceLinks(_sid, _ct, _num, _layt, _fmt){
	var retSource = "";
	lt_char=String.fromCharCode(60);
	retSource = lt_char+'scr'+'ipt src="http://jlinks.industrybrains.com/jsct?sid=' + _sid + '&amp;ct=' + _ct + '&amp;num='+ _num +'&amp;layt='+ _layt +'&amp;fmt='+ _fmt +'">';
	retSource += lt_char+'/scr'+'ipt>';
	return retSource;
}

// Function to load multi onload events ... 
function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
}	              
// Image Tracker Function for General Purpose    
function jumpImg(type){
		var jumpImage = '/common/images/_jump.gif';
		var randomNumber = (new Date()).getTime() + '.' + Math.floor(Math.random() * 1000);
		if (type == 'roadblockSkip'){
		document.getElementById('whitebox').style.display='none';
		document.getElementById('roadblock').style.display='none';
		document.getElementById('lightbox').style.display='none';
		}
		if (document.images && type){
		  	if (arguments.length > 1) {
            	url = arguments[1];
            } else {
				url = null;	
			}
			new Image().src = jumpImage + '?ets=' + randomNumber + '&type=' + type + '&url=' + escape(url).replace(/\+/g, '%2B');            	
       }
	return true;
}   

//Form Validation for Article Reprints
function reprintForm(ThisForm)
{
        if (ThisForm.mail_Name.value == "")
        {
                alert("Your name is missing.");
                ThisForm.mail_Name.focus();
                return false;
        }        
        if (ThisForm.mail_Email.value == "")
        {
                alert("Your email address is missing.");
                ThisForm.mail_Email.focus();
                return false;
        }
        if (!ValidEmail(ThisForm.mail_Email.value)) {
                strMsg = "The email address you typed is invalid.";                
                alert(strMsg);
                ThisForm.mail_Email.focus();
                return false;
        }        
        if (ThisForm.mail_Phone.value == "")
        {
                alert("Your contact phone number is missing.");
                ThisForm.mail_Phone.focus();
                return false;
        }        
        if (ThisForm.mail_Company.value == "")
        {
                alert("The company name is missing.");
                ThisForm.mail_Company.focus();
                return false;
        }
}

document.getElementsByClassName = function( clsName, tag ) {
	var retVal = new Array();

	if (tag == null) { tag="*"; }

	var elements = document.getElementsByTagName(tag);

	for(var i = 0;i < elements.length;i++){
		var classes = elements[i].className.split(" ");

		for(var j = 0;j < classes.length;j++){
			if(classes[j] == clsName)
				retVal.push(elements[i]);
		}
	}

	return retVal;
}

function showrss(theStyle) {
                                    var myclass = new RegExp('\\b'+theStyle+'\\b');
                                    var elem = document.getElementsByTagName('*');
                                    for (var i = 0; i < elem.length; i++){
                                                if (myclass.test(elem[i].className)){
                                                            elem[i].style.display = "block";
                                                }
                                    }
            }
            
function hiderss(theStyle) {
                                    var myclass = new RegExp('\\b'+theStyle+'\\b');
                                    var elem = document.getElementsByTagName('*');
                                    for (var i = 0; i < elem.length; i++) {
                                                if (myclass.test(elem[i].className)){
                                                            elem[i].style.display = "none";
                                                }
                                    }
            }

