var Design = new CDesign();
var Slider = new CSlider();
function CDesign()
{
	this.sliders = new Array(3);
	this.tempHolder = '';
	this.searchHtml = null;
}
function CSlider()
{
	this.slider = null;
	this.handle = null;
	this.scrollTime = 1000;
	this.scrollPixels = 0;
	this.thumbHeight = 0;
	this.thumbPos = 0;
	this.scrollTop = 0;
}
CDesign.prototype.initScroller = function(sliderBg, sliderThumb, divId)
{
	try 
	{
		var divElem = Common.findById(divId);
		var thumbElem = Common.findById(sliderThumb);
		if(divElem == null || thumbElem == null)
			return;
		var upLimit = 0;
		var downLimit = divElem.offsetHeight-thumbElem.offsetHeight;
		YAHOO.util.Event.onDOMReady(function () {
			
	    // Create the Slider instance
	    var slider = YAHOO.widget.Slider.getVertSlider(
	                sliderBg, sliderThumb, upLimit, downLimit);
	    var sliderObj = new CSlider();
		sliderObj.thumbHeight = downLimit - upLimit;
	    sliderObj.slider = slider;
	    var scrollScreens = divElem.scrollHeight/divElem.offsetHeight;
	    scrollScreens = scrollScreens + (scrollScreens/5);
	    sliderObj.scrollPixels = Number(Math.ceil(downLimit/scrollScreens));
	    /*if(sliderObj.scrollPixels < 1)
	    	sliderObj.scrollPixels = 1;*/
		Design.sliders[divId] = sliderObj;
	 	slider.subscribe('change', function (offsetFromStart) {
			var mov = offsetFromStart * ((divElem.scrollHeight-divElem.offsetHeight)/(downLimit-5));
			divElem.scrollTop = mov;
			});
		});
		var sliderBgElem = Common.findById(sliderBg);
		if(sliderBgElem == null)
			return;
		sliderBgElem.style.height = divElem.offsetHeight + 'px';
	} 
	catch(e)
	{
	}
}
CDesign.prototype.scrollUp = function(divId, action)
{
	try
	{
		var sliderObj = this.sliders[divId];
		//start
		if(action == 0) {
			Design.tempHolder = divId;
			sliderObj.handle = setTimeout('upScroll()', sliderObj.scrollTime);
		} 
		//stop
		else if(action == 1) {
			clearInterval(sliderObj.handle);
			sliderObj.handle = null;
			Design.tempHolder = '';
		}
	}
	catch(e)
	{
	}
}
function upScroll()
{
	try
	{
		var sliderObj = Design.sliders[Design.tempHolder];
		if(sliderObj == null || sliderObj.slider == null)
			return;
		var slider = sliderObj.slider;
		var currentValue = slider.getValue();
		var newValue = currentValue + sliderObj.scrollPixels;
		slider.setValue(newValue, false, true, false);
		setTimeout('upScroll()', sliderObj.scrollTime);
	}
	catch(e)
	{
	}
}
CDesign.prototype.scrollToElement = function(divId, elem)
{
	try
	{
		var sliderObj = this.sliders[divId];
		if(sliderObj == null || sliderObj.slider == null)
			return;
		var slider = sliderObj.slider;
		var divElem = Common.findById(divId);
		if(divElem != null) 
		{	
			var elemOffsetTop = getOffsetTop_IE(elem, divElem);
			var divScrollTop = Number(Math.ceil(elemOffsetTop - divElem.offsetTop));
			var screenToJump = Number(Math.ceil(divScrollTop/divElem.offsetHeight));
			slider.setValue(screenToJump * sliderObj.scrollPixels, true, true, true);
			setTimeout("setScrollTop('"+divElem.id+"',"+divScrollTop+")", 500);
		}	
	}
	catch(e)
	{
	}
}
function setScrollTop(divElemId, divScrollTop)
{ 
	try
	{
		Common.findById(divElemId).scrollTop = divScrollTop;
	}
	catch(e)
	{
	}
}
function getOffsetTop_IE(elem, divElem)
{
	var curTop = 0;
	try
	{
		if(navigator.appName != "Microsoft Internet Explorer")
		{
			return elem.offsetTop;
		}
		var ieVersion = 0.0;
		if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))//test for MSIE x.x;
		{ 	
			ieVersion = new Number(RegExp.$1); // capture x.x portion and store as a number		
		}
		
		if(elem.offsetParent && ieVersion < 8) 
		{
			do 
			{
				if(elem.id == divElem.parentNode.id)
					break;
				curTop += elem.offsetTop;
			} while(elem = elem.offsetParent)
		}
		else
		{
			return elem.offsetTop;
		}		
	} 
	catch(e)
	{	
	}
	return curTop;
}
CDesign.prototype.scrollDown = function(divId, action)
{
	try
	{
		var sliderObj = this.sliders[divId];
		//start
		if(action == 0) {
			Design.tempHolder = divId;
			sliderObj.handle = setTimeout('downScroll()', sliderObj.scrollTime);
		} 
		//stop
		else if(action == 1) {
			clearInterval(sliderObj.handle);
			sliderObj.handle = null;
			this.tempHolder = '';
		}
	}
	catch(e)
	{
	}
}
function downScroll()
{
	try
	{
		var sliderObj = Design.sliders[Design.tempHolder];
		if(sliderObj == null || sliderObj.slider == null)
			return;	
		var slider = sliderObj.slider;
		var currentValue = slider.getValue();
		var newValue = currentValue - sliderObj.scrollPixels;
		slider.setValue(newValue, false, true, false);
		setTimeout('downScroll()', sliderObj.scrollTime);
	}
	catch(e)
	{
	}
}
CDesign.prototype.setActiveElem = function(containerId, tagName, selElemId)
{
	try
	{
		var elems = Common.searchElems(containerId, tagName);
		if(elems != null) 
		{
			for(var a=0;a<elems.length;a++)
			{
				var elem = elems[a];
				var clsName = elem.className;
				if(clsName != null && (clsName == 'activeListLnk' || clsName.indexOf('activeListLnk') >= 0))
				{				
					this.replaceClass(elem.id, 'activeListLnk', 'listLnk');
				}	
			}	
		}
		this.replaceClass(selElemId, 'listLnk', 'activeListLnk');
	}
	catch(e)
	{
	}
}
CDesign.prototype.setActiveElemTabe = function(containerId, tagName, selElemId)
{
	try
	{
		var elems = Common.searchElems(containerId, tagName);
		if(elems != null) 
		{
			for(var a=0;a<elems.length;a++)
			{
				var elem = elems[a];
				var clsName = elem.className;
				if(clsName != null && (clsName == 'current' || clsName.indexOf('current') >= 0))
				{				
					this.replaceClass(elem.id, 'current', 'none');
				}	
			}	
		}
		this.replaceClass(selElemId, 'none', 'current');
	}
	catch(e)
	{
	}
}
CDesign.prototype.setActiveTabe = function(containerId, tagName, selElemId, oldClass, newClass)
{
	try
	{
		var elems = Common.searchElems(containerId, tagName);
		if(elems != null) 
		{
			for(var a=0;a<elems.length;a++)
			{
				var elem = elems[a];
				var clsName = elem.className;
				if(clsName != null && (clsName == newClass || clsName.indexOf(newClass) >= 0))
				{				
					this.replaceClass(elem.id, newClass, oldClass);
				}	
			}	
		}
		this.replaceClass(selElemId, oldClass, newClass);
	}
	catch(e)
	{
	}
}

