var timerlen = 5;
var slideAniLen = 500;

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
var moving = new Array();
var dir = new Array();

var newwindow = '';

<!-- Windows function -->
var index=0;

function openConfirm() {
 Dialog.confirm("Add your <b>HTML</b> message here<br/>Better than a classic javascript alert?",
 {top: 10, width:250, className: "alphacube", okLabel: "Yes", cancelLabel:"No"})
 }
function win1()
{
  var win = new Window({id: "win1", className: "alphacube", title: "Sample", width:250, height:150, top:0, left: 1, parent:$('container')});
  win.getContent().innerHTML = "<h1>Constraint inside  a div !!</h1>constraint: {left:10, right:20}<br><a href='#' onclick='Windows.getWindow(\"win1\").maximize()'>Maximize me</a>";

  win.setDestroyOnClose();
  win.show();
  win.setConstraint(true, {left:10, right:20})
  win.toFront();
}

function win21()
{
  var win = new Window({id: "win2", className: "mac_os_x", title: "Sample window 2", width:280, height:150});
  win.getContent().innerHTML = "<h1>Constraint inside page !!</h1>constraint: {top: 30, bottom:10}<br><a href='#' onclick='Windows.getWindow(\"win2\").maximize()'>Maximize me</a>";

  win.setDestroyOnClose();
  win.showCenter();
  win.setConstraint(true, {left:240, right:0, top: 100, bottom:10})
  win.toFront();
}

function win3()
{
  var win = new Window({id: "win3", className: "alphacube", title: "Sample", width:250, height:150, wiredDrag: true});
  win.getContent().innerHTML = "<h1>No Constraint</h1>Wired mode<br><a href='#' onclick='Windows.getWindow(\"win3\").maximize()'>Maximize me</a>";
  win.setDestroyOnClose();
  win.setLocation(10, 500);
  win.show();
  win.toFront();
}

        function openDialog(id, html) {
          //var effect = new PopupEffect(html, {className: "popup_effect2", duration: 2, fromOpacity: 0.2, toOpacity: 0.4});
            var effect = new PopupEffect(html, {className: "popup_effect1"});

          Dialog.alert($(id).innerHTML, {title:"dialog", className: "alphacube",  width:250, id: "d" + index, showEffect:effect.show.bind(effect), hideEffect:effect.hide.bind(effect)})
          index++;
  }


  function openDialog3(html) {
    var effect = new PopupEffect(html, {className: "popup_effect1"});
    Dialog.confirm("Do you like this effect?",{className:"alphacube", width: 400, height:null, showEffect:effect.show.bind(effect), hideEffect:effect.hide.bind(effect)})
  }

<!-- End windows functions -->

// -------------------------------------------------------------------
// Window functions 
// -------------------------------------------------------------------
function show_url_window(zID, zTitle, zURL)
{
        win2 = new Window(zID, {title: zTitle,
                          bottom:70, left:0, width:500, height:400,
			  //className: "alphacube", 
                          resizable: true, url: zURL, showEffectOptions: {duration:1}})
        win2.show();
        win2.setDestroyOnClose();
}
// -----------------------------------------------------------------------------------
// End window functions 
// -----------------------------------------------------------------------------------

 function donate(id, name)
{
 var URL = "http://josquin.musickshandmade.com/donate.php?id=" + id;

	var answer = confirm("Do you want to make a donation to " + name);
	if (answer){
		var URL = "http://josquin.musickshandmade.com/donate.php?id=" + id;
		window.location = URL;
	}
	else{
		alert("Thanks for sticking around!")
	}

 //newwindow = window.open(URL,"DONATION");
 //popitup(URL); 
 //if(defined(newwindow)) { newwindow.focus(); }
}
// -----------------------------------------------------------------------------------
 function popitup(url) {
	if (!newwindow.closed && newwindow.location) {
		newwindow.location.href = url;
	}
	else {
		newwindow=window.open(url,'name','height=400,width=400');
		if (!newwindow.opener) newwindow.opener = self;
	}
	if (window.focus) { newwindow.focus() }
	//return false;
}
// -----------------------------------------------------------------------------------
// Cookies
// -----------------------------------------------------------------------------------
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=/";
}
// -----------------------------------------------------------------------------------
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;
}
// -----------------------------------------------------------------------------------
function eraseCookie(name) {
	createCookie(name,"",-1);
}
// -----------------------------------------------------------------------------------
// Slide div function 
// -----------------------------------------------------------------------------------
function toggleSlide(objname){
  if(document.getElementById(objname).style.display == "none"){
    // div is hidden, so let's slide down
    slidedown(objname);
  }else{
    // div is not hidden, so slide up
    slideup(objname);
  }
}
// -----------------------------------------------------------------------------------
function slidedown(objname){
  if(moving[objname])
    return;
  if(document.getElementById(objname).style.display != "none")
    return; // cannot slide down something that is already visible
  moving[objname] = true;
  dir[objname] = "down";
  startslide(objname);
}
// ----------------------------------------------------------------------------------- 
function slideup(objname){
  if(moving[objname])
    return;
 
  if(document.getElementById(objname).style.display == "none")
    return; // cannot slide up something that is already hidden
 
  moving[objname] = true;
  dir[objname] = "up";
  startslide(objname);
}
// -----------------------------------------------------------------------------------
function startslide(objname){
  obj[objname] = document.getElementById(objname);
  endHeight[objname] = parseInt(obj[objname].style.height);
  startTime[objname] = (new Date()).getTime();
 
  if(dir[objname] == "down"){
    obj[objname].style.height = "1px";
  }
 
  obj[objname].style.display = "block";
 
  timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen);
}
// -----------------------------------------------------------------------------------
function slidetick(objname){
  var elapsed = (new Date()).getTime() - startTime[objname];
 
  if (elapsed > slideAniLen)
    endSlide(objname)
  else {
    var d =Math.round(elapsed / slideAniLen * endHeight[objname]);
    if(dir[objname] == "up")
      d = endHeight[objname] - d;
 
    obj[objname].style.height = d + "px";
  }
 
  return;
}
// -----------------------------------------------------------------------------------
function endSlide(objname){
  clearInterval(timerID[objname]);
 
  if(dir[objname] == "up")
    obj[objname].style.display = "none";
 
  obj[objname].style.height = endHeight[objname] + "px";
 
  delete(moving[objname]);
  delete(timerID[objname]);
  delete(startTime[objname]);
  delete(endHeight[objname]);
  delete(obj[objname]);
  delete(dir[objname]);
 
  return;
}
// -----------------------------------------------------------------------------------
