/**
	 * reflection.js v1.9
	 * http://cow.neondragon.net/stuff/reflection/
	 * Freely distributable under MIT-style license.
	 */
	 
	/* From prototype.js */
	if (!document.myGetElementsByClassName) {
		document.myGetElementsByClassName = function(className) {
			var children = document.getElementsByTagName('*') || document.all;
			var elements = new Array();
		  
			for (var i = 0; i < children.length; i++) {
				var child = children[i];
				var classNames = child.className.split(' ');
				for (var j = 0; j < classNames.length; j++) {
					if (classNames[j] == className) {
						elements.push(child);
						break;
					}
				}
			}
			return elements;
		}
	}

	var Reflection = {
		defaultHeight : 0.5,
		defaultOpacity: 0.5,
		
		add: function(image, options) {
//		image.width=28;
//		image.height=300;		
			Reflection.remove(image);
			
			doptions = { "height" : Reflection.defaultHeight, "opacity" : Reflection.defaultOpacity }
			if (options) {
				for (var i in doptions) {
					if (!options[i]) {
						options[i] = doptions[i];
					}
				}
			} else {
				options = doptions;
			}
		
			try {
				var d = document.createElement('div');
				var p = image;
				
				var classes = p.className.split(' ');
				var newClasses = '';
				for (j=0;j<classes.length;j++) {
					if (classes[j] != "reflect") {
						if (newClasses) {
							newClasses += ' '
						}
						
						newClasses += classes[j];
					}
				}

				var reflectionHeight = Math.floor(p.height*options['height']);
				var divHeight = Math.floor(p.height*(1+options['height']));
				
				var reflectionWidth = p.width;
				
				if (document.all && !window.opera) {
					/* Fix hyperlinks */
					if(p.parentElement.tagName == 'A') {
						var d = document.createElement('a');
						d.href = p.parentElement.href;
					}  
	                    
					/* Copy original image's classes & styles to div */
					d.className = newClasses;
					p.className = 'reflected';
					
					d.style.cssText = p.style.cssText;
					p.style.cssText = 'vertical-align: bottom';
				
					var reflection = document.createElement('img');
					reflection.src = p.src;
					reflection.style.width = reflectionWidth+'px';
					reflection.style.display = 'block';
					reflection.style.height = p.height+"px";
					reflection.style.marginBottom = "-"+(p.height-reflectionHeight)+'px';
					reflection.style.filter = 'flipv progid:DXImageTransform.Microsoft.Alpha(opacity='+(options['opacity']*100)+', style=1, finishOpacity=0, startx=0, starty=0, finishx=0, finishy='+(options['height']*100)+')';
					
					d.style.width = reflectionWidth+'px';
					d.style.height = divHeight+'px';
					p.parentNode.replaceChild(d, p);
					
					d.appendChild(p);
					d.appendChild(reflection);
					//alert(d.outerHTML);
				} 
				else 
				{
					var canvas = document.createElement('canvas');
					if (canvas.getContext) 
					{
						/* Copy original image's classes & styles to div */
						d.className = newClasses;
						p.className = 'reflected';
						
						d.style.cssText = p.style.cssText;
						p.style.cssText = 'vertical-align: bottom';
				
						var context = canvas.getContext("2d");
					
						canvas.style.height = reflectionHeight+'px';
						canvas.style.width = reflectionWidth+'px';
						canvas.height = reflectionHeight;
						canvas.width = reflectionWidth;
						
						d.style.width = reflectionWidth+'px';
						d.style.height = divHeight+'px';
						p.parentNode.replaceChild(d, p);
						
						d.appendChild(p);
						d.appendChild(canvas);
						
						context.save();
						
						context.translate(0,image.height-1);
						context.scale(1,-1);
						

						context.drawImage(image, 0, 0, reflectionWidth, image.height);

						context.restore();
						
						context.globalCompositeOperation = "destination-out";
						var gradient = context.createLinearGradient(0, 0, 0, reflectionHeight);
						
						gradient.addColorStop(1, "rgba(255, 255, 255, 1.0)");
						gradient.addColorStop(0, "rgba(255, 255, 255, "+(1-options['opacity'])+")");
			
						context.fillStyle = gradient;
						if (navigator.appVersion.indexOf('WebKit') != -1) {
							context.fill();
						} else {
							context.fillRect(0, 0, reflectionWidth, reflectionHeight*2);
						}
					}
				}
			} catch (e) {
			}
		},
		
		remove : function(image) {
			if (image.className == "reflected") {
				image.className = image.parentNode.className;
				image.parentNode.parentNode.replaceChild(image, image.parentNode);
			}
		}
	}

	function addReflections() {	
		var rimages = document.myGetElementsByClassName('reflect');
		for (i=0;i<rimages.length;i++) {			
			var rheight = null;
			var ropacity = null;
			
			var classes = rimages[i].className.split(' ');
			for (j=0;j<classes.length;j++) {
				if (classes[j].indexOf("rheight") == 0) {
					var rheight = classes[j].substring(7)/100;
				} else if (classes[j].indexOf("ropacity") == 0) {
					var ropacity = classes[j].substring(8)/100;
				}
			}
			
			if (document.all && !window.opera) //IE
			{
				if (window.location.pathname == "/ProductsDetail.aspx")
					rimages[i].width=300;
				Reflection.add(rimages[i], { height: rheight, opacity : ropacity});
			}
			else
			{
				CheckAndAddReflection(Reflection, rimages[i], 1, rheight, ropacity);
			}
		}
	}
	
	function CheckAndAddReflection(reflection, image, times, rheight, ropacity)
	{
		if (image.width == 0 && times < 25)
		{
			setTimeout(
				function()
				{
					CheckAndAddReflection(reflection, image, times++, rheight, ropacity);
				}, 5);
		}
		else 
		{
			reflection.add(image, { height: rheight, opacity : ropacity});
		}
	}
 
	var previousOnload = window.onload;
	window.onload = function () 
	{ 
		try
		{
			if(previousOnload) 
				previousOnload();
			addReflections();
			
			Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);	
		}
		catch(err){}
	}
	function CopyObject(objectToCopy)
	{
		for (i in objectToCopy)
		{
			if ( typeof objectToCopy[i] == 'object')
				this[i] = new CopyObject([i]);
			else this[i] = objectToCopy[i];			
		}
		return this;
	}
	
	var ObjectHandler = 
	{
		//public method
		getCloneOfObject: function(oldObject) 
						{
							var tempClone = {};
							if (typeof(oldObject) == 'object')
							for (prop in oldObject)
							// for array use private method getCloneOfArray
							if ((typeof(oldObject[prop]) == 'object') && (oldObject[prop]).__isArray)
								tempClone[prop] = this.getCloneOfArray(oldObject[prop]);
							// for object make recursive call to getCloneOfObject
							else if (typeof(oldObject[prop]) == 'object')
								tempClone[prop] = this.getCloneOfObject(oldObject[prop]);
							// normal (non-object type) members
							else	tempClone[prop] = oldObject[prop];
							return tempClone;
						},
		//private method (to copy array of objects) - getCloneOfObject will use this internally
		getCloneOfArray: function(oldArray) 
						{
							var tempClone = [];
							for (var arrIndex = 0; arrIndex <= oldArray.length; arrIndex++)
							if (typeof(oldArray[arrIndex]) == 'object')
								tempClone.push(this.getCloneOfObject(oldArray[arrIndex]));
							else
								tempClone.push(oldArray[arrIndex]);
							return tempClone;

						}
	};

	function EndRequestHandler(sender, args) 
	{		
		//Add reflection on each ajax call
		 addReflections();

		  //Google Tracking depending on Ajax call page	
		  //'LocationSearch' defines the actual path of the page with querystring	  
		  //'LocationSearch' should be defined inside the updatepanel of the actual page
 		  _uacct = "UA-2391794-1";
 		  _udl = ObjectHandler.getCloneOfObject(location);
 		  _uff = undefined;
 		  if (document.getElementById('LocationSearch') != undefined)
 		  {
 			if (document.getElementById('LocationSearch').value == _udl.search)
 				return;
 			_udl.search = document.getElementById('LocationSearch').value + "&IsAjaxCall=true";
 		  }
		  urchinTracker();
		  
		  //RefreshScrolling in product page
		  if (window.location.pathname == "/Products.aspx")
		  {
			RefreshScrolling();

			var agt=navigator.userAgent.toLowerCase();
			var major = parseInt(navigator.appVersion);

			var ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
			var ie3    = (ie && (major < 4));
			var ie4    = (ie && (major == 4) && (agt.indexOf("msie 4")!=-1) );
			var ie4up  = (ie  && (major >= 4));
			var ie5    = (ie && (major == 4) && (agt.indexOf("msie 5.0")!=-1) );
			var ie5_5  = (ie && (major == 4) && (agt.indexOf("msie 5.5") !=-1));
			var ie5up  = (ie  && !ie3 && !ie4);
			var ie5_5up =(ie && !ie3 && !ie4 && !ie5);
			var ie6    = (ie && (major == 4) && (agt.indexOf("msie 6.")!=-1) );
			var ie6up  = (ie  && !ie3 && !ie4 && !ie5 && !ie5_5);
			var ie6down  = (ie  && (ie3 || ie4 || ie5 || ie5_5 || ie6));
			if (ie6down) RefreshPNG();				
		  }
		  
		  if (window.location.pathname == "/ProductsDetail.aspx")		  
		  {
			  var IsFooterRendered = false;
  			  for (var i = 0; i < sender._panelsToRefreshIDs.length; i++)
			  {
			  	  if (sender._panelsToRefreshIDs[i] == "ctl00$Footer1$upFooterLinks")
				  	  IsFooterRendered = true;
			  }

			  if (IsFooterRendered)  // If footer is refreshed, update legal links for controls
			  {
					$(document).ready
					(
						function()
						{			
						  $("#ctl00_Footer1_linkLegal").click
						  (
							function () 
							{	
								if(!$("#sliderContacts").is(":hidden"))
								{	
									setTimeout("$(\"#sliderTerms\").slideToggle(\"normal\",LoadTerms)", 400);
									$("#sliderContacts").slideToggle("normal",LoadContact);
								}
								else $("#sliderTerms").slideToggle("normal",LoadTerms);
							}
						  );
				  
						  $("#ctl00_Footer1_linkCustomerService").click(
							function () 
							{
								if(!$("#sliderTerms").is(":hidden"))
								{
									setTimeout("$(\"#sliderContacts\").slideToggle(\"normal\",LoadContact)", 400);		
									$("#sliderTerms").slideToggle("normal",LoadTerms);			
								}
								else  $("#sliderContacts").slideToggle("normal",LoadContact);
							}
						);
						}
					);
				}
		  }
	}

