/* Copyright (c) WEBSALE AG 2010
 * Diese Software ist kommerziell und unterliegt der Lizenzpflicht.
 * Benutzung und Weitergabe nur mit Genehmigung und mit Lizenz der WEBSALE AG.
 *
 * Copyright (c) WEBSALE AG 2010
 * This software is to be licensed.
 * Use or distribution only with expressed permission and with license of WEBSALE AG.
 */

//////////////////////////////////////////////////////////////////////////////////////////
//                                                                                      //
//    Designspezifische Funktionen fuer WEBSALE eCommerce                               //
//                                                                                      //
//////////////////////////////////////////////////////////////////////////////////////////



//////////////////////////////////////////////////////////////////////////////////////////
//	Allgemeine: "verfügbare Zeichen einer Textarea anzeigen"                        //
//////////////////////////////////////////////////////////////////////////////////////////
//
//	Mit folgender Funktion können Sie die restlichen verfügbaren Zeichen
//	einer Textarea anzeigen lassen:
//	ws_registerLimitTextarea(textareaid, maxlength, infodiv, infostring_signsleft, infostring_nosignsleft)
//		textareaid:		Die ID der Textarea
//		maxlength:		Die maximale Anzahl an Zeichen
//		infodiv:		Die ID des DIV-Containers in der die verfügbare Menge an Zeichen angezeigt wird
//		infostring_signsleft:	Dieser Text wird angezeigt wenn noch Zeichen zur Verfügung stehen. Das Tag ~WSJS-Signs~ wird durch die verfügbare Anzahl an Zeichen ersetzt.
//		infostring_nosignsleft:	Dieser Text wird angezeigt wenn keine Zeichen mehr zur Verfügung stehen. Das Tag ~WSJS-Signs~ wird durch die maximale Anzahl an Zeichen ersetzt.
//
//	Rufen Sie diese Funktion entweder in der Funktion $(document).ready oder an einer beliebigen Stelle im Template auf



//////////////////////////////////////////////////////////////////////////////////////////
//    Allgemein: "DIV-Container bei aktiviertem Javascript einblenden"                  //
//////////////////////////////////////////////////////////////////////////////////////////

//Alle DIV-Container mit dieser Klasse werden nachdem die Seite gealden ist automatisch eingeblendet
//Die DIV-Container muessen dabei den style "display: none" besitzen
var ws_JSOnlyClass = 'jsonly';



//////////////////////////////////////////////////////////////////////////////////////////
//    Modul: "Produktvergleich"                                                         //
//////////////////////////////////////////////////////////////////////////////////////////
//Anhand der nachfolgenden Parameter laesst sich das Verhalten des Produktvergleichs konfigurieren

//Der DIV-Container in dem der Inhalt des Layers (Produktvergleich) angezeigt wird (Kategorie/Produkt)
var ws_PRCAjaxDivContent = 'PC-Content';

//Der Klassenname der Links zum Anzeigen des Produktvergleichs 
//dieser DIV-Container muss einmal auf jedem Template vorhanden sein auf dem der Produktvergleich angezeigt wird.
var ws_PRCShowProductCompareClass = 'PRC-Show';

//Der DIV-Container mit dieser ID wird eingeblendet wenn eine Hinweismeldungen angezeigt wird, z.B. wenn keine weiteren Produkte zum Produktvergleich hinzugefuegt werden koennen (Kategorie)
var ws_PRCAlertDiv = 'PC-Alert';
//In den DIV-Container mit dieser ID wird der Hinweistext eingefuegt (Kategorie)
var ws_PRCAlertTextDiv = 'PC-Alert-Message';

