/*************************  DEFAULT BEREICH ************************/

/**
 * Prüft ein Textarea-Feld daraufhin, dass
 * eine bestimmte vorgegebene maximale Länge nicht
 * überschritten wird.
 *
 * Wird die maximale Länge überschritten wird der 
 * Text auf die maximale Länge wieder gekürzt.
 * 
 *
 * Der aufrufende Befehl lautet z.B:
 * onkeyup="maxLengthCheck(this,10)"
 *
 */
function maxLengthCheck(obj,maxLength) {
    var text = obj.value;    
    if(text.length > maxLength) {
        obj.value = text.substr(0,maxLength);    
    }
}

/**
 * Prüft ein Textarea-Feld daraufhin, dass
 * eine bestimmte vorgegebene maximale Länge nicht
 * überschritten wird.
 *
 * Wird die maximale Länge überschritten wird der 
 * Text auf die maximale Länge wieder gekürzt.
 *
 * Hier wurd zudem dem �bergebenen Id Name die 
 * L�nge wieder zur�ckgeschrieben.
 *
 * Der aufrufende Befehl lautet z.B:
 * onkeyup="maxLengthCheck(this,10,'counterfield)"
 *
 * Die Darstellung des Counters l�uft im Span-Tag ab
 * <span id="counterfield">xx</span>
 *
 */
function maxLengthCheckView(obj,maxLength,viewElement) {
    var text = obj.value;    
    if(text.length > maxLength) {
        obj.value = text.substr(0,maxLength);    
    }
    $(viewElement).firstChild.nodeValue = obj.value.length;
}




	function forward(action) {
		try {
			document.location.href=action;
		} catch(e) {
			alert('Adresse nicht gefunden: '+action);
		}
	}
	
	//Setzt die Farbe eines Elements auf Litogo-Rot.
	//Der zu �bergebene Parameter entspricht der id des Elements.
	function redlink(id){
		var link = document.getElementById(id);
		if (link){
			link.style.color="#C01338";
			}
	}	







/*************************  ESP-PROTOTYE BEREICH ************************/

/**
 * Entfernt alle Childs eines Elements
 */
Object.extend(Element, {
    // 
		removeChildren: function() {
			for (var i = 0; i < arguments.length; i++) {
				var element = $(arguments[i]);
				if(element) {
					if(element.childNodes) {
						while(element.childNodes.length > 0) {
							element.removeChild(element.childNodes[0]);
						}
					}
				}
			}
		}
	});





















/*************************  WERKSTATT BEREICH ************************/
function deleteFormularErrors() {
    var test =  $$('div.ajaxerror');
    for(i=0;i<test.length;i++) {        
        test[i].remove();
    }
}

function setFormularErrors(jsonErrors) {
    deleteFormularErrors();
	
	
    for (var key in jsonErrors) {
        var errorStr = '<div class="ajaxerror">'+jsonErrors[key]+'</div>';
        
        if($(key)) {
        	
        	new Insertion.After(key,errorStr);
        }
    }
    
}


/**
 *   Zeigt die Standardfehlermeldung, dass ein Anwendungsfehler
 * aufgetreten ist.
 *
 */
var showError = function(r) {	     
   var url = "./my-litogo_projects/exceptionerrorconfirmation";
   var opts = {
       method: 'post',
       onSuccess: function(r) {         
                     mylShowConfirmationBox(r.responseText);             
                  },
       onFailure: function(r) {
                      alert("Der Server regiert nicht mehr.");
                  }
   };        
   var myAjax = new Ajax.Request(url,opts);  
}

/**
 * Standard Confirmation Box
 *
 * Es wird das �ber gebene Kommando aufgerufen.
 *
 * ACHTUNG: Dieses Script wird Synchron, nicht
 * Asynchron ausgef�hrt, da es direkt von Submits
 * ausgef�hrt wird.
 */
function mylShowConfirmation(command) {    
    var url = command;
    var opts = {    
        method: 'post',
        asynchronous: false,	
        onSuccess: function(r) { 
                                             
                       mylShowConfirmationBox(r.responseText);
                       
                   },
        onFailure: showError
    };        
    var myAjax = new Ajax.Request(url,opts);       
}


