/*
Shutter Reloaded for NextGEN Gallery
http://www.laptoptips.ca/javascripts/shutter-reloaded/
Version: 1.3.0
Copyright (C) 2007-2008  Andrew Ozz
Released under the GPL, http://www.gnu.org/copyleft/gpl.html

Acknowledgement: some ideas are from: Shutter by Andrew Sutherland - http://code.jalenack.com, WordPress - http://wordpress.org, Lightbox by Lokesh Dhakar - http://www.huddletogether.com, the icons are from Crystal Project Icons, Everaldo Coelho, http://www.everaldo.com

*/


shutterOnload = function(){shutterReloaded.init('sh');}

if (typeof shutterOnload == 'function') {
	if ('undefined' != typeof jQuery) jQuery(document).ready(function(){shutterOnload();});
	else if( typeof window.onload != 'function' ) window.onload = shutterOnload;
	else {oldonld = window.onload;window.onload = function(){if(oldonld){oldonld();};shutterOnload();}};
}

shutterReloaded = {

	I : function (a) {
		return document.getElementById(a);
	},

	settings : function() {
		var t = this, s = shutterSettings;

		t.imageCount = s.imageCount || 0;
		//t.msgLoading = s.msgLoading || 'L O A D I N G';
		t.msgLoading = '<img src="/content/wp-content/themes/guy_eng/images/loading_animated_gif.gif" alt="loading..." />';
		t.msgClose = s.msgClose || 'Click to Close';
	},

	init : function (a) {
		var t = this, L, T, ext, i, m, setid, inset, shfile, shMenuPre, k, img;
		shutterLinks = {}, shutterSets = {};
		if ( 'object' != typeof shutterSettings ) shutterSettings = {};

		for ( i = 0; i < document.links.length; i++ ) {
			L = document.links[i];
			ext = ( L.href.indexOf('?') == -1 ) ? L.href.slice(-4).toLowerCase() : L.href.substring( 0, L.href.indexOf('?') ).slice(-4).toLowerCase();
			if ( ext != '.jpg' && ext != '.png' && ext != '.gif' && ext != 'jpeg' ) continue;
			if ( a == 'sh' && L.className.toLowerCase().indexOf('shutter') == -1 ) continue;
			if ( a == 'lb' && L.rel.toLowerCase().indexOf('lightbox') == -1 ) continue;

			if ( L.className.toLowerCase().indexOf('shutterset') != -1 )
			setid = L.className.replace(/\s/g, '_');
			else if ( L.rel.toLowerCase().indexOf('lightbox[') != -1 )
			setid = L.rel.replace(/\s/g, '_');
			else setid = 0, inset = -1;

			if( setid ) {
				if ( ! shutterSets[setid] ) shutterSets[setid] = [];
					inset = shutterSets[setid].push(i);
			}

			shfile = L.href.slice(L.href.lastIndexOf('/')+1);

			T = ( L.title && L.title != shfile ) ? L.title : '';
			imgDescription = L.getAttribute("imgDescription");

			shutterLinks[i] = {link:L.href,
				num:inset,
				set:setid,
				title:T,
				description:imgDescription,
				/*modified - added custom fields*/
				picpong_url:L.getAttribute("picpong_url"),
				original_url:L.getAttribute("original_url"),
				cell_url:L.getAttribute("cell_url")
				}
			L.onclick = new Function('shutterReloaded.make("' + i + '");return false;');
		}

		t.settings();

	},

	make : function(ln,fs) {
		var t = this, prev, next, prevlink = '', nextlink = '', previmg, nextimg, D, S, W, fsarg = -1, imgNum, NavBar;

		if ( ! t.Top ) {
			if ( typeof window.pageYOffset != 'undefined' ) t.Top = window.pageYOffset;
			else t.Top = (document.documentElement.scrollTop > 0) ? document.documentElement.scrollTop : document.body.scrollTop;
		}

		if ( typeof t.pgHeight == 'undefined' )
			t.pgHeight = Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);

		if ( fs ) t.FS = ( fs > 0 ) ? 1 : 0;
		else t.FS = shutterSettings.FS || 0;

		if ( t.resizing ) t.resizing = null;
		window.onresize = new Function('shutterReloaded.resize("'+ln+'");');

		document.documentElement.style.overflowX = 'hidden';
		if ( ! t.VP ) {
			t._viewPort();
			t.VP = true;
		}

		if ( ! (S = t.I('shShutter')) ) {
			S = document.createElement('div');
			S.setAttribute('id','shShutter');
			document.getElementsByTagName('body')[0].appendChild(S);
			t.hideTags();
		}

		if ( ! (D = t.I('shDisplay')) ) {
			D = document.createElement('div');
			D.setAttribute('id','shDisplay');
			D.style.top = t.Top + 'px';
			document.getElementsByTagName('body')[0].appendChild(D);
		}

		S.style.height = t.pgHeight + 'px';

		var dv = t.textBtns ? ' | ' : '';
		if ( shutterLinks[ln].num > 1 ) {
			prev = shutterSets[shutterLinks[ln].set][shutterLinks[ln].num - 2];
			prevlink = '<a href="#" onclick="shutterReloaded.make('+prev+');return false">&lt;&lt; <span id="ShuterPreviousLink">Previous</span></a>'+dv;
			previmg = new Image();
			previmg.src = shutterLinks[prev].link;
		} else {
			prevlink = '';
		}

		if ( shutterLinks[ln].num != -1 && shutterLinks[ln].num < (shutterSets[shutterLinks[ln].set].length) ) {
			next = shutterSets[shutterLinks[ln].set][shutterLinks[ln].num];
			nextlink = '<a href="#" onclick="shutterReloaded.make('+next+');return false"><span id="ShuterPreviousLink">Next</span> &gt;&gt;</a>'+dv;
			nextimg = new Image();
			nextimg.src = shutterLinks[next].link;
		} else {
			nextlink = '';
		}

		imgNum = ( (shutterLinks[ln].num > 0) && t.imageCount ) ? '<div id="shCount">&nbsp;Image &nbsp;' + shutterLinks[ln].num + '&nbsp; out of &nbsp;' + shutterSets[shutterLinks[ln].set].length + '&nbsp;&nbsp;</div>' : '';

		var external_link1 = shutterLinks[ln].picpong_url;
		var external_link2 = shutterLinks[ln].original_url;
		var external_link3 = shutterLinks[ln].cell_url;
		var external_links = '';
		var external_link_title = "";
		
		var isHeb = typeof(isThemeHeb)!="undefined";

		NavBar = "";

		if(shutterLinks[ln].description!=null && shutterLinks[ln].description!=""){
			NavBar += '<div id="shName">' + shutterLinks[ln].description + '</div>';
		}
		if((external_link1!=null && external_link1!="") ||
		   (external_link2!=null && external_link2!="") ||
		   (external_link3!=null && external_link3!="")
		   ){


			NavBar += '<div id="shExternalPicLinks">';
			if (external_link1!=null && external_link1!=""){
				external_link_title = isHeb ? "לרכישת התמונה מאתר פיקפונג" : "Buy from Picpong";
				external_links += ' <a  class="buy_picpong_link"  href="'+external_link1+'" target="_blank"  >'+external_link_title+'</a> ';
			}

			if (external_link2!=null && external_link2!=""){
				external_link_title = isHeb ? "לרכישת קובץ התמונה המקורי" : "Buy Original Image";
				if (external_links.length>0)external_links+=' | ';
				external_links += ' <a class="buy_original_link"  href="'+external_link2+'" target="_blank"  >'+external_link_title+'</a> ';
			}

			if (external_link3!=null && external_link3!=""){
				external_link_title = isHeb ? "הורד תמונה למכשיר סלולרי" : "Download to cellular device";
				if (external_links.length>0)external_links+=' | ';
				external_links += ' <a class="buy_cellular_link" href="javascript:Send2Cropper (\''+shutterLinks[ln].link+'\');" >'+external_link_title+'</a> ';
			}

			NavBar += external_links +'</div>';
		}

		NavBar += '<a href="#" onclick="shutterReloaded.hideShutter();return false;" id="shLightboxCloseLink"  class="shLightboxClose" >Close</a><div id="shTitle"><div id="shPrev">' + prevlink + '</div>' + imgNum + '<div id="shNext">' + nextlink + '</div></div>';

		var titleRow = "";
		if(shutterLinks[ln].title!=""){
			titleRow = '<div class="imgTitle">'+shutterLinks[ln].title+'</div>';
		}

		D.innerHTML = '<div id="shWrap"><div id="shWrapFrame"><div id="shInnerWrap">'+titleRow+'<img src="'+shutterLinks[ln].link+'" id="shTopImg" title="' + t.msgClose + '" onload="shutterReloaded.showImg();" onclick="shutterReloaded.hideShutter();" />' + NavBar +'</div></div></div>';

		if (typeof(jQuery)!="undefined")jQuery(document).keypress(shutterReloaded.hideShutterOnESCAPE);


		window.setTimeout(function(){shutterReloaded.loading();},100);
	},

	loading : function() {
		var t = this, S, WB, W;
		if ( (W = t.I('shWrap')) && W.style.visibility == 'visible' ) return;
		if ( ! (S = t.I('shShutter')) ) return;
		if ( t.I('shWaitBar') ) return;
		WB = document.createElement('div');
		WB.setAttribute('id','shWaitBar');
		WB.style.top = t.Top + 'px';
		WB.innerHTML = '<div class="shWaitBarInner">' + t.msgLoading + '</div>';
		document.body.appendChild(WB);
		//S.appendChild(WB);
	},

	hideShutterOnESCAPE:function(w){

		if (w.keyCode == 27) {
		    shutterReloaded.hideShutter();
		}

	},

	hideShutter : function() {
		var t = this, D, S;
		if ( D = t.I('shDisplay') ) D.parentNode.removeChild(D);
		if ( S = t.I('shShutter') ) S.parentNode.removeChild(S);
		t.hideTags(true);
		window.scrollTo(0,t.Top);
		window.onresize = t.FS = t.Top = t.VP = null;
		document.documentElement.style.overflowX = '';

		jQuery(document).unbind('keyup',shutterReloaded.hideShutterOnESCAPE);

	},

	resize : function(ln) {
		var t = this;

		if ( t.resizing ) return;
		if ( ! t.I('shShutter') ) return;
		var W = t.I('shWrap');
		if ( W ) W.style.visibility = 'hidden';

		window.setTimeout(function(){shutterReloaded.resizing = null},500);
		window.setTimeout(new Function('shutterReloaded.VP = null;shutterReloaded.make("'+ln+'");'),100);
		t.resizing = true;
	},

	_viewPort : function() {
		var t = this;
		var wiH = window.innerHeight ? window.innerHeight : 0;
		var dbH = document.body.clientHeight ? document.body.clientHeight : 0;
		var deH = document.documentElement ? document.documentElement.clientHeight : 0;

		if( wiH > 0 ) {
			t.wHeight = ( (wiH - dbH) > 1 && (wiH - dbH) < 30 ) ? dbH : wiH;
			t.wHeight = ( (t.wHeight - deH) > 1 && (t.wHeight - deH) < 30 ) ? deH : t.wHeight;
		} else t.wHeight = ( deH > 0 ) ? deH : dbH;

		var deW = document.documentElement ? document.documentElement.clientWidth : 0;
		var dbW = window.innerWidth ? window.innerWidth : document.body.clientWidth;
		t.wWidth = ( deW > 1 ) ? deW : dbW;
	},

	showImg : function() {
		var t = this, S = t.I('shShutter'), D = t.I('shDisplay'), TI = t.I('shTopImg'), T = t.I('shTitle'), NB = t.I('shNavBar'), W, WB, wHeight, wWidth, shHeight, maxHeight, itop, mtop, resized = 0;

		if ( ! S ) return;
		if ( (W = t.I('shWrap')) && W.style.visibility == 'visible' ) return;
		if ( WB = t.I('shWaitBar') ) WB.parentNode.removeChild(WB);

		S.style.width = D.style.width = '';
		T.style.width = (TI.width - 4) + 'px';
		if (TI.width<330){
			T.style.width = '330px';
		}


		shHeight = t.wHeight - 7;

		if ( t.FS ) {
			if ( TI.width > (t.wWidth - 10) )
			S.style.width = D.style.width = TI.width + 10 + 'px';
			document.documentElement.style.overflowX = '';
		} else {
			window.scrollTo(0,t.Top);
			if ( TI.height > shHeight ) {
				TI.width = TI.width * (shHeight / TI.height);
				TI.height = shHeight;
				resized = 1;
			}
			if ( TI.width > (t.wWidth - 16) ) {
				TI.height = TI.height * ((t.wWidth - 16) / TI.width);
				TI.width = t.wWidth - 16;
				resized = 1;
			}
			T.style.width = (TI.width - 4) + 'px';
		}

		maxHeight = t.Top + TI.height + 10;
		if ( maxHeight > t.pgHeight ) S.style.height = maxHeight + 'px';
		window.scrollTo(0,t.Top);

		itop = (shHeight - TI.height) * 0.45;
		mtop = (itop > 3) ? Math.floor(itop) : 3;
		D.style.top = t.Top + mtop + 'px';
		W.style.visibility = 'visible';

		//modified - resizing the frame after the image loads
		if (TI.width+160>550){
			t.I('shWrapFrame').style.width = (TI.width + 160) + 'px';
		}else{
			t.I('shWrapFrame').style.width = (550) + 'px';

			var agt=navigator.userAgent.toLowerCase();
			var is_major = parseInt(navigator.appVersion);
			var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
			var is_ie6    = (is_ie && (is_major == 4) && (agt.indexOf("msie 6.0")!=-1) );

			if (is_ie6){
				t.I('shLightboxCloseLink').style.left  = ( -(550 - 20 - TI.width)/2) + "px";
			}

		}


	},

	hideTags : function(arg) {
		var sel = document.getElementsByTagName('select');
		var obj = document.getElementsByTagName('object');
		var emb = document.getElementsByTagName('embed');
		var ifr = document.getElementsByTagName('iframe');

		var vis = ( arg ) ? 'visible' : 'hidden';

		for (i = 0; i < sel.length; i++) sel[i].style.visibility = vis;
		for (i = 0; i < obj.length; i++) obj[i].style.visibility = vis;
		for (i = 0; i < emb.length; i++) emb[i].style.visibility = vis;
		for (i = 0; i < ifr.length; i++) ifr[i].style.visibility = vis;
	}
}