CDesign.prototype.getActiveElem = function(containerId, tagName)
{
	try
	{
		var elems = Common.searchElems(containerId, tagName);
		if(elems != null) 
		{
			for(var a=0;a<elems.length;a++)
			{
				var elem = elems[a];
				var clsName = elem.className;
				if(clsName != null && (clsName == 'activeListLnk' || clsName.indexOf('activeListLnk') >= 0))
				{				
					return elem;
				}	
			}	
		}
	}
	catch(e)
	{
	}
}
CDesign.prototype.controlNavigation = function(prevLnkId, nextLnkId, currentAayat, aayatCount)
{
	try
	{
		var oldClsName = null;
		var newClsName = null;
		if(currentAayat == 1)
		{
			newClsName = 'hide';
			oldClsName = 'show';
		}
		else 
		{
			newClsName = 'show';
			oldClsName = 'hide';
		}
		this.replaceClass(prevLnkId, oldClsName, newClsName);	
		if(currentAayat >= aayatCount)
		{
			newClsName = 'hide';
			oldClsName = 'show';
		}
		else 
		{
			newClsName = 'show';
			oldClsName = 'hide';
		}
		this.replaceClass(nextLnkId, oldClsName, newClsName);
	}
	catch(e)
	{
	}
}

CDesign.prototype.replaceClass = function(elemId, oldClsName, newClsName)
{
	try
	{
		var elem = Common.findById(elemId);
		if(elem != null)
		{
			var clsName = elem.className;
			if(oldClsName == null)
				elem.className = clsName + ' ' + newClsName;
			else
			{
				if(clsName.indexOf(oldClsName) < 0)
					elem.className = clsName + ' ' +newClsName;
				elem.className = clsName.replace(oldClsName, newClsName);
			}
		}
	}
	catch(e)
	{
	}
}
CDesign.prototype.resize = function(imgElemId, maxWidth) {
	try
	{
		var imgElem = Common.findById(imgElemId);
		if (imgElem == undefined || imgElem == null)
			return false;
		if(imgElem.width > maxWidth) 
			imgElem.width = maxWidth;
	}
	catch(e)
	{
	}
}