function mylShowConfirmationBox(responseText) {
    if($('confirmationbox') != null) $('confirmationbox').remove();
    new Insertion.Top('base',responseText); 
    window.scrollTo(0,0);
    Effect.BlindDown('confirmationbox',{ duration: 0.3 });
    
}

function mylDeleteConfirmationBox() {    
    Effect.BlindUp('confirmationbox',{ duration: 0.3,
                                       afterFinish: function() {
                                                                 if($('confirmationbox') != null) {
                                                                     $('confirmationbox').remove();
                                                                 }
                                                               } 
                                     });
}

/**
 * Wählt ein übergebenes Cover auf der ProjektEbookCreate Seite aus.
 *
 * Ebenso editebook, newaudiobook, editaudiobook
 * 
 * @param int projectid
 *
 * @see ProjectEbookEdit.
 */
function projectEbookCoverSelect(obj,mediaid,projectid) {   
    var url = './my-litogo_projects/coverselectebook/projectid/'+projectid+'/mediaid/'+mediaid;
    var opts = {
        method: 'post',
        onSuccess: function(r) {
                       if(r.responseText == '<span class="jsclass_type1">&nbsp;</span>') {                           
                           location.href= baseurl+'my-litogo_projects/ebookacceptlicensecover/id/'+projectid+'/mediaid/'+mediaid+'/from/1';
                       } else if(r.responseText == '<span class="jsclass_type3">&nbsp;</span>') {                           
                           location.href= baseurl+'my-litogo_projects/audiobookacceptlicensecover/id/'+projectid+'/mediaid/'+mediaid+'/from/1';
                                                                      
                       }
                       $('mediaid').value  = mediaid; 
                       
                       var imgObjArr = $$('img.jsclass_coverselect');                        
                       for(i=0;i<imgObjArr.length;i++) {
                          imgObjArr[i].src = baseurl + './img/site/selectnot.png';  
                       }  
                       obj.src = baseurl + './img/site/select.png';               
                   },
        onFailure: showError
        }; 
 var myAjax = new Ajax.Updater('cover',url,opts);  
 
}

/**
 * Entfernt das ausgew�hlte Cover auf der newebook Seite
 * 
 * Ebenso editebook, newaudiobook, editaudiobook
 *
 */
function projectEbookCoverDelete() {
   Element.removeChildren('cover');
   $('mediaid').value  = '0';
   var imgObjArr = $$('img.jsclass_coverselect'); 
   for(i=0;i<imgObjArr.length;i++) imgObjArr[i].src = baseurl + './img/site/selectnot.png';                       
}

/**
 * Aufruf des Wartefensters bei der E-Book-Erstellung
 *
 * Sobald ein true vom Webservice zur�ckgeliefert wird,
 * pr�ft ein ajax.updater auf den status=2 ob die 
 * Generierung abgeschlossen wurde.
 *
 *@param int id Id des Projektes
 */
function projectEbookBuild(id) {    
    projectEbookBuildShowConfirmation('buildprogressconfirmationebook',id);
    var url = './my-litogo_projects/buildebook/id/'+id;  
    var opts = {
        method: 'post',
        onSuccess: function(r) {
                                 // alert("ok " + r.responseText);
                                   //new PeriodicalExecuter(function(pe) {projectEbookBuildComplete(id,pe)}, 10);
                                
                                
                                
                                if(r.responseText == '1') {
                                      new PeriodicalExecuter(function(pe) {projectEbookBuildComplete(id,pe)}, 10);   
                                  } else if(r.responseText == '2') {
                                      location.href= baseurl+'my-litogo_projects/buildemptyebook/id/'+id;
                                  }
                                
                                
                                
                                },
        onFailure: showError        
        }; 
    var myAjax = new Ajax.Request(url,opts);    
}

/**
 * Das Wartefenster bei der Erstellung des Books.
 *
 */