//Ist dieser Schalter auf true gesetzt wird der Inhalt des Produktvergleichs per JavaScript um 90 Grad gedreht
var ws_PRCRotate = true;
//Anfang und Endekennungen der Daten- und Template-Sektion im Template welches per AJAX zurueckgegeben wird
var ws_PRCRotateDataBegin = '<data>';
var ws_PRCRotateDataEnd = '</data>';
var ws_PRCRotateTemplateBegin = '<template>';
var ws_PRCRotateTemplateEnd = '</template>';
//Feld- und Datensatztrenner der Datensektion
var ws_PRCRotateDataFieldSeparator = '<df>';
var ws_PRCRotateDataRowSeparator = '<dr>';
//Konfiguration der Ausgabetabelle
var ws_PRCRotateTableClass = 'PRC-Table';
var ws_PRCRotateTableID = 'PRC-Table';
var ws_PRCRotateTableTRClasses = [ 'PRC-TR1', 'PRC-TR2' ];                         //Array mit beliebiger Anzahl an Klassen
var ws_PRCRotateTableTDHeaderClasses = [ 'PRC-TDHeader1', 'PRC-TDHeader2' ];       //Array mit beliebiger Anzahl an Klassen
var ws_PRCRotateTableTDClasses = [ 'PRC-TD1', 'PRC-TD2' ];                         //Array mit beliebiger Anzahl an Klassen
var ws_PRCRotateTableTDClassesAlternateVertical = true;
var ws_PRCRotateTemplateReplaceTag = '#####REPLACE#####';



//////////////////////////////////////////////////////////////////////////////////////////
//    Modul: "Produkte per AJAX in den Warenkorb legen"                                 //
//////////////////////////////////////////////////////////////////////////////////////////


//Diese Funktion wird aufgerufen bevor die AJAX-Anfrage abgesetzt wird.
//Mit dieser Funktion ist zum Beispiel eine Ladeanzeige realisierbar
function ws_AJAXaddToBasketStart()
{
       //Blendet die Fehler- und Infocontainer aus sowie den Ladecontainer ein
       $('#AJAXError').hide();
       $('#WK-Error').fadeOut("slow");
       $('#AJAXInfo').fadeIn("slow");
}
 
//Diese Funktion wird aufgerufen wenn Produkt(e) in den Warenkorb gelegt werden konnten
//Mit dieser Funktion ist die Erfolgsmeldung realisierbar
function ws_AJAXaddToBasketResponseSuccess()
{
       //Blendet den Ladecontainer aus
       $('#AJAXInfo').fadeOut("slow");
       //Der Container mit der Information wieviele Artikel in den WK gelegt wurden wird angezeigt, dieser Container wird nach 3 Sekunden wieder ausgeblendet
       $('#WK-Info').fadeIn("slow");
       window.setTimeout("$('#WK-Info').fadeOut('slow')", 3000);
       //Der Markierungscontainer im Kurzwarenkorb blinkt 3 mal au
       window.setTimeout("$('#WK-Alert').fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500)", 100);
}
 
//Diese Funktino wird aufgerufen wenn mindestens ein Artikel nicht in den Warenkorb gelegt werden konnte
//Mit dieser Funktion laesst sich die von WEBSALE eCommerce erzeugte Fehlermeldung ausgeben
function ws_AJAXaddToBasketResponseError()
{
       //Blendet den Ladecontainer aus und die Hinweismeldung ein
       $('#AJAXInfo').fadeOut("slow");
       $('#WK-Error').fadeIn("slow");
}
 
//Diese Funktion wird aufgerufen wenn die AJAX-Kommunikatino fehlschlug
//Mit dieser Funktion laesst sich ein allgemeiner Kommunikationsfehler (z.B. wenn die Internetverbindung unterbrochen wurde) anzeigen
function ws_AJAXaddToBasketError()
{
       //Blendet den Ladecontainer aus und den AJAX-Fehlercontainer ein
       $('#AJAXInfo').fadeOut();
       $('#AJAXError').fadeIn();
}





//////////////////////////////////////////////////////////////////////////////////////////
//    Karteireiterfunktion								                                //
//////////////////////////////////////////////////////////////////////////////////////////

function blendoff(idname) {document.getElementById(idname).style.display = 'none';}
function blendon(idname) {document.getElementById(idname).style.display = 'block';}


