/* UTILITY */

function getRandom(min,max) {
     result=min-1;
     while (result<min || result>max) {
          result=Math.round(Math.random()*(max+2));
          result-=1;
     }
     return result;
}

function convertRange(inVal,inRangeBottom,inRangeTop,outRangeBottom,outRangeTop) {
     inRange=Math.abs(inRangeTop-inRangeBottom);
     outRange=Math.abs(outRangeTop-outRangeBottom);
     valPosition=Math.abs(inVal-inRangeBottom)/inRange;
     outVal=(valPosition*outRange)+outRangeBottom;
     return outVal;
}

//get URL variables
var GETS={};
var hadGets=false;
var sGet=window.location.search;
if (sGet) {
     hadGets=true;
     processGETS(sGet);
}
function processGETS(sGet) {
     sGet=sGet.substr(1);
     var sNVPairs=sGet.split('&');
     for (var i=0;i<sNVPairs.length;i++) {
          var sNV=sNVPairs[i].split('=');
          GETS[sNV[0]]=sNV[1];
     }
}

// cookies

function createCookie(name,value,days) {
	//console.log('create cookie '+name+' '+value+' '+days);
	var expires='';
	if (days!=undefined) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		expires = '';//"; expires="+date.toGMTString();
	}
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
     var nameEQ = name + "=";
     var ca = document.cookie.split(';');
     for (var i=0;i < ca.length;i++) {
          var c = ca[i];
          while (c.charAt(0)==' ') c = c.substring(1,c.length);
          if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
     }
     return null;
}

function eraseCookie(name) {
     createCookie(name,"",-1);
}

function loadjscssfile(filename, filetype) {
     if (filetype=="js"){ //if filename is a external JavaScript file
          var fileref=document.createElement('script');
          fileref.setAttribute("type","text/javascript");
          fileref.setAttribute("src", filename);
     } else if (filetype=="css"){ //if filename is an external CSS file
          var fileref=document.createElement("link");
          fileref.setAttribute("rel", "stylesheet");
          fileref.setAttribute("type", "text/css");
          fileref.setAttribute("href", filename);
     }
     if (typeof fileref!="undefined") {
          document.getElementsByTagName("head")[0].appendChild(fileref);
     }
}

/* block selection of text, used to prevent accidental selection during interaction esp. in IE */
function disableSelection(target){
if (typeof target.onselectstart!="undefined") //IE route
     target.onselectstart=function(){return false}
else if (typeof target.style.MozUserSelect!="undefined") //Firefox route
     target.style.MozUserSelect="none"
else //All other route (ie: Opera)
     target.onmousedown=function(){return false}
//target.style.cursor = "default"
}

/* IE6 PNG */
function fixPngs(classes) {
     if (isIE6) {
          DD_belatedPNG.fix(classes);
     }
}

