+if ( $ENV{'QUERY_STRING'} =~ /title/){
+
+################################################################################
+# $ENV{'QUERY_STRING'} =~ /title/ is used to handle the inline iframe used to
+# display the current song playing ( artist - title - album aso )
+# the cgi call´s itself with a parameter and the iframe refreshes itself without
+# reloading the whole page
+################################################################################
+
+ my $number = $mpd->status()->song()+1;
+ my $volume = $mpd->status()->volume();
+ my $random = $mpd->status()->random();
+
+ if ($random eq "0" ){
+ $random="off";
+ }else{
+ $random="on";
+ }
+
+ my $repeat = $mpd->status()->repeat();
+ if ($repeat eq "0" ){
+ $repeat="off";
+ }else{
+ $repeat="on";
+ }
+
+ my $song = "";
+ if ( $mpd->current() )
+ {
+ $song = substr("-= ".$mpd->current()->Artist()." | ".$mpd->current()->Title(),0,85)." =-<br /> ";
+ if ( $song eq "-= | =-<br /> " ){
+ $song = "None<br />"
+ };
+ $song .= $mpd->current()->Track()."# ".substr($mpd->current()->Album(),0,90)."<br />";
+ }else{
+ $song = "None<br /><br />";
+ }
+
+ if ( $song eq "None<br /># <br />" ){
+ $song = "None<br />".substr($mpd->current()->file(),0,90)."<br />"
+ };
+ $song .= "Playlist: ".$number."-".$mpd->status()->playlistlength()." Time: ".$mpd->status()->time()->sofar."/";
+ $song .= $mpd->status()->time()->total." (".$mpd->status()->time()->percent()."%) Status: ";
+ $song .= $mpd->status()->state()." Volume: ".$volume." % Repeat: ".$repeat." Random: ".$random;
+
+ print <<END
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<meta http-equiv='refresh' content='5'>
+<title></title>
+<body>
+<table width='100%' cellspacing='0' align='center' style="background-image:url(/images/mpfire/box.png);background-repeat:no-repeat">
+END
+;
+ print"<tr ><td align='center'><font color='red' face='Verdana' size='2'><br />".encode('utf-8', $song)."<br /><br /></font></td></tr></table></body>";
+ exit;
+}elsif ( $ENV{'QUERY_STRING'} =~ /control/){
+
+################################################################################
+# $ENV{'QUERY_STRING'} =~ /control/ is used to handle the inline iframe used to
+# display the control button ( prev play skip stop toggle aso )
+# the cgi call´s itself with a parameter and only the iframe is reloaded on click
+################################################################################
+
+ &Header::getcgihash(\%mpfiresettings);
+ if ( $mpfiresettings{'ACTION'} eq "playall" ){
+ $mpd->playlist->clear();
+ foreach ($mpd->collection->all_pathes){
+ $mpd->playlist->add($_);
+ }
+ $mpd->play();
+ }elsif ($mpfiresettings{'ACTION'} eq "x" ){
+ $mpd->stop();
+ }elsif ( $mpfiresettings{'ACTION'} eq "|>" ){
+ $mpd->pause();
+ }elsif ( $mpfiresettings{'ACTION'} eq "<<" ){
+ $mpd->prev();
+ }elsif ( $mpfiresettings{'ACTION'} eq ">>" ){
+ $mpd->next();
+ }elsif ( $mpfiresettings{'ACTION'} eq "+" ){
+ $mpd->volume('+5');
+ }elsif ( $mpfiresettings{'ACTION'} eq "-" ){
+ $mpd->volume('-5');
+ }elsif ( $mpfiresettings{'ACTION'} eq "++" ){
+ $mpd->volume('+10');
+ }elsif ( $mpfiresettings{'ACTION'} eq "--" ){
+ $mpd->volume('-10');
+ }elsif ( $mpfiresettings{'ACTION'} eq ">" ){
+ $mpd->play();
+ }elsif ( $mpfiresettings{'ACTION'} eq "repeat" ){
+ $mpd->repeat();
+ }elsif ( $mpfiresettings{'ACTION'} eq "shuffle" ){
+ $mpd->random();
+ }
+ print <<END
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<title></title>
+<body>
+<table width='95%' cellspacing='0'>
+<tr>
+<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}?control'><input type='hidden' name='ACTION' value='<<' /><input type='image' alt='$Lang::tr{'prev'}' title='$Lang::tr{'prev'}' src='/images/media-skip-backward.png' /></form></td>
+<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}?control'><input type='hidden' name='ACTION' value='x' /><input type='image' alt='$Lang::tr{'stop'}' title='$Lang::tr{'stop'}' src='/images/media-playback-stop.png' /></form></td>
+<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}?control'><input type='hidden' name='ACTION' value='|>' /><input type='image' alt='$Lang::tr{'toggle'}' title='$Lang::tr{'toggle'}' src='/images/media-resume.png' /></form></td>
+<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}?control'><input type='hidden' name='ACTION' value='>' /><input type='image' alt='$Lang::tr{'play'}' title='$Lang::tr{'play'}' src='/images/media-playback-start.png' /></form></td>
+<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}?control'><input type='hidden' name='ACTION' value='playall' /><input type='image' alt='$Lang::tr{'play'} all' title='$Lang::tr{'play'} all' src='/images/media-playback-start-all.png' /></form></td>
+<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}?control'><input type='hidden' name='ACTION' value='>>' /><input type='image' alt='$Lang::tr{'next'}' title='$Lang::tr{'next'}' src='/images/media-skip-forward.png' /></form></td>
+</tr>
+END
+;
+ print <<END
+<tr>
+<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}?control'><input type='hidden' name='ACTION' value='repeat' /><input type='image' alt='$Lang::tr{'repeat'}' title='$Lang::tr{'repeat'}' src='/images/media-repeat.png' /></form></td>
+<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}?control'><input type='hidden' name='ACTION' value='--' /><input type='image' alt='$Lang::tr{'voldown10'}' title='$Lang::tr{'voldown10'}' src='/images/audio-volume-low-red.png' /></form></td>
+<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}?control'><input type='hidden' name='ACTION' value='-' /><input type='image' alt='$Lang::tr{'voldown5'}' title='$Lang::tr{'voldown5'}' src='/images/audio-volume-low.png' /></form></td>
+<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}?control'><input type='hidden' name='ACTION' value='+' /><input type='image' alt='$Lang::tr{'volup5'}' title='$Lang::tr{'volup5'}' src='/images/audio-volume-high.png' /></form></td>
+<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}?control'><input type='hidden' name='ACTION' value='++' /><input type='image' alt='$Lang::tr{'volup10'}' title='$Lang::tr{'volup10'}' src='/images/audio-volume-high-red.png' /></form></td>
+<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}?control'><input type='hidden' name='ACTION' value='shuffle' /><input type='image' alt='$Lang::tr{'shuffle'}' title='$Lang::tr{'shuffle'}' src='/images/media-shuffle.png' /></form></td>
+</tr>
+</table>
+</body>
+END
+;
+ exit;
+}
+
+# just a little subpage to handle automatic page refresh on demand ( 1 sec )
+sub refreshpage{
+ &Header::openbox( 'Waiting', 1, "<meta http-equiv='refresh' content='1;' />" );
+ print "<center><img src='/images/clock.gif' alt='' /><br/><font color='red'>$Lang::tr{'pagerefresh'}</font></center>";
+ &Header::closebox();
+}
+
+# if the mpd is updating his database because of user interaction then the cgi
+# should display that the mpd is unavailable, and refresh the status every 5 seconds
+if ($work ne ""){
+ &Header::openpage($Lang::tr{'mpfire'}, 1,);
+ &Header::openbigbox('100%', 'left', '', $errormessage);
+ &Header::openbox( 'Waiting', 5, "<meta http-equiv='refresh' content='5;' />" );
+ print "<center><img src='/images/clock.gif' alt='' /><br/><font color='red'>Database is updating, please be patient.</font></center>";
+ &Header::closebox();
+ &Header::closebigbox();
+ &Header::closepage();
+ exit;
+}
+
+if ( $mpfiresettings{'PAGE'} eq "" ){ $mpfiresettings{'PAGE'} = "1";};
+if ( $mpfiresettings{'FRAME'} eq "" ){$mpfiresettings{'FRAME'} = "webradio";};