function large_window(link) {
  window.open(link,"_blank","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=850,height=630");
  //return false;
}

function show_more(inst_id, my_id){
var next_num_id = (my_id *1)+1;
box_id = 'box'+inst_id+'_'+next_num_id.toString();
p_hide_id = 'p'+inst_id+'_'+my_id;
p_show_id = 'p'+inst_id+'_'+next_num_id.toString();
$('#'+box_id+'').slideDown('slow');
$('#'+p_hide_id+'').hide();
$('#'+p_show_id+'').show();
}
function show_less(inst_id, my_id){
var prev_num_id = (my_id *1)-1;
box_id = 'box'+inst_id+'_'+my_id;
p_hide_id = 'p'+inst_id+'_'+my_id;
p_show_id = 'p'+inst_id+'_'+prev_num_id.toString();
var box = document.getElementById(box_id).style,d = box.display;
var p_hide = document.getElementById(p_hide_id).style,d = p_hide.display;
var p_show = document.getElementById(p_show_id).style,d = p_show.display;
$('#'+box_id+'').slideUp('slow');
$('#'+p_hide_id+'').hide();
$('#'+p_show_id+'').slideDown('slow');
}

//applet - parses the url and displays the applet
function applet(link){
  if (link.length == 0) {
    reZ = -0.8;
    imZ = 0.0;
    Zsize = 3.6;
    maxitt = 600;
    smoth = "true";
    colormap = "linda10";
    bailout = 4;
    aa = "false";
  }
  else {
    fields = link.split("|");
    reZ = (fields[0]);
    imZ = (fields[1]);
    Zsize = (fields[2]);
    maxitt = (fields[3]);
    smoth = (fields[4]);
    colormap = (fields[5]);
    bailout = (fields[6]);
    aa = (fields[7]);
  }
  code = "bfractal.class";
  archive = "bfractal.jar";
  width=660;
  height=546;
  
  writeapplet(width,height,code,archive,reZ,imZ,Zsize,maxitt,smoth,colormap,bailout,aa,"sug");
  }

// read cookie
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;
}

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

//delete all fractals in cookie
function eraseCookie(name)
{
  createCookie(name,"",-1);
  location = document.location;
}

//delete fractal from cookie
function delete_fractal(cookie,nr)
{
  var fractals = readCookie(cookie);
  if (fractals==null || fractals==""){
    return;
  }
  else{
    var fractal_array = fractals.split("&");
    fractal_array.splice(nr, 1);
    var fractal_string = fractal_array.join("&");
    createCookie(cookie,fractal_string,30);
    location = document.location;
  }
}


// get - receives fractalparameters and saves them in the cookie
function get()
{
  fractal_name = document.save_form.fractal_name.value;
  
  var applet;
  if (document.getElementById && (applet = document.getElementById('sug')) ) {
    s = applet.get() +"";
  }
  fields = s.split("|");
  //alert(fields[0]);
  reZ = (fields[0].split(":")[1]);
  imZ = (fields[1].split(":")[1]);
  Zsize = (fields[2].split(":")[1]);
  maxitt = (fields[3].split(":")[1]);
  smoth = (fields[4].split(":")[1]);
  colormap = (fields[5].split(":")[1]);
  bailout = (fields[6].split(":")[1]);
  aa = (fields[7].split(":")[1]);
  if ((fractal_name.length < 3) || (fractal_name.length > 17)) {
    rc = alert('Fractalname has to be 3-17 characters long.');
    return;
  }
  var illegalChars = /[^a-zA-Z0-9\-\ \_]/;
  
  var illegalCharsb = /\W\ /;
  // allow only letters, numbers, and underscores
  if (illegalChars.test(fractal_name)) {
    rc = alert('The fractalname contains illegal characters.');
    return;
  } 

  var fractal_cookie = readCookie('Saved_Fractals');
  if (fractal_cookie == null || fractal_cookie == "") {
    fractal_cookie = fractal_name+"|"+reZ+"|"+imZ+"|"+Zsize+"|"+maxitt+"|"+smoth+"|"+colormap+"|"+bailout+"|"+aa;
  }
  else {
    fractal_cookie = fractal_cookie+"&"+fractal_name+"|"+reZ+"|"+imZ+"|"+Zsize+"|"+maxitt+"|"+smoth+"|"+colormap+"|"+bailout+"|"+aa;
  }
  createCookie('Saved_Fractals',fractal_cookie,30);
  location = "fractal_generator.php?action=load&fractalparams="+reZ+"|"+imZ+"|"+Zsize+"|"+maxitt+"|"+smoth+"|"+colormap+"|"+bailout+"|"+aa+""; 
}