var menuItems;
var dropDowns;
var closeTimer;
var msPer100px=80;
var minAnimTime=125;
var ddShadowSize=8;
var isIE6=(window.XMLHttpRequest==undefined && ActiveXObject!=undefined);
j(window).load(function(){

     //dropdown menu setup
     menuItems=j('.menuItem');
     dropDowns=j('.dropdownItem');
     j(menuItems).each(function(ix,el) {
          disableSelection(el);
          j(el).data('ddID',ix);
          //j(el).click(trackLink);
          //j(el).bind('touchend',trackLink); /* iOS catch (otherwise you need to click twice) */
          j(el).mouseenter(function(ev) {
	       var tgMenu=j(ev.target).closest('a.menuItem');
               var tgEl=j(dropDowns[j(tgMenu).data('ddID')]);
               j(menuItems).each(function(ix1,el1) {
                    if (ix1!=menuItems.length-1) {
                         if (ix1==j(tgMenu).data('ddID')) {
                              j(el1).addClass('on');
                              if (!isIE6) { j(menuItems[ix1+1]).addClass('shadowOn'); }
                              j(el1).children('.roImage').css('display','block');
                         } else {
                              j(el1).removeClass('on');
                              if (!isIE6) { j(menuItems[ix1+1]).removeClass('shadowOn'); }
                              j(el1).children('.roImage').css('display','none'); /* IE6 needed an extra kick here */
                         }
                    }
               });
               closeAllDropdowns(j(tgMenu).data('ddID'));
               if (tgEl.length) { // avoid triggering on invalid last "fake" menu item
                    //setTimeout(function(){
                    j(dropDowns).each(function(ix1,el1) {
                         if (ix1==j(tgMenu).data('ddID')) {
                          j(el1).clearQueue();
                          j(el1).stop();
                              j(el1).data('isOpen',true);
                              j(el1).animate({
                                   height: j(tgEl).data('fullHeight')+'px',
                                   framerate: 30
                              }, Math.max(minAnimTime,(msPer100px*(j(tgEl).data('fullHeight')/100))), 'easeInOutQuad');
                         }
                    });
                    //},100);
               }
          });
     });
	 var parent_width = 0 ;
     j(dropDowns).each(function(ix,el) {
          disableSelection(el);
		  if(!parent_width) {
			  parent_width = j(menuItems[ix]).parent().width()
			  
		  }
		  
		  j(el).css({
			   left: (j(menuItems[ix]).position().left)+'px',
			   display: 'block'
		  });
		  
          j(el).data('fullHeight',j(el).height()+ddShadowSize);
          j(el).css({
               overflow: 'hidden',
               width: (2+ddShadowSize+j(el).children('.ddBody').width()+parseInt(j(el).children('.ddBody').css('paddingLeft'))+parseInt(j(el).children('.ddBody').css('paddingRight')))+'px',
               height: '0px'
          });
		
		  if(  (j(el).position().left + j(el).width()) >  parent_width ) {
			  
//			  alert(j(menuItems[ix]).position().left);

				var left_pos = parseFloat(j(el).css('left')) - ( j(el).width() - (j(menuItems[ix]).position().left+j(menuItems[ix]).width()) + j(menuItems[ix]).position().left ) + 35;
				
				
				if(left_pos < 0) {
					left_pos = (parent_width - j(el).width()) /2;
				}
			  
			  j(el).css({
				   left: left_pos + 'px',
				   display: 'block'
			  });
			  
		  }
		  
		  
          j(el).children('.ddBody').css({
               /*position: 'absolute',*/
               bottom: '8px',
               left: '0px'
          });
          thisBody=j(el).children('.ddBody');

          // add close
          thisBody.append('<div class="ddClose"></div>');

          // add shadow
          if (!isIE6) {
               thisBody.before('<div class="ddShadowB"></div>');
               thisBody.before('<div class="ddShadowR"></div>');
               thisBody.before('<div class="ddShadowTR"></div>');
               j(el).children('.ddShadowB').width(thisBody.outerWidth());
               j(el).children('.ddShadowR').height(thisBody.outerHeight());
          }

     });

     fixPngs('.normalImage');

     // add top of right borders (to simplify HTML)
     j('.rightBorder').append('<div class="ddRightTop"></div>');

     // insert tracking in moreLinks links
     j('.moreLinksBox a').click(trackLink);
     j('.moreLinksBox a').bind('touchend',trackLink); /* iOS catch (otherwise you need to click twice) */

     // activate close buttons

     j('.ddClose').each(function (ix,el) {
          j(el).css('opacity',0.5);
          j(el).mouseover(function(ev) {
               j(ev.target).css('opacity',1);
          });
          j(el).mouseout(function(ev) {
               j(ev.target).css('opacity',0.5);
          });
          j(el).click(closeAllDropdowns);
	j(el).bind('touchend',closeAllDropdowns); /* iOS catch (otherwise you need to click twice) */
     });

     //j('body').mouseleave(closeAllDropdowns);
	 j('#menu').mouseleave(closeAllDropdowns);
     //j('#content').mouseenter(closeAllDropdowns);
     //j('#menuClearer').mouseenter(closeAllDropdowns);
     //j('#headerTop').mouseenter(closeAllDropdowns);

     //debugging, force open for quick layout check
     //j(dropDowns[0]).animate({
     //     height: j(dropDowns[0]).data('fullHeight')+'px'
     //}, 500);

});

try {
     var test=mainNavTracking;
} catch (err) {
     mainNavTracking=function(data) {
	if (console) { if (console.log) { console.log(data); } }
     }
}
function trackLink(ev) {
     mainNavTracking(j(ev.currentTarget).attr('href'));
     window.location.href=j(ev.currentTarget).attr('href');
     ev.preventDefault();
}
function trackLinkNew(inURL) {
     mainNavTracking(inURL);
     window.location.href=inURL;
}

function closeAllDropdowns(skip) {
     j(menuItems).each(function(ix,el) {
          if (skip!=ix) {
               j(menuItems[ix]).removeClass('on');
               j(menuItems[ix]).children('.roImage').css('display','none'); /* IE6 needed an extra kick here */
               j(menuItems[ix+1]).removeClass('shadowOn');
          }
     });
     j(dropDowns).each(function(ix,el) {
          if (j(el).data('isOpen') && skip!=ix) {
               j(el).clearQueue();
               j(el).stop();
               j(el).animate({
                    height: '0px',
		framerate: 30
               }, Math.min(minAnimTime,(msPer100px*(j(el).data('fullHeight')/100)/2)), 'easeInOutQuad');
               j(el).data('isOpen',false);
          }
     });
     fixPngs('.normalImage');
}

// Side menu
j(function() {
	j('.side_menu ul li a').click(function() {
		j(this).next('ul').toggle();
		return false;
	});
});