CDesign.prototype.setHome = function() {
	try 
	{
		if (document.all) {
			document.body.style.behavior = 'url(#default#homepage)';
			document.body.setHomePage(window.location.href);
		} else if (window.sidebar) {
			if (window.netscape) {
				try {
					netscape.security.PrivilegeManager
							.enablePrivilege('UniversalXPConnect');
				} catch (e) {
					alert('this action was aviod by your browser,if you want to enable,please enter about:config in your address line,and change the value of signed.applets.codebase_principal_support to true');
				}
			}
			var prefs = Components.classes['@mozilla.org/preferences-service;1']
					.getService(Components.interfaces.nsIPrefBranch);
			prefs.setCharPref('browser.startup.homepage', window.location.href);
		}
	}
	catch(e)
	{
	}
}
CDesign.prototype.setFocus = function(elemId)
{
	try
	{
		var elem = Common.findById(elemId);
		if(elem != null)
			elem.focus();
	}
	catch(e)
	{
	}
}
CDesign.prototype.searchDropdownKeyHandler = function(thisElement, code, searchTextboxId)
{
	try
	{
		var elems = Common.searchElems('suggestDDN', 'a');
		var selIndex = Common.findElemIndex(elems, 'activeListLnk');
		var searchTextboxElem = Common.findById(searchTextboxId);		
			
		//Enter
		if(code == 13)
		{
			//Namaz.searchCityTimings(cityId, countryId, cityName);
			window.location.href = thisElement.href;
			return;
		}
		//Up arrow
		else if(code == 40) 
		{			
			if(selIndex == null)
			{
				selIndex = 0;
			}
			else if(selIndex == elems.length -1) 
			{
				selIndex = -1;
			}
			else 
			{
				selIndex = selIndex + 1;
			}
		}
		//Down arrow
		else if(code == 38)
		{
			if(selIndex == null)
			{
				selIndex = elems.length - 1;
			}
			else if(selIndex == 0) 
			{
				selIndex = -1;
			}
			else 
			{
				selIndex = selIndex - 1;
			}
		}
		//Escape
		else if(code == 27)
		{
			Design.replaceClass('searchPane', 'show', 'hide');
			Design.setFocus('searchText');
			return;
		}
		if(selIndex == -1 && searchTextboxElem == null)
			selIndex = 0;
		var elem = null;
		if(selIndex == -1)
		{
			elem = searchTextboxElem;			
		}	
		else
		{
			elem = elems[selIndex];			
		}
		this.setActiveElem('suggestDDN', 'a', elem.id);
		this.setFocus(elem.id);
	}
	catch(e)
	{
	}
}
CDesign.prototype.searchTextboxKeyHandler = function(code)
{
	try
	{
		var elems = Common.searchElems('suggestDDN', 'a');
		var selIndex = Common.findElemIndex(elems, 'activeListLnk');

		
		var searchPaneVisible = false;
		var searchPaneElem = Common.findById('searchPane');
		if(searchPaneElem != null && searchPaneElem.className.indexOf('show') >= 0)
			searchPaneVisible = true;
	
		//Down arrow
		if(code == 40) 
		{
			if(searchPaneVisible)
				selIndex = 0;
			else {
				Design.replaceClass('searchPane', 'hide', 'show');
				Design.setFocus('suggest_0');
			}
		}
		//Up arrow
		else if(searchPaneVisible && code == 38)
		{
			selIndex = elems.length - 1;
		}
		//Escape
		else if(searchPaneVisible && code == 27)
		{
			Design.replaceClass('searchPane', 'show', 'hide');
			Design.setFocus('searchText');
			return;
		}
		else if(code == 13)
		{
			ajaxTextSearch();
			return;
		}
		else
		{
			return;
		}
		if(searchPaneVisible)
		{
			var elem = elems[selIndex];
			this.setActiveElem('suggestDDN', 'a', elem.id);
			this.setFocus(elem.id);
		}	
	}
	catch(e)
	{
	}
}
CDesign.prototype.scrollToHeader = function()
{
	try
	{
		window.scrollTo(0,226);
		if(Ajax != null && Ajax.initHistory != null)
			setTimeout(function() { try { Ajax.initHistory(); } catch(e) { } }, 100);
	}
	catch(e)
	{
	}
}
CDesign.prototype.markErroneous =  function(elem, flag)
{
	try
	{
		var clsName = elem.className;
		//mark
		if(flag)
		{
			if(clsName.indexOf('erroneous') < 0)
			{
				clsName = clsName + ' erroneous';
				elem.className = clsName;
			}
		}
		//umark
		else
		{
			if(clsName.indexOf('erroneous') >= 0)
			{
				clsName = clsName.replace('erroneous', '');
				elem.className = clsName;
			}
		}
	}
	catch(e)
	{
	}
}
CDesign.prototype.saveScrollerPosition = function(divId)
{
	try
	{
		var divElem = Common.findById(divId);
		var sliderObj = this.sliders[divId];
		if(sliderObj == null || sliderObj.slider == null || divElem == null)
			return;	
		var slider = sliderObj.slider;
		sliderObj.thumbPos = slider.getValue();
		sliderObj.scrollTop = divElem.scrollTop;
	}
	catch(e)
	{		
	}
}
CDesign.prototype.restoreScrollerPosition = function(divId)
{
	try
	{
		var divElem = Common.findById(divId);
		var sliderObj = this.sliders[divId];
		if(sliderObj == null || sliderObj.slider == null || divElem == null)
			return;	
		var slider = sliderObj.slider;
		slider.setValue(sliderObj.thumbPos, false, true, false);
		divElem.scrollTop = sliderObj.scrollTop;
	}
	catch(e)
	{
	}
}
CDesign.prototype.getRadioButtonSelection = function(elemName)
{
	try
	{
		var elems = Common.findByName(elemName);
		if(elems == null)
			return null;
		for (i=0; i < elems.length; i++) 
		{
			if (elems[i].checked) 
			{
				return elems[i].value;
			}
		}
	}
	catch(e)
	{
	}
	return null;
}
CDesign.prototype.limitTextarea = function(field, maxlimit) 
{
	try
	{
		if (field.value.length > maxlimit) // if too long...trim it!
			field.value = field.value.substring(0, maxlimit);
	}
	catch(e)
	{		
	}
}