function projectEbookBuildShowConfirmation(command,id) {
    var url = "./my-litogo_projects/"+command+"/id/"+id;
    var opts = {
        method: 'post',
        onSuccess: function(r) {    
                       mylShowConfirmationBox(r.responseText);
                   },
        onFailure: showError
    };        
    var myAjax = new Ajax.Request(url,opts);    
}

/**
 * Pr�ft, ob das Ebook erstellt wurde
 *
 */
function projectEbookBuildComplete(id,pe) {    
    var url = './my-litogo_projects/buildcompleteebook/id/'+id;    
    var opts = {
        method: 'post',
        onSuccess: function(r) {
                                  if(r.responseText == 2) {
                                      pe.stop();                                                                                                     
                                      location.href= baseurl+'my-litogo_projects/ebookformatcheck/id/'+id;
                                  } 
                                },
        onFailure: showError
        }; 
    var myAjax = new Ajax.Request(url,opts);
}

/**
 * Nach dr�cken des Abbruchbuttons, wird direct auf
 * die Informationsseite gelinkt.
 * 
 */
function projectEbookBuildCancel(id) {
    location.href= baseurl+'my-litogo_projects/buildcancelebook/id/'+id;
}





/**
 * Aufruf des Wartefensters bei die Audiobook-Erstellung
 *
 * Sobald die Erstellung fertig ist, wird das InProgress-Fenster
 * geschlossen und auf die Format Seite weiter gelinkt.
 *
 *@param int id Id des Projektes
 */
function projectAudiobookBuild(id) {    
    projectAudiobookBuildShowConfirmation('buildprogressconfirmationaudiobook',id);
    var url = './my-litogo_projects/buildaudiobook/id/'+id;  
    var opts = {
        method: 'post',
        onSuccess: function(r) {                                    
                                  if(r.responseText == '1') {
                                      location.href= baseurl+'my-litogo_projects/audiobookformatcheck/id/'+id;   
                                  } else if(r.responseText == '2') {
                                      location.href= baseurl+'my-litogo_projects/buildemptyaudiobook/id/'+id;
                                  }                               
                                },
        onFailure: showError        
        }; 
    var myAjax = new Ajax.Request(url,opts);    
}


/* Tut das Product mit der Id "id" in den Warenkorb und
 * wechselt den zugehörigen Button mit der id "buttonid"
 * für 2 Sekunden aus (anderes Image)
 */ 
  
function intoCart(id, buttonid){
	   document.getElementById(buttonid).src='./img/site/buttons/warenkorb.png';
	   setTimeout("resetbutton('"+buttonid+"','./img/site/buttons/kaufen.png')", 2000);
	   var url = './shop_products/into-cart/id/'+id;  
	   var countOfCart=$('shoppingCartNumber');
    var opts = {
        method: 'post',
        onSuccess: function(r) {
        	countOfCart.firstChild.nodeValue = r.responseText;
        	
		},
		onFailure: showError        
        }; 
    var myAjax = new Ajax.Request(url,opts);    
		
}

function intoCart2(id, buttonid,locallang){
	   document.getElementById(buttonid).src='./img/site/buttons/warenkorb_'+locallang+'.png';
	   setTimeout("resetbutton('"+buttonid+"','./img/site/buttons/kaufen_"+locallang+".png')", 2000);
	   var url = './shop_products/into-cart/id/'+id;  
	   var countOfCart=$('shoppingCartNumber');
 var opts = {
     method: 'post',
     onSuccess: function(r) {
     	countOfCart.firstChild.nodeValue = r.responseText;
     	
		},
		onFailure: showError        
     }; 
 var myAjax = new Ajax.Request(url,opts);    
		
}

function resetbutton(button,newsrc){
	  // alert(button);
	   document.getElementById(button).src=newsrc;
	   }

