var USE_SIFR = false;

var SIFR_IMAGO_PATH              = RESOURCES_PATH + "sifr/dev_imago.swf";
var SIFR_MINION_ITALIC_PATH      = RESOURCES_PATH + "sifr/dev_minion_italic.swf";
var SIFR_MINION_BOLD_ITALIC_PATH = RESOURCES_PATH + "sifr/dev_minion_bold_italic.swf";

var ACTIVE_ENTRY_ID;
ACTIVE_ENTRY_ID = ACTIVE_ENTRY_ID !== undefined ? ACTIVE_ENTRY_ID : null; // set to default

var PAGETOOLS_HTML = '\
<ul id="page-tools" class="clearfix">\
	<li><a href="javascript: Tools.print();" id="page-tool-print">' + _.pageTools.print + '</a></li>\
	<li><a href="javascript: Tools.bookmark();" id="page-tool-bookmark">' + _.pageTools.bookmark + '</a></li>\
	<li><a href="javascript: Tools.digg();" onclick="Tools.digg(); return false;" id="page-tool-digg">' + _.pageTools.digg + '</a></li>\
</ul>';


var TEXTRESIZE_HTML_ = '\
<li id="text-resize">\
	<span id="decrease-font">&nbsp;&nbsp;</span>\
	<span class="headertoplinks">حجم الخط</span>\
	<span id="increase-font">&nbsp;&nbsp;</span>\
</li>';

/********************************************************************/
/* START: initalization                                             */

if(SIFR_IS_POSSIBLE && USE_SIFR) {
	sIFR.setup();
};

$(document).ready(function() {

	// init sifr

	SifrManager.paint();
        initNavigation();
	// cancle further initalisation for IE<6

	if (Info.browser.isIEpre6) {
		return;
	}

	// add min-width and max-width to IE<7

	var layoutManager = new LayoutManager;

	if (Info.browser.isIEpre7) {
		layoutManager.register(
			function() {
				LayoutManager.setMinMaxWidth("div#main-wrapper", 965, 1026);
				LayoutManager.setMinMaxWidth("div#main-zone", 965, 1024);
				LayoutManager.setMinMaxWidth("div#footer-zone", 965, 1024);
			}
		);
	}

	// show text resize tool

        $("ul#headerlinks").append(TEXTRESIZE_HTML_);

	var textSizeManager = new TextSizeManager("span#decrease-font", "span#increase-font");

	// show page tools

	$("div#tool-zone div.use-page-tools").prepend(PAGETOOLS_HTML);

	if (!Tools.isBookmarkable()) {
		$("ul#page-tools li:eq(1)").css("display", "none"); // hide bookmark link
	}

	// measure footer height and correct manual set footer styles

	LayoutManager.repositionFooter();

	// init rating

	$("div#rating a").click(function() {
		RatingManager.clickHandler(this);
	});

	// layer (location selector and site map)

	var layerController = new LayerController;

	if ($("a#location-selector-handle").length) {
		var locationSelector = new LocationSelector;
		layerController.register(locationSelector);
		locationSelector.toggleWith("a#location-selector-handle");
	}

	if ($("a#site-map-handle").length) {
		var siteMap = new SiteMap;
		layerController.register(siteMap);
		siteMap.toggleWith("a#site-map-handle");
	} else if ($("div#sitemap").length) {
		// toggles easy sitemap
		$("div#sitemap dl a.toggle").click(function() {
			$(this).parent().parent().toggleClass("collapsed").toggleClass("expanded");
		});
	}

sortDD("sTradeName");
sortDD("sScientificName");
sortDD("sTherapeutic");
});


function sortDD(selectId)
{
var $dd = $("select[@name=" + selectId + "]");
if ($dd.length > 0) 
{ 
	// make sure we found the select we were looking for    
	// save the selected value    
	var selectedVal = $dd.val();    
	// get the options and loop through them    
	var $options = $('option', $dd);    
	var arrVals = [];

        var i = 0;    
	
	$options.each(function(){
             if (i > 0) {
	// push each option value and text into an array        
		arrVals.push({            
			val: $(this).val(),            
			text: $(this).text()        
		});
             }
             i++;
	});    
	
	// sort the array by the value (change val to text to sort by text instead)    
	arrVals.sort(function(a, b){    
		if(a.text.toLowerCase()>b.text.toLowerCase()){        
			return 1;    
		}    
		else if (a.text.toLowerCase()==b.text.toLowerCase())
		{        
			return 0;    
		}    
		else 
		{        
			return -1;    
		}});
	
	// loop through the sorted array and set the text/values to the options    
	for (var i = 0, l = arrVals.length; i < l; i++) 
	{        
		$($options[i+1]).val(arrVals[i].val).text(arrVals[i].text);    
	}    
	
	// set the selected value back    
	$dd.val(selectedVal);}
}