CDesign.prototype.initOverlays = function()
{
	try
	{
		// create custom animation algorithm for jQuery called "drop" 
		jQuery.easing.drop = function (x, t, b, c, d) {
			return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
		};
	
		// create custom overlay effect for jQuery Overlay
		jQuery.tools.overlay.addEffect("drop",  
			
			// loading animation
			function(done) { 
				var animateProps = {
					top: '+=55', 
					opacity: 1, 
					width: '+=20'
				};
				this.getOverlay().animate(animateProps, "medium", 'drop', done).show();
			}, 
			
			// closing animation
			function(done) {
				var animateProps = {
					top: '-=55', 
					opacity: 0, 
					width: '-=20'
				};
				this.getOverlay().animate(animateProps, "fast", 'drop', function()  {
					jQuery(this).hide();
					done.call();		
				});
			}
		);
	
	
		jQuery("a[rel].overlay_mark").overlay({
			onClose: function(event) {
				jQuery("#subscriptionMsg").html("");
				var img_src = jQuery("#captcha").attr("src");
				img_src += "1";
				jQuery("#captcha").attr("src", img_src);
				jQuery("#emailAddressNL").attr("value", "");
				jQuery("#captchaText").attr("value", "");
			}
		});
	}
	catch(e)
	{		
	}
}