function intoWatchlist(id){
	   var url = './my-litogo_watchlist/additem/id/'+id;  
	   var countOfCart=$('countOfWatchlist');
    	var opts = {
        method: 'post',
        onSuccess: function(r) {
        	countOfCart.firstChild.nodeValue = r.responseText;
        	
		},
		onFailure: showError        
        }; 
    var myAjax = new Ajax.Request(url,opts);

}
/**
 * @depricated
 * @param uid
 * @param buttonid
 * @return
 */
function intoAdressbook(uid,buttonid){
	   document.getElementById(buttonid).src='./img/site/buttons/kontakt_anlegen_green.png';
	   setTimeout("resetbutton('"+buttonid+"','./img/site/buttons/kontakt_anlegen.png')", 2000);
	   var url = './message_contacts/index/user/'+uid;  
	   
    	var opts = {
        method: 'post',
        onSuccess: function(r) {
        	;
        	
		},
		onFailure: showError        
        }; 
    var myAjax = new Ajax.Request(url,opts);

}

function intoAdressbook2(uid,buttonid,locallang){
	   document.getElementById(buttonid).src='./img/site/buttons/kontakt_anlegen_green_'+locallang+'.png';
	   setTimeout("resetbutton('"+buttonid+"','./img/site/buttons/kontakt_anlegen_"+locallang+".png')", 2000);
	   var url = './message_contacts/index/user/'+uid;  
	   
 	var opts = {
     method: 'post',
     onSuccess: function(r) {
     	;
     	
		},
		onFailure: showError        
     }; 
 var myAjax = new Ajax.Request(url,opts);

}

/**
 * Das Wartefenster bei der Erstellung des Audiobooks.
 *
 */
function projectAudiobookBuildShowConfirmation(command,id) {
    var url = "./my-litogo_projects/"+command+"/id/"+id;
    var opts = {
        method: 'post',
        onSuccess: function(r) {    
                       mylShowConfirmationBox(r.responseText);
                   },
        onFailure: showError
    };        
    var myAjax = new Ajax.Request(url,opts);    
}

/**
* Versendet eine E-Mail mit dem Link zum Download fuer ein Produkt und 
* zeigt dem Benutzer nach dem erfolgreichen Versand ein Hinweisfenster, 
* das sich nach kurzer Zeit wieder schliesst
*
*/

function downloadLinkMail(code){
	
	
	var url = baseurl+"download/mail/code/"+code;
	
	var opts = {
        method: 'post',
        onSuccess: function(r) {
        				
        				new Insertion.Top('base',r.responseText); 
    					window.scrollTo(0,0);    
                        Effect.BlindDown('confirmationbox',{ duration: 3.0,
                                       afterFinish: function() {
                                                                 if($('confirmationbox') != null) {
                                                                     $('confirmationbox').remove();
                                                                 }
                                                               } 
                                     });
                       },
        onFailure: showError
    };        
    var myAjax = new Ajax.Request(url,opts);  

}



/**
 * W�hlt die Sterne f�r das Genre aus bzw. ab.
 *
 */
function ratingGenreForProduct(genre,rating) {
   var currentRating = $(genre).value;  
   if(rating == currentRating) {rating = rating - 1;}
   $(genre).value = rating;   
   var aktivePic = './img/site/icon/stars/rating_genre_a.gif';
   var inaktivePic = './img/site/icon/stars/rating_genre_i.gif'; 
   
   for(i=1;i<=3;i++) {
       var id = genre.concat('pic').concat(i);       
       if(i <= rating) {
           $(id).src = aktivePic;
       } else {
           $(id).src = inaktivePic;
       }
   }   
}

/**
 * W�hlt die Sterne f�r das Genre aus bzw. ab.
 *
 */
function ratingForRecensions(genre,rating) {
	
   var currentRating = $(genre).value;
    
   if(rating == currentRating) {rating = rating - 1;}
   $(genre).value = rating;   
  
   var aktivePic = './img/site/icon/stars/rating_genre_a.gif';
   var inaktivePic = './img/site/icon/stars/rating_genre_i.gif'; 
   
   for(i=1;i<=5;i++) {
       var id = genre.concat('pic').concat(i);      
       if(i <= rating) {
           $(id).src = aktivePic;
       } else {
           $(id).src = inaktivePic;
       }
   }   
}