/* END: initalization                                               */
/********************************************************************/
/* START: sifr                                                      */

var SifrManager = {

	painted: false,

	paint: function() {
		if (SifrManager.painted) {
			sIFR.rollback();
		}
		sIFR.replaceElement(named(
			{sSelector: "div#content-zone h1",
			sFlashSrc: SIFR_MINION_BOLD_ITALIC_PATH,
			sColor: "#333333",
			sWmode:"transparent"}
		));
		sIFR.replaceElement(named(
			{sSelector: "div#content-zone div.h1 h1",
			sFlashSrc: SIFR_MINION_BOLD_ITALIC_PATH,
			sColor: "#333333",
			sWmode:"transparent"}
		));
		sIFR.replaceElement(named(
			{sSelector: "div#content-zone div.h2-overline h2",
			sFlashSrc: SIFR_IMAGO_PATH,
			sColor: "#333333",
			sWmode:"transparent"}
		));
		sIFR.replaceElement(named(
			{sSelector:"div.column h2",
			sFlashSrc: SIFR_MINION_BOLD_ITALIC_PATH,
			sColor:"#666666",
			sWmode:"transparent"}
		));
		sIFR.replaceElement(named(
			{sSelector:"div#related-links div.h2 h2",
			sFlashSrc: SIFR_MINION_BOLD_ITALIC_PATH,
			sColor:"#cc0033",
			sWmode:"transparent"}
		));
		sIFR.replaceElement(named(
			{sSelector:"div.column div.h2 h2",
			sFlashSrc: SIFR_MINION_BOLD_ITALIC_PATH,
			sColor:"#666666",
			sWmode:"transparent"}
		));
		sIFR.replaceElement(named(
			{sSelector:"div.column div.medium-quote p",
			sFlashSrc: SIFR_MINION_ITALIC_PATH,
			sColor:"#666666",
			sWmode:"transparent"}
		));
		sIFR.replaceElement(named(
			{sSelector:"div.column small-quote p",
			sFlashSrc: SIFR_MINION_ITALIC_PATH,
			sColor:"#666666",
			sWmode:"transparent"}
		));
		sIFR.replaceElement(named(
			{sSelector:"div.column div.small-quote p",
			sFlashSrc: SIFR_MINION_ITALIC_PATH,
			sColor:"#666666",
			sWmode:"transparent"}
		));
		sIFR.replaceElement(named(
			{sSelector:"div.column div.small-quote-alternative-style p",
			sFlashSrc: SIFR_MINION_ITALIC_PATH,
			sColor:"#333333",
			sWmode:"transparent"}
		));

		SifrManager.painted = true;
	}
}

/* END: sifr                                                        */
/********************************************************************/
/* START: common layout                                             */

var LayoutManager = function() {}

$.extend(LayoutManager.prototype, {

	register: function(fn) {
		fn.call();
		$(window).resize(fn);
	}
});

$.extend(LayoutManager, {

	repositionFooter: function() {
		var footerConstant = ($("div#footer").height() + 47) + "px";
		$("div#footer-zone").css({height: footerConstant, marginTop: "-" + footerConstant});
		$("div#main-zone").css("paddingBottom", footerConstant);
	},

	setMinMaxWidth: function(selector, minWidth, maxWidth) {
		var stylesheet = IEStylesheet.getImportedStylesheet("import/specific-ie.css");
		if (stylesheet) {
			var rule = IEStylesheet.getRuleBySelector(stylesheet, "html " + selector);
			if (rule) {
				rule.style.width = Utilities.minMax($(window).width(), minWidth, maxWidth) + "px";
			}
		}
	}

});

/* END: common layout                                               */
/********************************************************************/
/* START: text resizing                                             */