function swichtabs(wert) {
if (wert=='1'){
document.getElementById('tablink1').className='tab1 tabactive';
document.getElementById('tablink2').className='tab2';
document.getElementById('tablink3').className='tab3';
document.getElementById('tablink4').className='tab4';
document.getElementById('tablink5').className='tab5';
}
else if (wert=='2'){
document.getElementById('tablink1').className='tab1';
document.getElementById('tablink2').className='tab2 tabactive';
document.getElementById('tablink3').className='tab3';
document.getElementById('tablink4').className='tab4';
document.getElementById('tablink5').className='tab5';
}
else if (wert=='3'){
document.getElementById('tablink1').className='tab1';
document.getElementById('tablink2').className='tab2';
document.getElementById('tablink3').className='tab3 tabactive';
document.getElementById('tablink4').className='tab4';
document.getElementById('tablink5').className='tab5';
}
else if (wert=='4'){
document.getElementById('tablink1').className='tab1';
document.getElementById('tablink2').className='tab2';
document.getElementById('tablink3').className='tab3';
document.getElementById('tablink4').className='tab4 tabactive';
document.getElementById('tablink5').className='tab5';
}
else if (wert=='5'){
document.getElementById('tablink1').className='tab1';
document.getElementById('tablink2').className='tab2';
document.getElementById('tablink3').className='tab3';
document.getElementById('tablink4').className='tab4';
document.getElementById('tablink5').className='tab5 tabactive';
}
}

//Funktion holt den Parameter mit dem Namen x aus dem Query-String
function gup( name )
{
       name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
       var regexS = "[\\?&]"+name+"=([^&#]*)";
       var regex = new RegExp( regexS );
       var results = regex.exec( window.location.href );
       if( results == null )
               return "";
       else
               return decodeURIComponent(results[1]);
} 
//////////////////////////////////////////////////////////////////////////////////////////



//Anfang Topnavigation JQuery

/*********************
//* jQuery Multi Level CSS Menu #2- By Dynamic Drive: http://www.dynamicdrive.com/
//* Last update: Nov 7th, 08': Limit # of queued animations to minmize animation stuttering
//* Menu avaiable at DD CSS Library: http://www.dynamicdrive.com/style/
*********************/

//Update: April 12th, 10: Fixed compat issue with jquery 1.4x

//Specify full URL to down and right arrow images (23 is padding-right to add to top level LIs with drop downs):
var arrowimages_top={down:['downarrowclass', '../global_images/down_prod.gif', 0], right:['rightarrowclass', 'images/down_prod.gif']}
var arrowimages_prod={down:['downarrowclass', '../global_images/down_prod.gif', 0], right:['rightarrowclass', 'images/down_prod.gif']}

var jqueryslidemenu={

animateduration: {over: 300, out: 200}, //duration of slide in/ out animation, in milliseconds

buildmenu:function(menuid, arrowsvar){
	jQuery(document).ready(function($){
		var $actoffset
		var $mainmenu=$("#"+menuid+">ul")
		var $headers=$mainmenu.find("ul").parent()
		$headers.each(function(i){
			var $curobj=$(this)
			var $subul=$(this).find('ul:eq(0)')
			this._dimensions={w:this.offsetWidth, h:this.offsetHeight, subulw:$subul.outerWidth(), subulh:$subul.outerHeight()}
			this.istopheader=$curobj.parents("ul").length==1? true : false
			$subul.css({top:this.istopheader? this._dimensions.h+"px" : 0})
			$curobj.children("a:eq(0)").css(this.istopheader? {paddingRight: arrowsvar.down[2]} : {}).append(
				'<img src="'+ (this.istopheader? arrowsvar.down[1] : arrowsvar.right[1])
				+'" class="' + (this.istopheader? arrowsvar.down[0] : arrowsvar.right[0])
				+ '" style="border:0;" />'
			)
			$curobj.hover(
				function(e){
					$actoffset = $(this).offset();
					var $targetul=$(this).children("ul:eq(0)")
					$targetul.css("height","auto")
					this._offsets={left:$(this).offset().left, top:$(this).offset().top}
					var menuleft=this.istopheader? 0 : this._dimensions.w
					menuleft=(this._offsets.left+menuleft+this._dimensions.subulw>$(window).width())? (this.istopheader? -this._dimensions.subulw+this._dimensions.w : -this._dimensions.w) : menuleft
					if ($targetul.queue().length<=1) //if 1 or less queued animations
						$targetul.css({left:menuleft+"px", width:this._dimensions.subulw+'px'}).slideDown(jqueryslidemenu.animateduration.over)
				},
				function(e){
					var $targetul=$(this).children("ul:eq(0)")
					$targetul.stop().slideUp(jqueryslidemenu.animateduration.out)
				}
			) //end hover
			$curobj.click(function(){
				$(this).children("ul:eq(0)").hide()
			})
		}) //end $headers.each()
		$mainmenu.find("ul").css({display:'none', visibility:'visible'})
	}) //end document.ready
}
}