// shows the large fractal renderer
function applet_light(link){
  if (link.length == 0) {
    reZ = -0.8;
    imZ = 0.0;
    Zsize = 3.6;
    maxitt = 600;
    smoth = "true";
    colormap = "linda10";
    bailout = 4;
    aa = "false";
  }
  else {
    fields = link.split("|");
    reZ = (fields[0]);
    imZ = (fields[1]);
    Zsize = (fields[2]);
    maxitt = (fields[3]);
    smoth = (fields[4]);
    colormap = (fields[5]);
    bailout = (fields[6]);
    aa = (fields[7]);
  }
  width = 800;
  height = 533;
  code = "bfractallight.class";
  archive = "bfractallight.jar";
  writeapplet(width,height,code,archive,reZ,imZ,Zsize,maxitt,smoth,colormap,bailout,"true","large");
}

function applet2(link){
  theleft = link.indexOf("?") + 1;
  if (theleft <= 0) {
    reZ = -0.8;
    imZ = 0.0;
    Zsize = 3.6;
    maxitt = 600;
    smoth = "true";
    colormap = "gallet13";
    bailout = 4;
    aa = "true";
    width=90;
    height=60;
  }
  else {
    theright = link.length;
    commands = link.substring(theleft, theright);
    fields = commands.split("&");
    reZ = (fields[0].split("=")[1]);
    imZ = (fields[1].split("=")[1]);
    Zsize = (fields[2].split("=")[1]);
    maxitt = (fields[3].split("=")[1]);
    smoth = (fields[4].split("=")[1]);
    colormap = (fields[5].split("=")[1]);
    bailout = (fields[6].split("=")[1]);
    aa = (fields[7].split("=")[1]);
    width = (fields[8].split("=")[1]);
    height = (fields[9].split("=")[1]);
  }
  code = "bfractallight.class";
  archive = "bfractallight.jar";
  writeapplet(width,height,code,archive,reZ,imZ,Zsize,maxitt,smoth,colormap,bailout,aa,"light");
}

// send - sends fractalparameters to applet
function send(reZ, imZ, Zsize, maxitt, smoth, colormap, bailout, aa) {
  s = reZ+ "|" +imZ+ "|" +Zsize+ "|" +maxitt+ "|" +smoth+ "|" +colormap+ "|" +bailout+ "|" +aa;
  var applet;
  if (document.getElementById && (applet = document.getElementById('sug')) ) {
    applet.send(s);
  }
}

