JQuery

 view release on metacpan or  search on metacpan

lib/JQuery/jquery_js/plugins/sifr/sifr.js  view on Meta::CPAN

	/**
	 * Main build function
	 * @acces public
	 * @param hash of options
	 */
	build: function(arrConfig) {
		var arrOptions = jQuery.extend({
			intRequiredFlashVersion: [6, 0, 0],
			strSWF: '',
			strColor: '#000000',
			strBgColor: '',
			strLinkColor: '',
			strHoverColor: '',
			intPadding: [0, 0, 0, 0],	// Left, top, right, bottom
			strFlashVars: '',
			strCase: '',
			strWmode: ''							// empty/'transparent'/'opaque'
		}, arrConfig || {});

		// Check config
		if (arrOptions.intPadding.length != 4) {
			alert('Wrong number of arguments for the padding!');
			return;
		}

		// helper to check for required flash version (do this only once per pageload)
		if (!jQuery.sifr.blnFlashValid) {
			jQuery.sifr._checkFlash(arrOptions.intRequiredFlashVersion[0], arrOptions.intRequiredFlashVersion[1], arrOptions.intRequiredFlashVersion[2]);
		}

		// Initialize flashvars
		if(arrOptions.strFlashVars != '')
			arrOptions.strFlashVars = jQuery.sifr._normalize(arrOptions.strFlashVars);

		// Remove & from the start
		if (arrOptions.strFlashVars.substr(0, 1) == '&')
			arrOptions.strFlashVars = arrOptions.strFlashVars.substr(1, arrOptions.strFlashVars.length);

		// Initialize colors
		if(arrOptions.strColor != '')
			arrOptions.strFlashVars+= "textcolor=" + arrOptions.strColor + '&';

		if (arrOptions.strHoverColor != null)
			arrOptions.strFlashVars+= 'hovercolor=' + arrOptions.strHoverColor + '&';

		if ((arrOptions.strLinkColor != null) || (arrOptions.strHoverColor != null))
			arrOptions.strFlashVars+= 'linkcolor=' + (arrOptions.strLinkColor || arrOptions.strColor) + '&';

	  // initialize sIFR
	  return this.each(function() {
	  	// Handle to object
	  	jqThis = jQuery(this);

	  	// Only continue if we support flash and haven't replaced allready
	  	if (jQuery.sifr.blnFlashValid && !jqThis.is('.sIFR-flash')) {
	  		// Calculate new width and height
	  		intWidth = parseInt(this.offsetWidth);
	  		intHeight = parseInt(this.offsetHeight);

	  		// If this fails, we don't have a width and height set, WHICH MUST BE THE CASE
	  		if (isNaN(intWidth) || isNaN(intHeight)) {
	  			alert('fook it');
	  			return;
	  		}

				// Remove padding
	  		intWidth-= (arrOptions.intPadding[0] +  arrOptions.intPadding[2]);
	  		intHeight-= (arrOptions.intPadding[1] +  arrOptions.intPadding[3]);

				// Make sure an & is at the end of the flashvars
				if (arrOptions.strFlashVars.substr(arrOptions.strFlashVars.length, 1) != '&')
					arrOptions.strFlashVars+= '&';

	  		// Build variables
				objAlternate = jQuery('<span class="sIFR-alternate"></span>')[0];
	  		objContent = jQuery.sifr._fetchContent(this, objAlternate, arrOptions.strCase);
				strVars = "txt=" + jQuery.sifr._normalize(jQuery.sifr._escapeHex(objContent.strContent).replace(/\+/g, "%2B").replace(/&/g, "%26").replace(/\"/g, "%22")) + '&';
				strVars+= arrOptions.strFlashVars;
				strVars+= "w=" + intWidth + "&h=" + intHeight + objContent.strLinkVars;
				objContent = null;

				// Generate!
				if (!jQuery.browser.msie) {
					strHTML = '<embed type="application/x-shockwave-flash" src="' + arrOptions.strSWF + '" quality="best" ';
					strHTML+= (arrOptions.strWmode != '') ? 'wmode="' + arrOptions.strWmode + '" ' : '';
					strHTML+= (arrOptions.strBgColor != '') ? 'bgcolor="' + arrOptions.strBgColor + '" ' : '';
					strHTML+= 'flashvars="' + strVars + '" width="' + intWidth + '" height="' + intHeight + '"></embed>';
				} else {
					strHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + intWidth + '" height="' + intHeight + '">';
					strHTML+= '<param name="movie" value="' + arrOptions.strSWF + "?" + strVars + '"></param>';
					strHTML+= '<param name="quality" value="best"></param>';
					strHTML+= (arrOptions.strWmode != '') ? '<param name="wmode" value="' + arrOptions.strWmode + '"></param>' : '';
					strHTML+= (arrOptions.strBgColor != '') ? '<param name="bgcolor" value="' + arrOptions.strBgColor + '"></param>' : '';
					strHTML+= '</object>';
				}

				// Build the sifr tag
	  		jqThis.addClass('sIFR-flash').empty().append(objAlternate).append(strHTML);

	  		// Fix MSIE flash issue
	  		if (jQuery.browser.msie) {
	  			this.outerHTML = this.outerHTML;
	  		}
	  	}
	  });
	}
};

// Extend jQuery
jQuery.fn.extend( {
		sifr : jQuery.sifr.build
});



( run in 1.598 second using v1.01-cache-2.11-cpan-39bf76dae61 )