// =============================================================
// This file has 2 sections: JQuery and NO JQuery functions - both are included INSIDE the $(document).ready... to delay reading until after entire HTML page is loaded.
// =============================================================
// (1) The following require JQuery to be linked to BEFORE this file
// =============================================================
$(document).ready(function(){

// Font size changing functions
// Reset
var originalFontSize = $('html').css('font-size');
	$(".resetFont").click(function(){
	$('html').css('font-size', originalFontSize);
});
// Increase
$(".increaseFont").click(function(){
	var currentFontSize = $('html').css('font-size');
	var currentFontSizeNum = parseFloat(currentFontSize, 10);
	var newFontSize = currentFontSizeNum*1.2;
	$('html').css('font-size', newFontSize);
	return false;
});
// Decrease
$(".decreaseFont").click(function(){
	var currentFontSize = $('html').css('font-size');
	var currentFontSizeNum = parseFloat(currentFontSize, 10);
	var newFontSize = currentFontSizeNum*0.8;
	$('html').css('font-size', newFontSize);
	return false;
});

// Add icon to external links but not links around images. 
// NOTE: Handling external links using JavaScript instead of CSS means that links to PDF files that are external will be marked with PDF icon by CSS and marked with external icon by JQuery.
$('a').not(":has('img')").not(".imagelink").not(".nolinkicon").not(".qzgfbmxpdfiigyjavxds").filter(function() {/*Ack! an <a> with the class "qzgfbmxpdfiigyjavxds" is for whatever reason inserted after the </object> tag for the Flickr Widget on some, but not all, pages! see /org/campusactivities/home.html */
	return this.hostname 
		&& this.hostname !== "ohlone.edu" 
		&& this.hostname !== "dev.ohlone.edu" 
		&& this.hostname !== "dev2.ohlone.edu" 
		&& this.hostname !== "www.ohlone.edu" 
		&& this.hostname !== "www2.ohlone.edu"
		&& this.hostname !== "bond.ohlone.edu"
		&& this.hostname !== "fleamarket.ohlone.edu"
		&& this.hostname !== "foundation.ohlone.edu"
		&& this.hostname !== "itunes.ohlone.edu"
		&& this.hostname !== "monitor.ohlone.edu"
		&& this.hostname !== "online.ohlone.edu"
		&& this.hostname !== "purchasing.ohlone.edu"
		&& this.hostname !== "scholarships.ohlone.edu"
		&& this.hostname !== "smithcenter.ohlone.edu"
		&& this.hostname !== "speech.ohlone.edu"
		&& this.hostname !== "accounts.ohlone.edu"
		&& this.hostname !== "appointments.ohlone.edu"
		&& this.hostname !== "email.ohlone.edu"
		&& this.hostname !== "mail.ohlone.edu"
		&& this.hostname !== "help.ohlone.edu"
		&& this.hostname !== "tech.ohlone.edu"
		&& this.hostname !== "webadvisor.ohlone.edu"
		&& this.hostname !== "www.ohlonebaseball.com" 
		&& this.hostname !== "www.ohlonebasketball.com" 
		&& this.hostname !== "www.ohlonesoccer.com" 
		&& this.hostname !== "www.ohlonewomensbasketball.com" 
		&& this.hostname !== "www.ohlonebookstore.com" 
		&& this.hostname !== "www.ohloneforkids.com" 
		&& this.hostname !== "www.ohlonejobs.com" 
		&& this.hostname !== "www.ohlonetv.com" 
		&& this.hostname !== "www.smithcenterpresents.com" 
		&& this.hostname !== "scboxoffice.ohlone.edu" 
		&& this.hostname !== "www.cheryllambert.com"
		;
}).after(' <img src="/images/icons/externallink.png" alt="External link."/>');

/* ================
	jquery.usableicons.js
	jQuery plugin to improve your usability through icons
	v1.0
	http://www.csslab.cl/ejemplos/usableicons/
	Copyright (c) 2007 Jorge Epuņan @ CSSLab.cl
	Tnx to Rodrigo Augosto @ protoboard.cl
	GPL License <http://www.gnu.org/licenses/gpl.txt>
	*****************
	20080918 CLambert mods for Ohlone College.
	NOT USING here because is set in globalstyles.css instead:
		$(obtToStyle[i] +" a[@href*=pdf]").addClass("pdf");
		$(obtToStyle[i] +" a[@href*=doc]").addClass("doc");
		$(obtToStyle[i] +" a[@href*=zip]").addClass("zip");
		$(obtToStyle[i] +" a[@href*=mov]").addClass("mov");
		$(obtToStyle[i] +" a[@href*=mp3]").addClass("mp3");
		$(obtToStyle[i] +" a[@href*=psd]").addClass("psd");
		$(obtToStyle[i] +" a[@href*=swf]").addClass("swf");
		$(obtToStyle[i] +" a[@href*=txt]").addClass("txt");
		$(obtToStyle[i] +" a[@href*=wmv]").addClass("wmv");
		$(obtToStyle[i] +" a[@href*=xls]").addClass("xls");
================ */
jQuery.fn.usableicons = function(options) {
	var obtToStyle = options.split(",");
	for(var i = 0; i<obtToStyle.length; i++){
		$(obtToStyle[i] +" a[@href*=mailto:]").addClass("mailto");
		$(obtToStyle[i] +" a[@target='_blank']").addClass("newwindow");
		$(obtToStyle[i] +" a[@href*=window.print()]").addClass("print");
	}
};

// Highlight Table Rows on Mouseover - When mouse is over a row, change class to highlight the row (because :hover doesn't work in some browsers).
// To use, table must have class="stripeMe" (yes, "stripeMe" since it uses the same code as Stripe Table Rows).
//	$(document).ready(function(){
	$("table.stripeMe tr").mouseover(function() {
		$(this).addClass("over");
	});
	$("table.stripeMe tr").mouseout(function() {
		$(this).removeClass("over");
	});
//	});

// Stripe Table Rows - put background-color on alternate table rows.
// To use, table must have class="stripeMe"
//	$(document).ready(function(){
//	$("table.stripeMe>tr:even").addClass("alt");
// NOTE!! JQuery's "sortable" also alternate table row colors using classes "odd", "even". So, no need to use stripeMe on those tables.
// 20091007 CHANGED to this because it gets even rows for EACH table now all EVENT rows for tables on the page:
//$("table.striped").each(function(){
//    $(this).find("tbody tr:odd").addClass("odd");
//    $(this).find("tbody tr:even").addClass("even");
//  });
//$("table.stripeMe").each(function(){
//    $(this).find("tr:odd").addClass("even");
//    $(this).find("tr:even").addClass("alt");
//  });
$("table.stripeMe").each(function(){
    $(this).find("tbody tr:odd").addClass("odd");
    $(this).find("tbody tr:even").addClass("even");
  });
//});

/* jQuery corner plugin
 * version 1.92 (12/18/2007)
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 * The corner() method provides a simple way of styling DOM elements.  
 * corner() takes a single string argument:  $().corner("effect corners width")
 *   effect:  The name of the effect to apply, such as round or bevel. 
 *            If you don't specify an effect, rounding is used.
 *   corners: The corners can be one or more of top, bottom, tr, tl, br, or bl. 
 *            By default, all four corners are adorned. 
 *   width:   The width specifies the width of the effect; in the case of rounded corners this 
 *            will be the radius of the width. 
 *            Specify this value using the px suffix such as 10px, and yes it must be pixels.
 * For more details see: http://methvin.com/jquery/jq-corner.html
 * For a full demo see:  http://malsup.com/jquery/corner/
 * @example $('.adorn').corner();
 * @desc Create round, 10px corners 
 * @example $('.adorn').corner("25px");
 * @desc Create round, 25px corners 
 * @example $('.adorn').corner("notch bottom");
 * @desc Create notched, 10px corners on bottom only
 * @example $('.adorn').corner("tr dog 25px");
 * @desc Create dogeared, 25px corner on the top-right corner only
 * @example $('.adorn').corner("round 8px").parent().css('padding', '4px').corner("round 10px");
 * @desc Create a rounded border effect by styling both the element and its parent
 * @name corner
 * @type jQuery
 * @param String options Options which control the corner style
 * @cat Plugins/Corner
 * @return jQuery
 * @author Dave Methvin (dave.methvin@gmail.com)
 * @author Mike Alsup (malsup@gmail.com)
 */
//	(function($) { 
$.fn.corner = function(o) {
		var ie6 = $.browser.msie && /MSIE 6.0/.test(navigator.userAgent);
		function sz(el, p) { return parseInt($.css(el,p))||0; };
		function hex2(s) {
				var s = parseInt(s).toString(16);
				return ( s.length < 2 ) ? '0'+s : s;
		};
		function gpc(node) {
				for ( ; node && node.nodeName.toLowerCase() != 'html'; node = node.parentNode ) {
						var v = $.css(node,'backgroundColor');
						if ( v.indexOf('rgb') >= 0 ) { 
								if ($.browser.safari && v == 'rgba(0, 0, 0, 0)')
										continue;
								var rgb = v.match(/\d+/g); 
								return '#'+ hex2(rgb[0]) + hex2(rgb[1]) + hex2(rgb[2]);
						}
						if ( v && v != 'transparent' )
								return v;
				}
				return '#ffffff';
		};
		function getW(i) {
				switch(fx) {
				case 'round':  return Math.round(width*(1-Math.cos(Math.asin(i/width))));
				case 'cool':   return Math.round(width*(1+Math.cos(Math.asin(i/width))));
				case 'sharp':  return Math.round(width*(1-Math.cos(Math.acos(i/width))));
				case 'bite':   return Math.round(width*(Math.cos(Math.asin((width-i-1)/width))));
				case 'slide':  return Math.round(width*(Math.atan2(i,width/i)));
				case 'jut':    return Math.round(width*(Math.atan2(width,(width-i-1))));
				case 'curl':   return Math.round(width*(Math.atan(i)));
				case 'tear':   return Math.round(width*(Math.cos(i)));
				case 'wicked': return Math.round(width*(Math.tan(i)));
				case 'long':   return Math.round(width*(Math.sqrt(i)));
				case 'sculpt': return Math.round(width*(Math.log((width-i-1),width)));
				case 'dog':    return (i&1) ? (i+1) : width;
				case 'dog2':   return (i&2) ? (i+1) : width;
				case 'dog3':   return (i&3) ? (i+1) : width;
				case 'fray':   return (i%2)*width;
				case 'notch':  return width; 
				case 'bevel':  return i+1;
				}
		};
		o = (o||"").toLowerCase();
		var keep = /keep/.test(o);                       // keep borders?
		var cc = ((o.match(/cc:(#[0-9a-f]+)/)||[])[1]);  // corner color
		var sc = ((o.match(/sc:(#[0-9a-f]+)/)||[])[1]);  // strip color
		var width = parseInt((o.match(/(\d+)px/)||[])[1]) || 10; // corner width
		var re = /round|bevel|notch|bite|cool|sharp|slide|jut|curl|tear|fray|wicked|sculpt|long|dog3|dog2|dog/;
		var fx = ((o.match(re)||['round'])[0]);
		var edges = { T:0, B:1 };
		var opts = {
				TL:  /top|tl/.test(o),       TR:  /top|tr/.test(o),
				BL:  /bottom|bl/.test(o),    BR:  /bottom|br/.test(o)
		};
		if ( !opts.TL && !opts.TR && !opts.BL && !opts.BR )
				opts = { TL:1, TR:1, BL:1, BR:1 };
		var strip = document.createElement('div');
		strip.style.overflow = 'hidden';
		strip.style.height = '1px';
		strip.style.backgroundColor = sc || 'transparent';
		strip.style.borderStyle = 'solid';
		return this.each(function(index){
				var pad = {
						T: parseInt($.css(this,'paddingTop'))||0,     R: parseInt($.css(this,'paddingRight'))||0,
						B: parseInt($.css(this,'paddingBottom'))||0,  L: parseInt($.css(this,'paddingLeft'))||0
				};

				if ($.browser.msie) this.style.zoom = 1; // force 'hasLayout' in IE
				if (!keep) this.style.border = 'none';
				strip.style.borderColor = cc || gpc(this.parentNode);
				var cssHeight = $.curCSS(this, 'height');

				for (var j in edges) {
						var bot = edges[j];
						// only add stips if needed
						if ((bot && (opts.BL || opts.BR)) || (!bot && (opts.TL || opts.TR))) {
								strip.style.borderStyle = 'none '+(opts[j+'R']?'solid':'none')+' none '+(opts[j+'L']?'solid':'none');
								var d = document.createElement('div');
								$(d).addClass('jquery-corner');
								var ds = d.style;

								bot ? this.appendChild(d) : this.insertBefore(d, this.firstChild);

								if (bot && cssHeight != 'auto') {
										if ($.css(this,'position') == 'static')
												this.style.position = 'relative';
										ds.position = 'absolute';
										ds.bottom = ds.left = ds.padding = ds.margin = '0';
										if ($.browser.msie)
												ds.setExpression('width', 'this.parentNode.offsetWidth');
										else
												ds.width = '100%';
								}
								else if (!bot && $.browser.msie) {
										if ($.css(this,'position') == 'static')
												this.style.position = 'relative';
										ds.position = 'absolute';
										ds.top = ds.left = ds.right = ds.padding = ds.margin = '0';
										
										// fix ie6 problem when blocked element has a border width
										var bw = 0;
										if (ie6 || !$.boxModel)
												bw = sz(this,'borderLeftWidth') + sz(this,'borderRightWidth');
										ie6 ? ds.setExpression('width', 'this.parentNode.offsetWidth - '+bw+'+ "px"') : ds.width = '100%';
								}
								else {
										ds.margin = !bot ? '-'+pad.T+'px -'+pad.R+'px '+(pad.T-width)+'px -'+pad.L+'px' : 
																				(pad.B-width)+'px -'+pad.R+'px -'+pad.B+'px -'+pad.L+'px';                
								}

								for (var i=0; i < width; i++) {
										var w = Math.max(0,getW(i));
										var e = strip.cloneNode(false);
										e.style.borderWidth = '0 '+(opts[j+'R']?w:0)+'px 0 '+(opts[j+'L']?w:0)+'px';
										bot ? d.appendChild(e) : d.insertBefore(e, d.firstChild);
								}
						}
				}
		});
};
$.fn.uncorner = function(o) { return $('.jquery-corner', this).remove(); };
//	})(jQuery);

// NEXT: Below goes AFTER above!
// To use: assign "xxxxxxcorners" class to div to make corners of that div not square
// Corner examples: http://www.malsup.com/jquery/corner/
// Corner specs: top, bottom, tl, tr, bl, br; example: $(this).corner("bite tl");
// Corner with border example: $(this).corner("round 8px").parent().css('padding', '4px').corner("round 10px")
// Top and bottom stripes: $(this).corner("sc:#000099");
//	$(function(){
        $(".roundcorners").corner();
				$(".roundcorners25").corner("25px");
        $(".bevelcorners").corner("bevel");
        $(".bevelcornerstop").corner("bevel top");
				$(".notchcorners").corner("notch");
				$(".bitecorners").corner("bite");
				$(".coolcorners").corner("cool");
				$(".sharpcorners").corner("sharp");
				$(".slidecorners").corner("slide");
				$(".jutcorners").corner("jut");
				$(".curlcorners").corner("curl");
				$(".tearcorners").corner("tear");
				$(".fraycorners").corner("fray");
				$(".wickedcorners").corner("wicked");
				$(".sculptcorners").corner("sculpt");
				$(".longcorners").corner("long");
				$(".dogcorners").corner("dog");
				$(".dog2corners").corner("dog2");
				$(".dog3corners").corner("dog3");
				//borders and stripes need TESTING BEFORE implementation!!
				$(".roundcornersborder").corner("round 8px").parent().css('padding', '4px').corner("round 10px")
//	});

}); // End JQuery functions




// =============================================================
// (2) The following do not use JQuery.
// =============================================================
// Break out of frames!
if (window != top) { top.location.href = location.href; }

// Opera Resize Window Fix for css after browser window resized by user.
function P7_OpResizeFix(a) { //v1.1 by PVII
if(!window.opera){return;}if(!document.p7oprX){
 document.p7oprY=window.innerWidth;document.p7oprX=window.innerHeight;
 document.onmousemove=P7_OpResizeFix;
 }else{if(document.p7oprX){
  var k=document.p7oprX-window.innerHeight;
  var j=document.p7oprY - window.innerWidth;
  if(k>1 || j>1 || k<-1 || j<-1){
  document.p7oprY=window.innerWidth;document.p7oprX=window.innerHeight;
  location.reload();}}}
}
P7_OpResizeFix();

// Popup Window.
// To Use (all run together without line breaks; no spaces allowed in the options info!):
// <a href="/path/filename.html" onclick="openwindow('/path/filename.html','win1',
// 'width=400,height=300,toolbar=no,location=no,menubar=no,
// resizable=yes,status=yes,left=0,top=0');return false;"
// title="New window opens using JavaScript">Click here</a>
function openwindow(url,window_name,options) {
  var newwin=window.open(url,window_name,options);
  newwin.focus();
}

// Redirect to URL after selection from pull-down menu.
function redirect(pulldown) {
  var newLocation = pulldown[pulldown.selectedIndex].value;
  if ( newLocation != "" )
  {
    self.location = newLocation;
  }
}