// deploys the applet
function writeapplet(width,height,code,archive,reZ,imZ,Zsize,maxitt,smoth,colormap,bailout,aa,name){
var str='';
str+='      <!--[if !IE]> Firefox and others will use outer object -->';
str+='      <object codebase=\"/\" id="'+name+'"';
str+='              type=\"application\/x-java-applet;version=1.5\"';
str+='              height=\"'+height+'\" width=\"'+width+'\" standby=\"Loading of applet in progress...\">';
str+='              <PARAM NAME = \"archive\" value=\"/'+archive+'\">';
str+='              <param name = \"type\" value=\"application\/x-java-applet\" >';
str+='              <param name = \"code\" value=\"'+code+'\" \/>';
str+='              <param name = \"codebase\" value=\"/\" \/>';
str+='              <PARAM NAME = \"name\" VALUE = \"'+name+'\" >';
str+='              <PARAM NAME = \"id\" VALUE = \"sug\" >';
str+='              <PARAM NAME = \"loadreZ\" VALUE=\"'+reZ+'\">';
str+='              <PARAM NAME = \"loadimZ\" VALUE=\"'+imZ+'\">';
str+='              <PARAM NAME = \"loadZsize\" VALUE=\"'+Zsize+'\">';
str+='              <PARAM NAME = \"loadmaxitt\" VALUE=\"'+maxitt+'\">';
str+='              <PARAM NAME = \"loadsmoth\" VALUE=\"'+smoth+'\">';
str+='              <PARAM NAME = \"loadcolormap\" VALUE=\"'+colormap+'\">';
str+='              <PARAM NAME = \"loadbailout\" VALUE=\"'+bailout+'\">';
str+='              <PARAM NAME = \"loadaa\" VALUE=\"'+aa+'\">';
str+='              <PARAM NAME = \"realwidth\" VALUE=\"'+width+'\">';
str+='              <PARAM NAME = \"realheight\" VALUE=\"'+height+'\">';
str+='              <PARAM NAME = \"scriptable\" VALUE = \"true\" >';
str+='              <PARAM NAME = \"mayscript\" VALUE = \"true\" >';
str+='      <!--<![endif]-->';
str+='        <!-- MSIE (Microsoft Internet Explorer) will use inner object --> ';
str+='         <object classid=\"clsid:8AD9C840-044E-11D1-B3E9-00805F499D93\" id="'+name+'"';
str+='              codebase\=\"http:\/\/java.sun.com\/products\/plugin\/autodl\/jinstall-1_5-windows-i586.cab#Version=1,5,0,0\"';
str+='              height=\"'+height+'\" width=\"'+width+'\" standby=\"Loading of applet in progress...\"> ';
str+='              <param name = \"codebase\" value=\"/\" \/>';
str+='              <param name = \"code\" value=\"'+code+'\" \/>';
str+='              <PARAM NAME = \"archive\" value=\"'+archive+'\">';
str+='              <PARAM NAME = \"id\" VALUE = \"sug\" >';
str+='              <PARAM NAME = \"loadreZ\" VALUE=\"'+reZ+'\">';
str+='              <PARAM NAME = \"loadimZ\" VALUE=\"'+imZ+'\">';
str+='              <PARAM NAME = \"loadZsize\" VALUE=\"'+Zsize+'\">';
str+='              <PARAM NAME = \"loadmaxitt\" VALUE=\"'+maxitt+'\">';
str+='              <PARAM NAME = \"loadsmoth\" VALUE=\"'+smoth+'\">';
str+='              <PARAM NAME = \"loadcolormap\" VALUE=\"'+colormap+'\">';
str+='              <PARAM NAME = \"loadbailout\" VALUE=\"'+bailout+'\">';
str+='              <PARAM NAME = \"loadaa\" VALUE=\"'+aa+'\">';
str+='              <PARAM NAME = \"realwidth\" VALUE=\"'+width+'\">';
str+='              <PARAM NAME = \"realheight\" VALUE=\"'+height+'\">';
str+='              <PARAM NAME = \"scriptable\" VALUE = \"true\" >';
str+='          <strong>';
str+='            This browser does not have a Java Plug-in.';
str+='            <br \/>';
str+='            <a href=\"http:\/\/java.com\">';
str+='              Get the latest Java Plug-in here.';
str+='            <\/a>';
str+='          <\/strong>';
str+='        <\/object> ';
str+='      <!--[if !IE]> close outer object -->';
str+='      <\/object>';
str+='      <!--<![endif]-->';
document.write(str);
}

function submitenter(myfield,e){
  var keycode;
  if (window.event) keycode = window.event.keyCode;
  else if (e) keycode = e.which;
  else return true;

  if (keycode == 13){
    myfield.form.submit();
    return false;
  }
  else
   return true;
}

$(document).ready(function(){
  $('.counter').click(function(event){
    //event.preventDefault(); 
    var f_wid = $(this).attr("id");
    var url   = $(this).attr("href");	
    $.ajax({
      url: "/counter.php",
      type: "POST",
      data: {wid:f_wid},
      success: function(data){	
        console.log("Data Loaded2: " + data);
        var downloads = parseInt($('#td_'+f_wid).text())+1;
        $('#td_'+f_wid).text(downloads);
      }, error: function(data){console.log("Failed: ");}
    });
  });
});


