dojo.require("dojo.fx");
dojo.require("dojo.fx.easing");
//Navigation status
function TopNav() {
	this.activeMenu=null;
	this.menuToShow=null;
	this.timerId=null;
	this.runningAnim=null;
	this.menuTimeOut=300;
}
TopNav.prototype.init=function() {
	dojo.query( '#frameNaviMenu > ul > li')
		.onmouseenter(this, function(evt) {
			this.clearTimeout();
			if (this.activeMenu==evt.currentTarget) {
				return;
			}
			this.menuToShow=evt.currentTarget;
			if (this.activeMenu==null) {
				this.updateMenu();
			} else {
				this.startTimeout();
			}
		})
		.onmouseleave(this, function(evt) {
			this.clearTimeout();
			if (this.menuToShow==evt.currentTarget) {
				this.menuToShow=null;
				return;
			}
			this.startTimeout();
		});
};
TopNav.prototype.startTimeout=function() {
	var that=this;
	this.timerId=setTimeout(function(){that.updateMenu();},this.menuTimeOut);
};
TopNav.prototype.clearTimeout=function() {
	this.menuToShow=null;
	clearTimeout(this.timerId);
};
TopNav.prototype.updateMenu=function() {
	var animArr=[];
	var displayElm=null;
	if (this.runningAnim!=null&&this.runningAnim.status()=='playing') {
		this.runningAnim.stop(false);
	}
	var hideElms=dojo.query('#frameNaviMenu > ul > li.navOpen');
	var filterElm=this.menuToShow;
	hideElms = hideElms.filter(function(item){
		return filterElm==null||filterElm!=item;
	});
	hideElms.forEach(function(node){
		var elms = dojo.query('ul',node);
		if (elms.length == 1) {
			if (!dojo.isIE || dojo.isIE > 7) {
				animArr.push(dojo.fx.wipeOut({node:elms[0], duration:250, easing:dojo.fx.easing.quintOut}));
			} else {
				animArr.push(dojo.anim(node,{display:'none'},1));
			}
		}
	});
	if (this.menuToShow!=null) {
		var elms = dojo.query('ul',this.menuToShow);
		if (elms.length == 1) {
			displayElm=elms[0];
			if (!dojo.isIE || dojo.isIE > 7) {
				animArr.push(dojo.fx.wipeIn({node:elms[0], duration:250, easing:dojo.fx.easing.quintOut}));
			} else {
				animArr.push(dojo.anim(displayElm,{display:''},1));
			}
		}
	}
	this.runningAnim=dojo.fx.combine(animArr);
	dojo.connect(this.runningAnim,"onEnd",function(){
		if(displayElm!=null){
			displayElm.style.display = '';
		}
		hideElms.forEach(function(node){
			dojo.removeClass(node,'navOpen');
			var elms = dojo.query('ul',node);
			if (elms.length == 1) {
				dojo.style(elms[0],'display','none');
			}
		});
	});
	if (this.menuToShow!=null) {
		this.activeMenu=this.menuToShow;
		dojo.addClass(this.activeMenu,'navOpen');
	} else {
		this.activeMenu=null;
	}
	this.menuToShow=null;
	this.runningAnim.play();
};
function appFrameInit() {
  new TopNav().init();
}
function advProductSearchKeyUp( evt ) {
  // summary: handles keyboard events
  if(evt.ctrlKey || evt.altKey){
    return;
  }
  var doSearch = false;
  switch(evt.keyCode){
    case dojo.keys.ENTER:
      // prevent submitting form if user presses enter
      dojo.stopEvent(evt);
      // default case:
      // prevent submit, but allow event to bubble
      evt.preventDefault();
      // fall through
    default:
      doSearch=true;
  }
  if(this.searchTimer){
    clearTimeout(searchTimer);
  }
  if(doSearch){
    // need to wait a tad before start search so that the event bubbles through DOM and we have value visible
    searchTimer = setTimeout(advProductCountSearch, 500);
  }
}

function advProductCountSearch() {
  var filterVal = dojo.byId( "searchText" ).value;
  if ( filterVal.length == 0 ) {
    return;
  }
  var request = {
    url: ajaxSubmitProductCountSearchUrl,
    content: { "q":filterVal },
    handleAs: "text",
    load: function( data ) {
    	if ( data == 0 ) {
    		dojo.byId( "resultCount" ).innerHTML = "0";
    	}
    	else if ( data == 100 ) {
    		dojo.byId( "resultCount" ).innerHTML = "> 100";
    	} else {
    		dojo.byId( "resultCount" ).innerHTML = data;
    	}
    },
    error: function(data) {
      dojo.byId('error').innerHTML="An error occurred: " + data;
    },
    timeout: 20000
  };
  dojo.xhrGet( request );
}