var TextSizeManager = function(decreaseNodeSelector, increaseNodeSelector) {
	this.decreaseJqo = $(decreaseNodeSelector);
	this.increaseJqo = $(increaseNodeSelector);
	this.init();
}

$.extend(TextSizeManager.prototype, {

	fontsize: null,

	init: function() {
		this.getFontsize();
		this.setFontsize();

		var _this = this;

		this.decreaseJqo.click(function() {
			if (_this.fontsize > 1) {
				_this.fontsize--;
				_this.setFontsize();
			}
		});
		this.increaseJqo.click(function() {
			if (_this.fontsize < 3) {
				_this.fontsize++;
				_this.setFontsize();
			}
		});

	},

	getFontsize: function() {
		this.fontsize = Cookie.get("fontsize");
		if (!/^[123]$/.test(this.fontsize)) {
			this.fontsize = 1;
		}
	},

	setFontsize: function() {
		var mainWrapper = $("div#main-wrapper");
		var _this = this;
		$.each({1: "text-size-m", 2: "text-size-l", 3: "text-size-xl"}, function(key, className) {
			if (key == _this.fontsize) {
				mainWrapper.addClass(className);
			} else {
				mainWrapper.removeClass(className);
			}
		});

		if (this.fontsize == 1) {
			this.decreaseJqo.removeClass("active");
		} else {
			this.decreaseJqo.addClass("active");
		}
		if (this.fontsize == 3) {
			this.increaseJqo.removeClass("active");
		} else {
			this.increaseJqo.addClass("active");
		}

		SifrManager.paint();
		LayoutManager.repositionFooter();

		Cookie.set("fontsize", this.fontsize, 365);
	}

});

/* END:   text resizing                                             */
/********************************************************************/
/* START: rating                                                    */

var RatingManager = function() {}

$.extend(RatingManager, {

	clickHandler: function(obj) {
		grade = parseInt(obj.id.match(/[1-6]$/));
		RatingManager.rate(grade);
	},

	displayFeedback: function(msg, grade, error) { // protected
		$("div#rating p").remove(".error").remove(".success");
		var className = (error) ? "error" : "success";
		$("div#rating p").eq(0).after("<p class=\"" + className + "\">" + msg + "</p>");
		$("div#rating a").each(
			function(dummy, item) {
				var itemGrade = parseInt(item.id.match(/[1-6]$/));
				var background = (itemGrade > grade) ? "#bababa" : "#06c";
				$(item).css("background", background);
			}
		);
	},

	displayError: function(msg) {
		RatingManager.displayFeedback(msg, -1, true);
	},

	displaySuccess: function(msg, grade) {
		RatingManager.displayFeedback(msg, grade, false);
	}

});

/* END: rating                                                      */
/********************************************************************/
/* START: layer                                                     */

var LayerController = function() {
	this.layers = [];
	this.currentLayer = null;

	_this = this;
	$("body").click(function() {
		_this.closeCurrentLayer();
	});
}

$.extend(LayerController.prototype, {

	closeCurrentLayer: function() {
		if (this.currentLayer)
		this.currentLayer.close();
	},

	register: function(layer) {
		this.layers.push(layer);
		layer.owner = this;
	}

});

/********************************************************************/

var Layer = function(cssSelector) {
	this.construct(cssSelector);
}

$.extend(Layer.prototype, {

	construct: function() {
		this.isOpen     = false;
		this.isInited   = false;
		this.contentJqo = null;
	},

	close: function(newLayer) {
		this.beforeHide();
		this.hide(newLayer);
		if (this.iframeLining) {
			this.iframeLining.hide();
		}

		this.afterHide();
		this.isOpen = false;
		this.owner.currentLayer = null;
		return true;
	},

	getContent: function() {},

	hide: function() {
		this.contentJqo.hide();
	},

	open: function() {
		this.owner.closeCurrentLayer();
		if (!this.isInited) {
			this.contentJqo = this.getContent();
			this.init();
			this.isInited = true;
			if (Info.browser.isIEpre7) {
				this.iframeLining = new iframeLining(this);
			} else {
				this.iframeLining = null;
			}
			this.contentJqo.click(function() { return false; } );
		}
		this.beforeShow();
		this.show();
		if (this.iframeLining) {
			this.iframeLining.show();
		}
		this.afterShow();
		this.isOpen = true;
		this.owner.currentLayer = this;
		return true;
	},

	reposition: function() {
		if (this.iframeLining) {
			this.iframeLining.reposition();
		}
	},

	show: function() {
		this.contentJqo.show();
	},

	toggle: function() {
	if (this.isOpen) {
			this.close();
		} else {
			this.open();
		}
	},

	toggleWith: function(cssSelector) {
		var _this = this;

		$(cssSelector).click(function(e) {
			_this.toggle();
			return false;
		});
	},

	afterHide: function() {},
	afterShow: function() {},
	beforeHide: function() {},
	beforeShow: function() {}

});

