var bookletIFaceURL = "/wp-content/themes/iuf10/booklet/iface.php";
var downloadDelay = 2000;

function bookletAdd( key ) {

  key = key.toLowerCase();
  if( !bookletItems[ key ] ) {

    //send ajax request
    var req = new Request( bookletIFaceURL + "?action=add&key="+key );
		req.addHandler( 
			{ 
				"onCompleted": function( req, data ) { bookletAnswer( data ); },
				"onError":     function( req, msg ) {} 
			} 
		);

		req.start();

    animateHeart( key );

  }

}

function bookletClear() {

  //send ajax request
  var req = new Request( bookletIFaceURL + "?action=clear" );
	req.addHandler( 
		{ 
			"onCompleted": function( req, data ) { bookletAnswer( data ); bookletClearList(); },
			"onError":     function( req, msg ) {} 
		} 
	);

	req.start();

}

function bookletClearList() {
	var el = document.getElementById( "booklet_detail_list" );
	if( el ) {
		el.innerHTML = "";
	}
}

function bookletAnswer( data ) {

  var answer = {};
  try {
    answer = eval( "(" + data + ")" );
  } catch( e ) {
  }

  if( typeof answer.count == "number" ) {
    if( typeof answer.items == "object" ) {

      bookletItems = answer.items;

      var elCount = document.getElementById( "personalbooklet_count" );
      if( elCount ) {
        elCount.innerHTML = answer.count;
      }

    }
  }

}