CDesign.prototype.initBanners = function() {
	
	var container = jQuery("#bannerContainer");
	container.wtRotator({
		width:630,
		height:198,
		/*width:430,
		height:182,
		button_width:24,
		button_height:24,*/
		button_width:16,
		button_height:16,
		button_margin:4,
		auto_start:true,
		delay:6000,
		transition:"random",
		transition_speed:800,
		block_size:75,
		vert_size:55,
		horz_size:50,
		cpanel_align:"BR",
		display_thumbs:true,
		display_dbuttons:true,
		display_playbutton:true,
		display_tooltip:true,
		display_numbers:true,
		display_timer:true,
		mouseover_pause:false,
		cpanel_mouseover:false,
		text_mouseover:false,
		text_effect:"fade",
		/*shuffle:true,*/
		block_delay:25,
		vstripe_delay:73,
		hstripe_delay:183
	});
	
	var cpAlign = jQuery("#cpalignments");
	var cpanelCB = jQuery("#cpanel-cb");
	var thumbCB = jQuery("#thumbs-cb");
	var dBtnsCB = jQuery("#dbuttons-cb");
	var playBtnCB = jQuery("#playbutton-cb");
	var tooltipCB = jQuery("#tooltip-cb");
	
	jQuery("#transitions").val("random").change(
		function() {
			container.updateTransition((this).val());
		}
	);
	
	jQuery("#texteffects").val("fade").change(
		function() {
			container.updateTextEffect((this).val());
		}
	);
	
	cpAlign.val("BR").change(
		function() {
			container.updateCpAlign((this).val());
		}
	);
	
	thumbCB.attr("checked", "checked").change(
		function() {
			var val = (this).attr("checked");
			tooltipCB.attr("disabled", !val); 
			container.displayThumbs(val);
			checkCPanel();	
		}
	);
	
	dBtnsCB.attr("checked", "checked").change(
		function() {
			container.displayDButtons((this).attr("checked"));
			checkCPanel();
		}				
	);

	playBtnCB.attr("checked", "checked").change(
		function() {
			container.displayPlayButton((this).attr("checked"));
			checkCPanel();
		}				
	);
	
	tooltipCB.attr("checked", "checked").change(
		function() {
			container.displayTooltip((this).attr("checked"));	
		}				
	);					
	
	jQuery("#timer-cb").attr("checked", "checked").change(
		function() {
			container.displayTimerBar((this).attr("checked"));	
		}				
	);						
	
	jQuery("#pause-cb").attr("checked", "").change(
		function() {
			container.updateMouseoverPause((this).attr("checked"));
		}				
	);		
	
	jQuery("#text-cb").attr("checked", "").change(
		function() {
			container.updateMouseoverDesc((this).attr("checked"));
		}				
	);
	
	cpanelCB.attr("checked", "").change(
		function() {
			container.updateMouseoverCP((this).attr("checked"));
		}				
	);
	
	var checkCPanel = function() {
		var val = (thumbCB.attr("checked") || dBtnsCB.attr("checked") || playBtnCB.attr("checked"));
		cpanelCB.attr("disabled", !val);
		cpAlign.attr("disabled", !val);
	}				
}