/********************************************************************/

var LocationSelector = function() {
	this.construct();
}

$.extend(LocationSelector.prototype, Layer.prototype);

$.extend(LocationSelector.prototype, {

	afterHide: function() {
		$("a#location-selector-handle").parent().css("z-index", "10");
	},

	beforeShow: function() {
		$("a#location-selector-handle").parent().css("z-index", "11");
	},

	init: function() {
		var numberOfLocations = $("div#location-selector li").length;
		var visibleLocations = 20;
		if (numberOfLocations < visibleLocations) {
			$("div#location-selector div.slider").hide();
		} else {
			var sliderHeight = 300;
			var visibleHeight = 300;
			var handleHeight = Math.round(sliderHeight * visibleLocations / numberOfLocations);
			$("div#location-selector div.handle").css("height", handleHeight + "px");
			var locationListHeight = $("div#location-selector ul").height();

			$("div#location-selector div.slider").slider( {
				minValue: 0,
				maxValue: (locationListHeight - visibleHeight),
				slide: function(e, ui) {
					var newLocationListOffset = parseInt(- ui.value);
					$("div#location-selector ul").css("top", newLocationListOffset);
				}
			});
		}
	}

});

/********************************************************************/

var SiteMap = function() {
	this.construct();
}

$.extend(SiteMap.prototype, Layer.prototype);

$.extend(SiteMap.prototype, {

	getContent: function() {
		return $("div#sitemap");
	},

	init: function() {
		var handleLeftOffset = $("a#site-map-handle").parent().position().left;
		var handleWidth = $("a#site-map-handle").outerWidth();
		$("div#sitemap-tab").css({
			left: (handleLeftOffset - 32) + "px",
			width: (handleWidth + 20) + "px"
		});
		this.toggleWith("div#sitemap-tab");

		var _this = this;
		$("div#sitemap dl a.toggle").click(function() {
			$(this).parent().parent().toggleClass("collapsed").toggleClass("expanded");
			_this.reposition();
		});
	}

});

/********************************************************************/

var iframeLining = function(layer) {
	this.layer = layer;
	this.liningJqo = $('<iframe src="javascript:false" frameborder="0" style="background:transparent; display: none; filter:alpha(opacity=0); margin:0; padding:0; position:absolute;"></iframe>');
	this.layer.contentJqo.parent().prepend(this.liningJqo); // parent is of type "div.layer-wrapper"
}

$.extend(iframeLining.prototype, {

	hide: function() {
		this.liningJqo.hide();
	},

	reposition: function() {
		var contentJqo = this.layer.contentJqo;
		this.liningJqo.css({
			width: contentJqo.outerWidth() + "px",
			height: contentJqo.outerHeight() + "px",
			left: this.layer.contentJqo.css("left"),
			top: this.layer.contentJqo.css("top")
		});
	},

	show: function() {
		this.reposition();
		this.liningJqo.show();
	}
});

/* END: layer                                                       */
/********************************************************************/
/* START: tools and utilities                                       */

var Tools = {

	bookmark: function() {
		var url   = location.href;
		var title = document.title;

		if (Info.browser.isIE) {
			window.external.AddFavorite(url,title);
		} else if (window.sidebar) {
			window.sidebar.addPanel(title,url,"");
		}
	},

	isBookmarkable: function() {
		var url    = location.href;
		var server = /^(https?|ftp):/i.test(url);
		if (Info.browser.isIE7 && server) return true;
		if (Info.browser.isIEpre7) return true;
		if (Info.browser.isMozilla && window.sidebar && server) return true;
		return false;
	},

	delicious: function() {
		window.open("http://del.icio.us/post?url=" + encodeURIComponent(location.href) + "&title=" + encodeURIComponent(document.title));
	},

	digg: function() {
		window.open("http://digg.com/submit?url=" + encodeURIComponent(location.href) + "&title=" + encodeURIComponent(document.title));
	},

	print: function() {
		window.print();
	}
}