var prmenu_slide={


buildmenu:function(menuid, arrowsvar){
	jQuery(document).ready(function($){
		var $actoffset
		var $mainmenu=$("#"+menuid+">ul")
		var $headers=$mainmenu.find("ul.level2").parent()
		$headers.each(function(i){
			$(this).children('ul').children('li:first').before('<li class="prmenu_platzhalter_top">&nbsp;</li>');//da padding nicht geht, müssen Platzhalter oben und unten eingebaut werden!!!
			$(this).children('ul').append('<li class="prmenu_platzhalter_bottom">&nbsp;</li>');//da padding nicht geht, müssen Platzhalter oben und unten eingebaut werden!!!
			
			var $curobj=$(this)
			var $subul=$(this).find('ul:eq(0)')
			this._dimensions={w:this.offsetWidth, h:this.offsetHeight, subulw:$subul.outerWidth(), subulh:$subul.outerHeight()}
			this.istopheader=$curobj.parents("ul").length==1? true : false
			$subul.css({top:this.istopheader? this._dimensions.h+"px" : 0})
			$curobj.children("a:eq(0)").css(this.istopheader? {paddingRight: arrowsvar.down[2]} : {}).append(
				'<img src="'+ (this.istopheader? arrowsvar.down[1] : arrowsvar.right[1])
				+'" class="' + (this.istopheader? arrowsvar.down[0] : arrowsvar.right[0])
				+ '" style="border:0;" />'
			)
			$curobj.hover(
				function(e){
					$actoffset = $(this).offset();
					var $targetul=$(this).children("ul:eq(0)")
					$targetul.css("height","auto")
					this._offsets={left:$(this).offset().left, top:$(this).offset().top}
					var menuleft=this.istopheader? 0 : this._dimensions.w
					menuleft=(this._offsets.left+menuleft+this._dimensions.subulw>$(window).width())? (this.istopheader? -this._dimensions.subulw+this._dimensions.w : -this._dimensions.w) : menuleft
					if ($targetul.queue().length<=1) //if 1 or less queued animations
						$targetul.css({left:menuleft+"px", width:this._dimensions.subulw+'px'}).slideDown(jqueryslidemenu.animateduration.over)
				},
				function(e){
					var $targetul=$(this).children("ul:eq(0)")
					$targetul.stop().slideUp(jqueryslidemenu.animateduration.out)
					
//					alert($targetul.css("height"));					
				}
			) //end hover
			
			$curobj.click(function(){
				$(this).children("ul:eq(0)").hide()
			})
		}) //end $headers.each()
		$mainmenu.find("ul.level2").css({display:'none', visibility:'visible'})
	}) //end document.ready
}
}


//build menu with ID="myslidemenu" on page:
prmenu_slide.buildmenu("cat_ul", arrowimages_prod)
prmenu_slide.buildmenu("cat_ul2", arrowimages_prod)
jqueryslidemenu.buildmenu("myslidemenu", arrowimages_top)

// Ende Topnavigation JQuery