/**
 *Stellt ein dynamisches Men� zur Verf�gung
 */
 function showMenu(name1, name2, name3, id) {
	try{
	if(document.getElementById(id).style.display=='block'){
		document.getElementById(name1).style.display='none';
		document.getElementById(name2).style.display='none';
		document.getElementById(name3).style.display='none';
	}
	else if(id==name1){
		document.getElementById(name1).style.display='block';
		document.getElementById(name2).style.display='none';
		document.getElementById(name3).style.display='none';
	}
	else if(id==name2){
		document.getElementById(name1).style.display='none';
		document.getElementById(name2).style.display='block';
		document.getElementById(name3).style.display='none';
	}
	else if(id==name3){
		document.getElementById(name1).style.display='none';
		document.getElementById(name2).style.display='none';
		document.getElementById(name3).style.display='block';
	}
	}
	catch(e){
		alert(e);
		}
}



/**
 *Funktion zur Einblendung von Tipps
 */
 function showTip(id) {
 	try{
			if(document.getElementById(id).style.display=='block'){
				document.getElementById(id).style.display='none';
			}
			else {
				document.getElementById(id).style.display='block';	
			}
		}
	catch(e){
		alert(e);
		}
}



function changearrow(oldId, newId){
	document.getElementById(oldId).style.display='none';
	document.getElementById(newId).style.display='inline';
}


/**
 * Das Wartefenster beim Upload.
 *
 */
function uploadprogressConfirmation(command,id) {
    load_img = new Image();
    load_img.src = baseurl+'img/site/animation/bar.gif';
    
    var url = "./my-litogo_products/uploadprogressconfirmation";
    var opts = {
        method: 'post',
        asynchronous: false,	
        onSuccess: function(r) {    
                       mylShowConfirmationBox(r.responseText);
                   },
        onFailure: showError
    };        
    var myAjax = new Ajax.Request(url,opts);    
}



/**
 * Prüft ob welche Preisfindung gewählt wurde.
 *
 */
function setOwnprice(status) {
    if(status == 1) {
    	$('ownpricediv').style.display = "block";
    } else {
    	$('ownpricediv').style.display = "none";
    }
}

/**
 * �ffnet die url in einem neuen Fenster
 *
 */
function showPic(filename,width,height) {
 var zeit = new Date();
    var ms = zeit.getMilliseconds();
    var uniqueName = 'Viewer'+ms;
 var f=window.open(baseurl+filename, uniqueName, 'width='+width+',height='+height+',scrollbars=yes,menubar=no,location=no,status=no');
}

/**
 * Ruft php-Funktion zum Speichern des tabs in der Registry auf
 *
 */
function saveTab(url){
	
	var opts = {
        method: 'post',
        asynchronous: false,	
        onSuccess: function(r) {    
                       //mylShowConfirmationBox(r.responseText);
                   },
        onFailure: showError
    };        
	var myAjax = new Ajax.Request(url,opts);
}





/*************************  Covergenerator BEREICH ************************/




/**
 * Fordert eine Preview des Covers an.
 * 
 * Sendet alle Parameter zum Server.
 * Bindet den Link zum Cover ein.
 * 
 * @mode Gibt an ob die übergebene Daten automatisch ein Bild onthefly genereieren
 *   sollen oder ob alle Daten gespeichert werden. (1=onthefly | 2=speichern)
 */