var Utilities = {

	minMax: function(value, minValue, maxValue) {
		if (value < minValue) {
			return minValue;
		} else if (value > maxValue) {
			return maxValue;
		} else {
			return value;
		}
	}
}

/* END: tools and utilities                                         */
/********************************************************************/
/* START: cookie                                                    */

var Cookie = {

	set: function(key, value, days) {
		var expires = "";
		if (days) {
			var date = new Date();
			date.setTime(date.getTime() + days * 86400000);
			var expires = "; expires=" + date.toGMTString();
		}
		document.cookie = key + "=" + value + expires + "; path=/";
	},

	get: function(key) {
		if (key) {
			var obj = Cookie.get();
			return obj[key];
		} else {
			var obj = {};
			if (document.cookie) {
				var pairs = document.cookie.split(";");
				for(i in pairs) {
					var pair = pairs[i].split("=");
					if (pair.length == 2) {
						obj[pair[0]] = pair[1];
					}
				}
			}
			return obj;
		}
	},

	unset: function(key) {
		Cookie.set(key, "", -1);
	}
}

/* END: cookie                                                      */
/********************************************************************/
/* START: stylesheet helper for IE                                  */

IEStylesheet = {

	getImportedStylesheet: function(href) {

		for (var i = 0, li = document.styleSheets.length; i < li; ++i) {
			var stylesheet = document.styleSheets(i);
			if (stylesheet.imports) {
				for (j = 0, lj = stylesheet.imports.length; j < lj; ++j) {
					var imported = stylesheet.imports(j);
					if (imported.href == href) {
						return imported;
					}
				}
			}
		}
		return null;
	},

	getRuleBySelector: function(stylesheet, selector) {
		for(var i = 0, l = stylesheet.rules.length; i < l; ++i) {
			var rule = stylesheet.rules.item(i);
			if (rule.selectorText.replace(/^\s/,"").replace(/\s$/,"").toLowerCase() == selector.toLowerCase()) {
				return rule;
			}
		}
		return null;
	}

}

/* END: stylesheet helper for IE                                    */
/********************************************************************/
/********************************************************************/
/* START: resizing the flyoutnav containers for flash flyoutnavs at runtime */

var ZINDEX_ACTIVE = 100;
var ZINDEX_INACTIVE = 1;

if (Info.browser.isIE){
/*functions for internet explorer*/
	resizeNavigation = function (divid, options){
		var $flyoutnav = $("#"+divid);
		var $flyoutnav_parent = $flyoutnav.parents(".flyoutnav_positioner:first");

		var newZIndex = ZINDEX_ACTIVE;
		var newOverflow = "visible";

		if(options){
			if(options.height) $flyoutnav.height(options.height);
		}
		$flyoutnav_parent.css({overflow: newOverflow});
		if(options.height == 42){
			setHeaderZIndex(ZINDEX_INACTIVE);
			//hideIFrame($flyoutnav);
		}else{
			setHeaderZIndex(ZINDEX_ACTIVE);
			//showIFrame($flyoutnav);
		}
	}


} else {
/*functions for all browsers except internet explorer*/

	resizeNavigation = function(divid, options){
		var $flyoutnav = $("#"+divid);
		var $flyoutnav_parent = $flyoutnav.parents(".flyoutnav_positioner:first");

		if(options){
			calculateClipping($flyoutnav, $flyoutnav_parent, options);
		}
	}
}