function searchSwitch( type ) {
  if ( type == 'enclosure' ) {
    dojo.byId( "productType" ).value = '0';
    dojo.byId( "materialRow" ).style.display = '';
    dojo.byId( "colorRow" ).style.display = '';
    dojo.byId( "ipCodeRow" ).style.display = '';
    dojo.byId( "enclosure_a" ).className = 'active';
    dojo.byId( "slider_a" ).className = '';
    dojo.byId( "knobs_a" ).className = '';
    dojo.byId( "lengthFromL" ).innerHTML = 'advSearch.lengthFrom'.localize();
    dojo.byId( "widthFromL" ).innerHTML = 'advSearch.widthFrom'.localize();
  }
  else if ( type == 'knobs' ) {
    dojo.byId( "productType" ).value = '1';
    dojo.byId( "materialRow" ).style.display = 'none';
    dojo.byId( "colorRow" ).style.display = 'none';
    dojo.byId( "ipCodeRow" ).style.display = 'none';
    dojo.byId( "enclosure_a" ).className = '';
    dojo.byId( "slider_a" ).className = '';
    dojo.byId( "knobs_a" ).className = 'active';
    dojo.byId( "lengthFromL" ).innerHTML = 'advSearch.diameterFrom'.localize();
    dojo.byId( "widthFromL" ).innerHTML = 'advSearch.boreHoleFrom'.localize();
  }
  else if ( type == 'slider' ) {
    dojo.byId( "productType" ).value = '2';
    dojo.byId( "materialRow" ).style.display = 'none';
    dojo.byId( "colorRow" ).style.display = 'none';
    dojo.byId( "ipCodeRow" ).style.display = 'none';
    dojo.byId( "enclosure_a" ).className = '';
    dojo.byId( "slider_a" ).className = 'active';
    dojo.byId( "knobs_a" ).className = '';
    dojo.byId( "lengthFromL" ).innerHTML = 'advSearch.lengthFrom'.localize();
    dojo.byId( "widthFromL" ).innerHTML = 'advSearch.widthFrom'.localize();
  }
  return false;
}

function switchMediaGroup( type ) {
  var fiDiv = dojo.byId( "furtherInfo" );
  var res = dojo.query( "div."+type, fiDiv );
  if ( res.length == 0 ) return;
  if ( dojo.hasClass( res[0], "expanded" ) ) {
    dojo.removeClass( res[0], "expanded" );
  } else {
    dojo.addClass( res[0], "expanded" );
  }
}

function switchProductSubGroup( groupid ) {
  var fiDiv = dojo.byId( "subGroupRelations" );
  var group = dojo.byId( "sg_"+groupid );
  if ( dojo.hasClass( group, "collapsed" ) ) {
    dojo.query( 'div[id^="sg_"]', fiDiv ).forEach(
      function(node) {
	    if ( !dojo.hasClass( node, "collapsed" ) ) {
          dojo.addClass( node, "collapsed" );
        }
      });
    dojo.removeClass( group, "collapsed" );
    //dojo.removeClass( dojo.byId( "sgl_"+groupid ), "expanded" );
  } else {
	dojo.addClass( group, "collapsed" );
    //dojo.addClass( dojo.byId( "sgl_"+groupid ), "expanded" );
  }
}

function updateSearchSwitch() {
  var val = dojo.byId( "productType" ).value;
  switch ( val ) {
    case '0': searchSwitch( 'enclosure' );break;
    case '1': searchSwitch( 'knobs' ); break;
    case '2': searchSwitch( 'slider' ); break;
  }
}

function connectImgToggle( defaultImg, uuid ) {
  dojo.query("#imgtgsrc_"+uuid+" li[imgToggle]")
    .connect("onmouseover",
      function(){
        dojo.addClass( this, "imgToggleHighlight" );
        dojo.query("#imgtgdest_"+uuid+" img")[0].src = groupInfoImg( this.getAttribute('imgToggle') );
      })
    .connect("onmouseout",
      function(){
        dojo.removeClass( this, "imgToggleHighlight" );
        dojo.query("#imgtgdest_"+uuid+" img")[0].src = groupInfoImg( defaultImg );    
      })
    .addClass( "imgToggleMarker" );
  dojo.query("#imgtgsrc_"+uuid+" span[imgToggle]")
    .connect("onmouseover",
      function(){
        dojo.addClass( this, "imgToggleHighlight" );
        dojo.query("#imgtgdest_"+uuid+" img")[0].src = groupInfoImg( this.getAttribute('imgToggle') );
      })
    .connect("onmouseout",
      function(){
        dojo.removeClass( this, "imgToggleHighlight" );
        dojo.query("#imgtgdest_"+uuid+" img")[0].src = groupInfoImg( defaultImg );    
      })
    .addClass( "imgToggleMarker" );
}

function showWatchlistComment(evt) {
  var cn = dojo.byId( "comment_"+evt.currentTarget.id.substr(3));
  dojo.fx.wipeIn({node:cn, duration:250, easing:dojo.fx.easing.quintOut}).play();
}
function generateWatchlistPDF(evt) {
  var request = {
      form: "wlForm",
      sync: true,
      url: dojo.byId("wlForm").action+"?ajax=1",
      timeout: 20000
    };
    dojo.xhrPost( request );
    window.open( dojo.byId("createPDFBtn").getAttribute("target"), "_blank" );
}

function groupInfoImg( name ) {
  return okwStaticRoot+'/group-images/info_images/'+name+'.jpg';
}

function webmasterMail() {
  var ltext = "<a href=" + "mail" + "t&#111;&#058;";
  var tld = "&#046;com";
  var domain = "okw";
  var name = "weinleine";
  var linktext = "&#064;" + domain;
  var fl = ltext + name + linktext + tld;
  document.write(fl + ">" + name + linktext + tld + "</a>");
}

/*
 * Localization of used JavaScript strings
 */
String.prototype.localize = function()
{
  var s = LocalizedStrings["javascript."+this], args = arguments;
  if( !s ) return(  "§§§" + this + "§§§"  );
  return s.replace(/\{(\d)\}/g, function(m){
    return args[m.charAt(1)] || "???"+m.charAt(1)+"???";
  });
};