function covergenPreviewCover(mode) { 
	deleteFormularErrors();
    $('mode').value = mode;
	
    //alert("mode. "+mode);
	var param = $('covergeneratorform').serialize(true);
	//var url = './my-litogo_projects/covergeneratorcreatecover/id/';  
	var url = './my-litogo_projects/ebookcovergenerator/';
    var opts = {
        method: 'post',
        parameters: param,
        onSuccess: function(r) {                   
    	                          var jsonArr = r.responseText.evalJSON(true);
    	                          //alert(jsonArr.error + "-"+mode);
    	                          if(jsonArr.error == 1) {
    	                        	  // Zeige die übergebenen Fehler an
    	                        	  setFormularErrors(jsonArr.errorArr);
    	                        	  if($('coverpreviewpic') != null) $('coverpreviewpic').remove();
    	                          } else {
    	                        	  //alert("modedd. "+mode);
	    	                          if(mode == 1) {
		    	                          var touchtime = new Date();    	                          
		    	                          if($('coverpreviewpic') != null) $('coverpreviewpic').remove();                                   
		                                  new Insertion.Top('coverpreviewpicbox','<img id="coverpreviewpic" style="margin-top:1px;" src="'+baseurl+'gen/covergenerator/cover/'+jsonArr.filename+'?tt='+touchtime.getTime()+'" />');
	    	                          } else if(mode == 2) {
	    	                        	  //alert("modeaaa. "+mode);
	    	                        	  // Daten wurden gespeichert
	    	                        	  // Leite weiter zur Coverzusammenstellung
	    	                        	  //location.href= baseurl+'my-litogo_projects/ebookmediaselect/id/'+$('id').value;
	    	                        	  location.href= baseurl+'my-litogo_projects/ebookmediaselect/id/'+$('id').value;
	    	                          }
    	                          }
    	                       },
        onFailure: showError,
        onLoading: function() {
                                  if($('coverpreviewpic') != null) $('coverpreviewpic').remove();                                	
                                  //new Insertion.Top('coverpreviewpicbox','<img id="coverpreviewpic" style="margin-top:130px;" src="'+baseurl+'img/site/animation/logo.gif" />');
                                  new Insertion.Top('coverpreviewpicbox','<img id="coverpreviewpic" style="margin-top:40px;" src="'+baseurl+'img/site/animation/logo.gif" />');
                                }
        }; 
    var myAjax = new Ajax.Request(url,opts);    
}




function covergenShowEditArea(divid) {
	
	
	var editarea = 'covergenerator'+divid+'editarea';
    
	var objArr = $$('div.covergeneratoreditarea'); 
	for(i=0;i<objArr.length;i++) {
		objArr[i].style.display = "none";
	}
	
	var area = document.getElementById(editarea);
	if (area){
		area.style.display = "block";
	}
	
	covergenColorPicker(divid);
	//$(divid).focus();
}

/**
 * Markiert ein ausgewältes Cover durch einen Rahmen.
 * 
 * Hebt ein anderes ausgewähltes Cover auf.
 * Setzt die Medienid.
 * Ruft den Befehl zu automatischen Generierung.
 * 
 * @param obj
 * @return void
 */
function covergenCoverSelect(obj,mediaid) {	
	var objArr = $$('img.jsclass_coverselect'); 
	for(i=0;i<objArr.length;i++) {
		objArr[i].style.border = "1px solid white";
	}	
	
	obj.style.border = "1px solid black";	
	mediaidObj = $('mediaid');
	mediaidObj.value = mediaid;
	covergenPreviewCover(1);
}


function covergenColorPicker(divid) {
	var idName = divid+'fontcolor';
	var idNameNext = divid+'textalign';
	obj = $(idName);
	obj.style.background= "#"+obj.options[obj.selectedIndex].value;	
	obj.style.color = obj.options[obj.selectedIndex].style.color;
	nextobj = $(idNameNext);
	//nextobj.focus();
	$(divid).focus();
}

/**
 * Markiert eine ausgewälte Overlay Folie durch einen Rahmen.
 * 
 * Hebt eine andere ausgewählte Folie auf.
 * Setzt die entsprechende Folien Kennung.
 * 
 * @param obj
 * @param overlay Name der Overlayfolie
 * @return void
 */
function covergenOverlaySelect(obj,overlay) {	
	var objArr = $$('img.jsclass_overlayselect'); 
	for(i=0;i<objArr.length;i++) {
		objArr[i].style.border = "1px solid #999999";
	}	
	
	obj.style.border = "1px solid white";	
	overlayObj = $('overlay');
	overlayObj.value = overlay;
}