function calculateClipping($flyoutnav, $flyoutnav_parent, options){
	var newWidth = $flyoutnav_parent.width();
	var newHeight = $flyoutnav_parent.height();
	var newOffsetTop = 0;
	var newOffsetLeft = 0;

	if(options){
		newWidth = options.width ? options.width : $flyoutnav_parent.width();
		newHeight = options.height ? options.height : $flyoutnav_parent.height();

		if(options.valign && options.valign == "bottom" && $flyoutnav.hasClass("open")){
			newOffsetTop = $flyoutnav.height() - $flyoutnav_parent.height();
			newHeight= $flyoutnav_parent.height();
		}

		if(options.align && options.align == "right" && $flyoutnav.hasClass("open")){
			newOffsetLeft = $flyoutnav.width() - $flyoutnav_parent.width();
			newWidth= $flyoutnav_parent.width();
		}
	}

	$flyoutnav.css({clip:"rect("+newOffsetTop+"px, "+newWidth+"px, "+newHeight+"px, "+newOffsetLeft+"px)"});
	$flyoutnav.height(newHeight);
	if(newHeight == 42){
		setHeaderZIndex(ZINDEX_INACTIVE);
	}else{
		setHeaderZIndex(ZINDEX_ACTIVE);
	}
}

function setHeaderZIndex(newZIndex){
	$("#header-zone").css("z-index",newZIndex);
}

function initNavigation(){
	if($("#primary-nav-zone").length != 0){
		$("#sub-nav-zone").remove();
		$("#primary-nav-zone").addClass("flyoutnav_positioner").empty().append("<div id='prim-nav'></div>");
		var SCRIPT_NAME;
		if (screen.width <= 800) { SCRIPT_NAME = "swf/navigation_ar_800.swf"; }
		else { SCRIPT_NAME = "swf/navigation_ar.swf"; }

		var so_lf = new SWFObject(RESOURCES_PATH+ SCRIPT_NAME + "?" + new Date().getTime(), "navigation_swf", "100%", "100%", "8", "#ffffff");
		
		var mouseOutTimeout;
		
		$("#prim-nav").hover(
			function () {
				clearTimeout(mouseOutTimeout);
			}, 
			function () {
				clearTimeout(mouseOutTimeout);
				mouseOutTimeout = window.setTimeout(function () {$("#navigation_swf").get(0).SetVariable("mouseIsOver", "0");},500);
			}
		);
		
		so_lf.addParam("wmode", "transparent");
		so_lf.addParam("scale", "noscale");
		so_lf.addParam("salign", "tl");
		so_lf.addVariable("containerID", "prim-nav");
		/***** add additional params as variables *****/
		// path where xml containing navigation entries is located
		so_lf.addVariable("navXML", "/flashmenuxmlarabic.aspx?" + new Date().getTime());
		//  ID of selected navigation entry to highlight
		if(ACTIVE_ENTRY_ID) so_lf.addVariable("activeEntryID", ACTIVE_ENTRY_ID);
		
		so_lf.write("prim-nav");
	}
	//if(Info.browser.isIEpre7 || Info.os.isMac) initIFramesOnload();
}
/* END: resizing the flyoutnav containers for flash flyoutnavs at runtime */
/********************************************************************/
/********************************************************************/
/* START: iframe for navigation in ie6*/
function snycIFrame (now, fx){
	if(Info.browser.isIEpre7 || Info.os.isMac) moveIFrame(fx.elem, now);
}

function showIFrame(obj)
{
	if(!obj.iframe) obj.iframe = createIFrame(obj);
	if(!obj.iframe) return;
	var position = $(obj).position();
	obj.iframe.style.left = position.left + "px";
	obj.iframe.style.top = position.top + "px";
	obj.iframe.style.height = $(obj).outerHeight() + "px";
	obj.iframe.style.width = $(obj).outerWidth() + "px";
	obj.iframe.style.display = "block";
}

function hideIFrame(obj)
{
	if(!obj.iframe) obj.iframe = createIFrame(obj);
	if(!obj.iframe) return;
	obj.iframe.style.display = "none";
}

function createIFrame(obj)
{
	var newId = "iframe_opaque_"+iframes.length;
	var iframe = $(obj).next("iframe.opaque:first").get(0);
	if(!iframe){
		$(obj).after("<iframe id='"+newId+"' class='opaque' frameBorder='0' scrolling='no'></iframe>");
		iframe = $(obj).next("iframe.opaque:first").get(0);
	}
	if(!jQuery.inArray(iframe, iframes)) iframes.push(iframe);
	obj.iframe = iframe;

	return iframe;
}

function createIFrames()
{
	createIFrame($("#prim-nav").get(0));
	return;
}

var iframes = [];
function initIFramesOnload()
{
	createIFrames();
}
/* END: iframe for navigation in ie6*/
/********************************************************************/