function Request( url ) {

	this.url = url;
	this.handlers = new Array();

	try {
		this.req = new XMLHttpRequest();
	} catch( e ) {
		try {
			this.req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch( e ) {
			try {
				this.req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch( failed ) {
				this.req = null;
			}
		}
	}

	this.req.obj = this;
	this.req.onreadystatechange = function() {
		switch( this.readyState ) {
			case 0: // UNINITIALIZED
			case 1: // LOADING
			case 2: // LOADED
			case 3: // INTERACTIVE
				break;
			case 4: // COMPLETED
				this.obj.completed();
				break;
			default: ; // unknown state
		}
	}

	this.start = function() {
		this.req.open( "GET", this.url, true );
		this.req.send( null );
	}
	this.abort = function() {
		this.req.abort();
	}

	this.completed = function() {

		if( this.req.status == 200 ) {
			for( var i = 0; i < this.handlers.length; i++ ) {
				this.handlers[i].onCompleted( this, this.req.responseText );
			}
		} else {
			for( var i = 0; i < this.handlers.length; i++ ) {
				this.handlers[i].onError( this, this.req.status );
			}
		}

	}

	this.addHandler = function( handler ) {
		this.handlers.push( handler );
	}

}

function setAllInactive() {

	//download
  var elDownloadAnchor = document.getElementById( "booklet_download_a" );
  var elDownloadMessage = document.getElementById( "booklet_download_m" );

  if( elDownloadAnchor && elDownloadMessage ) {
    elDownloadAnchor.style.display = "inline";
    elDownloadMessage.style.display = "none";
  }

  var elDownloadSuccess = document.getElementById( "booklet_download_success" );

  if( elDownloadSuccess ) {
    elDownloadSuccess.style.display = "none";
  }

	//emailform
  var elEmailAnchor = document.getElementById( "booklet_email_a" );
  var elEmailMessage = document.getElementById( "booklet_email_m" );
  if( elEmailAnchor && elEmailMessage ) {
    elEmailAnchor.style.display = "inline";
    elEmailMessage.style.display = "none";
  }

  var elEmailAni = document.getElementById( "booklet_emailform_ani" );
  if( elEmailAni ) {
    elEmailAni.style.display = "none";
  }

  var elEmailDiv = document.getElementById( "booklet_emailform" );
  if( elEmailDiv ) {
    elEmailDiv.style.display = "none";
  }

  var elEmailSuccess = document.getElementById( "booklet_emailform_success" );
  var elEmailFail = document.getElementById( "booklet_emailform_fail" );

  if( elEmailSuccess && elEmailFail ) {
    elEmailSuccess.style.display = "none";
    elEmailFail.style.display = "none";
  }

	//sendform
  var elSendAnchor = document.getElementById( "booklet_send_a" );
  var elSendMessage = document.getElementById( "booklet_send_m" );
  if( elSendAnchor && elSendMessage ) {
    elSendAnchor.style.display = "inline";
    elSendMessage.style.display = "none";
  }

  var elSendAni = document.getElementById( "booklet_sendform_ani" );
  if( elSendAni ) {
    elSendAni.style.display = "none";
  }

  var elSendDiv = document.getElementById( "booklet_sendform" );
  if( elSendDiv ) {
    elSendDiv.style.display = "none";
  }

  var elSendSuccess = document.getElementById( "booklet_sendform_success" );
  var elSendFail = document.getElementById( "booklet_sendform_fail" );

  if( elSendSuccess && elSendFail ) {
    elSendSuccess.style.display = "none";
    elSendFail.style.display = "none";
	}
	
}

function downloadPDF() {

	setAllInactive();

  var elDownloadAnchor = document.getElementById( "booklet_download_a" );
  var elDownloadMessage = document.getElementById( "booklet_download_m" );
  var elDownloadAni = document.getElementById( "booklet_download_ani" );
  if( elDownloadAnchor && elDownloadMessage && elDownloadAni) {
    elDownloadAnchor.style.display = "none";
    elDownloadMessage.style.display = "inline";
    elDownloadAni.style.display = "inline";
  }

  setTimeout( downloadPDFDone, downloadDelay );
}
function downloadPDFDone() {

/*
  var elDownloadAnchor = document.getElementById( "booklet_download_a" );
  var elDownloadMessage = document.getElementById( "booklet_download_m" );
*/  
  var elDownloadAni = document.getElementById( "booklet_download_ani" );
  if( /*elDownloadAnchor && elDownloadMessage &&*/ elDownloadAni) {
    /*elDownloadAnchor.style.display = "inline";
    elDownloadMessage.style.display = "none";*/
    elDownloadAni.style.display = "none";
  }

  var elDownloadSuccess = document.getElementById( "booklet_download_success" );
  if( elDownloadSuccess ) {
    elDownloadSuccess.style.display = "inline";
  }

  window.location = bookletIFaceURL + "?action=create&output=download";

}

/*
function printPDF() {

  var elPrintAnchor = document.getElementById( "booklet_print_a" );
  var elPrintMessage = document.getElementById( "booklet_print_m" );
  var elPrintAni = document.getElementById( "booklet_print_ani" );
  if( elPrintAnchor && elPrintMessage && elPrintAni ) {
    elPrintAnchor.style.display = "none";
    elPrintMessage.style.display = "inline";
    elPrintAni.style.display = "inline";
  }

  setTimeout( printPDFDone, downloadDelay );
}
function printPDFDone() {
  var elPrintAnchor = document.getElementById( "booklet_print_a" );
  var elPrintMessage = document.getElementById( "booklet_print_m" );
  var elPrintAni = document.getElementById( "booklet_print_ani" );
  if( elPrintAnchor && elPrintMessage && elPrintAni ) {
    elPrintAnchor.style.display = "inline";
    elPrintMessage.style.display = "none";
    elPrintAni.style.display = "none";
  }

  window.location = bookletIFaceURL + "?action=create&output=print";

}
*/

function showPDFEmailForm() {

	setAllInactive();

  var elFormDiv = document.getElementById( "booklet_emailform" );
  if( elFormDiv ) {
    elFormDiv.style.display = "block";
  }

  var elSendAnchor = document.getElementById( "booklet_email_a" );
  var elSendMessage = document.getElementById( "booklet_email_m" );
  if( elSendAnchor && elSendMessage ) {
    elSendAnchor.style.display = "none";
    elSendMessage.style.display = "inline";
  }

}
function sendPDFEmailForm() {

  var elInputName = document.getElementById( "booklet_emailform_name" );
  var elInputPhone = document.getElementById( "booklet_emailform_phone" );
  var elInputEmail = document.getElementById( "booklet_emailform_email" );
  var elInputSubject = document.getElementById( "booklet_emailform_subject" );

  var elParaName = document.getElementById( "booklet_emailform_name_invalid" );
  var elParaPhone = document.getElementById( "booklet_emailform_phone_invalid" );
  var elParaEmail = document.getElementById( "booklet_emailform_email_invalid" );

  var elInvalidMessage = document.getElementById( "booklet_emailform_invalid_message" );

  if( elInputName && elInputSubject && elInputPhone && elInputEmail 
  		&& elParaName && elParaPhone && elParaEmail 
  		&& elInvalidMessage ) {

    var valid = true;
    if( !checkInput( elInputName, elParaName, checkValueLength ) )
      valid = false;

    if( !checkInput( elInputPhone, elParaPhone, checkValuePhone ) )
      valid = false;

    if( !checkInput( elInputEmail, elParaEmail, checkValueEmail ) )
      valid = false;

    if( !valid ) {
    	elInvalidMessage.style.display = "block";
      return;
    } else {
    	elInvalidMessage.style.display = "none";
    }

    //send ajax request
    var url = bookletIFaceURL + "?action=create&output=email";

    url += "&name=" + escape( elInputName.value );
    url += "&phone=" + escape( elInputPhone.value );
    url += "&email=" + escape( elInputEmail.value );
    url += "&subject=" + escape( elInputSubject.value );

    var req = new Request( url );
	  req.addHandler( 
		  { 
			  "onCompleted": function( req, data ) { sendPDFEmailFormAnswer( data ); },
			  "onError":     function( req, msg ) {} 
		  } 
	  );

	  req.start();  

    var elSendAni = document.getElementById( "booklet_emailform_ani" );
    if( elSendAni ) {
      elSendAni.style.display = "inline";
    }

    var elFormDiv = document.getElementById( "booklet_emailform" );
    if( elFormDiv ) {
      elFormDiv.style.display = "none";
    }

/*
    var elSendAnchor = document.getElementById( "booklet_email_a" );
    var elSendMessage = document.getElementById( "booklet_email_m" );
    if( elSendAnchor && elSendMessage ) {
      elSendAnchor.style.display = "none";
      elSendMessage.style.display = "none";
    }
*/

  }

}
function sendPDFEmailFormAnswer( data ) {

	//alert( data );

  var answer = {};
  try {
    answer = eval( "(" + data + ")" );
  } catch( e ) {
  }

  answer.success = ( answer.success == 1 ) ? true : false;

  var elSendAni = document.getElementById( "booklet_emailform_ani" );
  if( elSendAni ) {
    elSendAni.style.display = "none";
  }

  var elSuccess = document.getElementById( "booklet_emailform_success" );
  var elFail = document.getElementById( "booklet_emailform_fail" );

  if( answer.success ) {
    if( elSuccess && elFail ) {
      elSuccess.style.display = "block";
      elFail.style.display = "none";
    }
  } else {
    if( elSuccess && elFail ) {
      elSuccess.style.display = "none";
      elFail.style.display = "block";
    }
  }

/*
  var elSendAnchor = document.getElementById( "booklet_email_a" );
  var elSendMessage = document.getElementById( "booklet_email_m" );
  if( elSendAnchor && elSendMessage ) {
    elSendAnchor.style.display = "inline";
    elSendMessage.style.display = "none";
  }
*/

  var frm = document.forms.booklet_emailform_form;
  if( frm ) {
    frm.reset();
    emailFieldsValid();
  }

}

function emailFieldsValid() {

  var elParaName = document.getElementById( "booklet_emailform_name_invalid" );
  var elParaPhone = document.getElementById( "booklet_emailform_phone_invalid" );
  var elParaEmail = document.getElementById( "booklet_emailform_email_invalid" );

  var elInvalidMessage = document.getElementById( "booklet_emailform_invalid_message" );

  if( elParaName && elParaPhone && elParaEmail && elInvalidMessage ) {
  	setFieldValid( elParaName );
  	setFieldValid( elParaPhone );
  	setFieldValid( elParaEmail );
  	
  	elInvalidMessage.style.display = "none";
	}
	
}

function showPDFForm() {

	setAllInactive();

  var elFormDiv = document.getElementById( "booklet_sendform" );
  if( elFormDiv ) {
    elFormDiv.style.display = "block";
  }

  var elSendAnchor = document.getElementById( "booklet_send_a" );
  var elSendMessage = document.getElementById( "booklet_send_m" );
  if( elSendAnchor && elSendMessage ) {
    elSendAnchor.style.display = "none";
    elSendMessage.style.display = "inline";
  }

}
function sendPDFForm() {

  var elInputName = document.getElementById( "booklet_sendform_name" );
  var elInputAddress = document.getElementById( "booklet_sendform_address" );
  var elInputCity = document.getElementById( "booklet_sendform_city" );
  var elInputPhone = document.getElementById( "booklet_sendform_phone" );
  var elInputEmail = document.getElementById( "booklet_sendform_email" );
  var elInputSubject = document.getElementById( "booklet_sendform_subject" );

  var elParaName = document.getElementById( "booklet_sendform_name_invalid" );
  var elParaAddress = document.getElementById( "booklet_sendform_address_invalid" );
  var elParaCity = document.getElementById( "booklet_sendform_city_invalid" );
  var elParaPhone = document.getElementById( "booklet_sendform_phone_invalid" );
  var elParaEmail = document.getElementById( "booklet_sendform_email_invalid" );

  var elInvalidMessage = document.getElementById( "booklet_sendform_invalid_message" );

  if( elInputName && elInputAddress && elInputCity && elInputSubject && elInputPhone && elInputEmail && elInputSubject
  		&& elParaName && elParaAddress && elParaCity && elParaPhone && elParaEmail 
  		&& elInvalidMessage ) {

    var valid = true;
    if( !checkInput( elInputName, elParaName, checkValueLength ) )
      valid = false;

    if( !checkInput( elInputAddress, elParaAddress, checkValueLength ) )
      valid = false;

    if( !checkInput( elInputCity, elParaCity, checkValueLength ) )
      valid = false;

    if( !checkInput( elInputPhone, elParaPhone, checkValuePhone ) )
      valid = false;

    if( !checkInput( elInputEmail, elParaEmail, checkValueEmail ) )
      valid = false;

    if( !valid ) {
    	elInvalidMessage.style.display = "block";
      return;
    } else {
    	elInvalidMessage.style.display = "none";
    }

    //send ajax request
    var url = bookletIFaceURL + "?action=create&output=send";

    url += "&name=" + escape( elInputName.value );
    url += "&address=" + escape( elInputAddress.value );
    url += "&city=" + escape( elInputCity.value );
    url += "&phone=" + escape( elInputPhone.value );
    url += "&email=" + escape( elInputEmail.value );
    url += "&subject=" + escape( elInputSubject.value );

    var req = new Request( url );
	  req.addHandler( 
		  { 
			  "onCompleted": function( req, data ) { sendPDFFormAnswer( data ); },
			  "onError":     function( req, msg ) {} 
		  } 
	  );

	  req.start();  

    var elSendAni = document.getElementById( "booklet_sendform_ani" );
    if( elSendAni ) {
      elSendAni.style.display = "inline";
    }

    var elFormDiv = document.getElementById( "booklet_sendform" );
    if( elFormDiv ) {
      elFormDiv.style.display = "none";
    }

/*
    var elSendAnchor = document.getElementById( "booklet_send_a" );
    var elSendMessage = document.getElementById( "booklet_send_m" );
    if( elSendAnchor && elSendMessage ) {
      elSendAnchor.style.display = "none";
      elSendMessage.style.display = "none";
    }
*/

  }
  
}
function sendPDFFormAnswer( data ) {

  //alert( data );

  var answer = {};
  try {
    answer = eval( "(" + data + ")" );
  } catch( e ) {
  }

  answer.success = ( answer.success == 1 ) ? true : false;

  var elSendAni = document.getElementById( "booklet_sendform_ani" );
  if( elSendAni ) {
    elSendAni.style.display = "none";
  }

  var elSuccess = document.getElementById( "booklet_sendform_success" );
  var elFail = document.getElementById( "booklet_sendform_fail" );

  if( answer.success ) {
    if( elSuccess && elFail ) {
      elSuccess.style.display = "block";
      elFail.style.display = "none";
    }
  } else {
    if( elSuccess && elFail ) {
      elSuccess.style.display = "none";
      elFail.style.display = "block";
    }
  }

/*
  var elSendAnchor = document.getElementById( "booklet_send_a" );
  var elSendMessage = document.getElementById( "booklet_send_m" );
  if( elSendAnchor && elSendMessage ) {
    elSendAnchor.style.display = "inline";
    elSendMessage.style.display = "none";
  }
*/

  var frm = document.forms.booklet_sendform_form;
  if( frm ) {
    frm.reset();
		sendFieldsValid();
  }

}
function sendFieldsValid() {
    var elParaName = document.getElementById( "booklet_sendform_name_invalid" );
	  var elParaAddress = document.getElementById( "booklet_sendform_address_invalid" );
	  var elParaCity = document.getElementById( "booklet_sendform_city_invalid" );
	  var elParaPhone = document.getElementById( "booklet_sendform_phone_invalid" );
	  var elParaEmail = document.getElementById( "booklet_sendform_email_invalid" );

	  var elInvalidMessage = document.getElementById( "booklet_sendform_invalid_message" );

	  if( elParaName && elParaAddress && elParaCity && elParaPhone && elParaEmail && elInvalidMessage ) {
	  	setFieldValid( elParaName );
	  	setFieldValid( elParaAddress );
	  	setFieldValid( elParaCity );
	  	setFieldValid( elParaPhone );
	  	setFieldValid( elParaEmail );
	  	
	  	elInvalidMessage.style.display = "none";
	  	
  	}
}

//----------------------------------- validation
function checkValueLength( el, str ) {
	return str.length > 0 && ( str != el.defaultText );
}
function checkValuePhone( el, str ) {

	if( str.length > 0 ) {

		for( var i = 0; i < str.length; i++ ) {
			var c = str.charAt(i);
		
		  if (((c >= "0") && (c <= "9")) ) {
		  }
		  else if ( c == " " ) {
		  }
		  else if ( c == "+" ) {
		  }
		  else if ( c == "(" || c == ")" ) {
		  }
		  else {
		  	return false;
		  }
		  
		}
		
	} else {
		return false;
	}
	
	return true;
}
function checkValueEmail( el, str ) {
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	return reg.test( str );
}

function setFieldValid( elPara ) {
	elPara.style.display = "none";
}
function setFieldInvalid( elPara ) {
	elPara.style.display = "inline";
}

function checkInput( el, elPara, checkFunc ) {

  if( checkFunc( el, el.value ) ) {
		setFieldValid( elPara );
    return true;
  } else {
		setFieldInvalid( elPara );
    return false;
  }

}


