

var http = false;

if (navigator.appName == "Microsoft Internet Explorer")
{
http = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
http = new XMLHttpRequest();
}

/**
* Serialize a form. Workaround due to $('form').serialize(true) not working
* in Safari.
*/
function serializeForm(formName)
{
return(Form.serializeElements(Form.getElements($(formName)), true));
}

function serializeFormForGet(formName)
{
return(Form.serializeElements(Form.getElements($(formName)), false));
}

/**
* Update a div with the contents of the div with the same name in the
* specified page. Specified page must contain HTML formatted as follows:
*
* <div id="divName">
* <!-- divName -->
* (div contents)
* <!-- divName -->
* </div>
*/
function updateDiv(pageName, formName, divName, callback)
{
var ajaxParams = serializeForm(formName);
ajaxParams['page'] = pageName;
var updater = new Ajax.Request(
'/site/page.do',
{
parameters: ajaxParams,
onSuccess: function(transport)
{
var splitHTML = transport.responseText.split("<!-- " + divName + " -->");

if (splitHTML.length == 3)
{
$(divName).innerHTML = splitHTML[1];
splitHTML[1].evalScripts();

if (callback)
{
callback();
}
}
}
});
}

function loadDiv(pageDoUrl, pageName, formName, divName, callback)
{
var ajaxParams = serializeForm(formName);
ajaxParams['page'] = pageName;
var updater = new Ajax.Updater(
{ success: divName },
pageDoUrl,
{
parameters: ajaxParams,
onSuccess: function(transport)
{
transport.responseText.evalScripts();
if (callback)
{
callback();
}
}
});
}

function AjaxHidePage(formName, hide)
{
var ajaxParams = serializeForm(formName);
ajaxParams['method'] = (hide) ? "hide" : "unhide";
 ajaxParams['ajax'] = "1";
var updater = new Ajax.Request(
'/site/editPage.do',
{
parameters: ajaxParams,
onSuccess: function(transport)
{
alert('OK');
},
onFailure: function(transport)
{
alert('Something went wrong...');
}
});
/*
http.abort();
http.open("GET",
"/site/editPage.do?wizard=" + wizard + "&edit=" + edit + "&websiteId=" + websiteId + "&pageId=" + pageId + ((hide) ? "&method=hide" : "&method=unhide"),
true);
http.onreadystatechange = function()
{
if (http.readyState == 4)
{
//document.getElementById('foo').innerHTML = http.responseText;
}
}
http.send(null);
*/
}

function AjaxAddImageToAlbum(websiteId, albumId, imageId, add)
{
var data = "websiteId=" + websiteId;
data += "&albumId=" + albumId;
data += "&id_0=" + imageId + "&sel_0=on";
data += "&method=" + ((add) ? "add" : "remove");
data += "&ajaxHref=" + escape(document.location.href);

http.abort();
http.open("POST",
"/site/editAlbumImages.do",
true);
http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
http.onreadystatechange = function()
{
if (http.readyState == 4)
{
//document.getElementById('foo').innerHTML = http.responseText;
}
}
http.send(data);
}

function AjaxAddImagesToAlbum(form, albumId, add)
{
var ajaxParams = serializeForm('EditImagesForm');
ajaxParams['albumId'] = albumId;
ajaxParams['method'] = (add) ? "add" : "remove";
ajaxParams['ajaxHref'] = '/site/page.do?dsb/ajax/website/image/list&' +
Form.serializeElements($('EditImagesForm').getInputs('hidden', 'websiteId'));

//var json = transport.responseText.evalJSON(true);

var updater = new Ajax.Request(
'/site/editAlbumImages.do',
{
parameters: ajaxParams,
onSuccess: function(transport)
{
var json = transport.responseText.evalJSON(true);

if ($('messages'))
{
$('messages').replace(json.messagesHTML);
}

for (var ii = 0; ii < json.images.length; ii++)
{
if ($('actions' + json.images[ii].id))
{
$('actions' + json.images[ii].id).replace(json.images[ii].selectHTML);
}
}

},
onFailure: function(transport)
{
alert('Something went wrong...')
}
});
/*
new Ajax.Request('/site/editAlbumImages.do', {
parameters: ajaxParams,
onSuccess: function(request)
{
var response = request.responseText || "no response text";
$('first').replace('<ul id="favorite"><li>kiwi</li><li>banana</li><li>apple</li></ul>');
},
onFailure: function(request)
{
alert('Something went wrong...')
}

});
*/

/*
var data = getFormValues(form, false);
data += "&albumId=" + albumId;
data += "&method=" + ((add) ? "add" : "remove");
data += "&ajaxHref=" + escape(document.location.href);

http.abort();
http.open("POST",
"/site/editAlbumImages.do",
true);
http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
http.onreadystatechange = function()
{
if (http.readyState == 4)
{
var xmlDoc = getXMLDocument(http);
var forms = xmlDoc.getElementsByTagName("form");

if (forms.length == 1)
{
var currentForm = document.getElementById('EditImagesForm');
if (forms[0].innerHTML)
{
document.getElementById('EditImagesForm').innerHTML = forms[0].innerHTML;
}
else
{
document.getElementById('EditImagesForm').outerHTML = forms[0].xml;
}
}
}
}
http.send(data);
*/
}

function getFormValues(fobj, validationFunc)
{
var str = "";
var valueArr = null;
var val = "";
var cmd = "";
var zelement;

for (var ii = 0; ii < fobj.elements.length; ii++)
{
element = fobj.elements[ii];

switch (element.type)
{
case "hidden":
str += element.name + "=" + element.value + "&";
 break;

case "checkbox":
if (element.checked)
{
str += element.name + "=" + element.value + "&";
}
break;

case "text":
if (validationFunc)
{
// use single quotes for argument so that the value of
// element.value is treated as a string not a literal
cmd = validationFunc + "(" + 'element.value' + ")";
val = eval(cmd)
}

str += element.name + "=" + escape(element.value) + "&";
break;

case "select-one":
str += element.name +
"=" + element.options[element.selectedIndex].value + "&";
break;
}
}

// Trim the trailing '&'
if (str.length > 0)
{
str = str.substr(0,(str.length - 1));
}

return(str);
}

function getXMLDocument( ajax )
{
if (typeof DOMParser == "undefined")
{
DOMParser = function() {};

DOMParser.prototype.parseFromString = function(str, contentType)
 {
if (typeof ActiveXObject != "undefined")
{
var doc = new ActiveXObject("MSXML.DOMDocument");
doc.async = false;
var ok = doc.loadXML(str);
if (!ok)
{
alert(doc.parseError.reason);
alert(doc.parseError.srcText);
}
return doc;
}
else if ( typeof XMLHttpRequest != "undefined" )
{
alert("XMLHttp");
var req = new XMLHttpRequest();
req.open("GET", "data:" + (contentType || "application/xml") +
";charset=utf-8," + encodeURIComponent(str), false);
if ( req.overrideMimeType )
req.overrideMimeType(contentType);
req.send(null);
return req.responseXML;
}
else
{
throw new FatalException( "Can't find a valid xml parser",
"AJAX::getXMLDocument()" );
}
}
}
var strDocument = ajax.responseText;
var xmlDocument = ajax.responseXML;
try
 {
if ( ! xmlDocument || xmlDocument.childNodes.length === 0 )
xmlDocument = (new DOMParser()).parseFromString( strDocument,
"application/xml" );
return xmlDocument;
}
catch( e )
{
return null;
}
}


/**
*
* AJAX IFRAME METHOD (AIM)
* http://www.webtoolkit.info/
*
**/

AIM = {

frame : function(c)
{
var n = 'f' + Math.floor(Math.random() * 99999);
var d = document.createElement('DIV');
d.innerHTML = '<iframe style="display:none" src="about:blank" id="'+n+'" name="'+n+'" onload="AIM.loaded(\''+n+'\')"></iframe>';
document.body.appendChild(d);

var i = document.getElementById(n);
if (c && typeof(c.onComplete) == 'function') {
i.onComplete = c.onComplete;
}

return n;
},

form : function(f, name) {
f.setAttribute('target', name);
},

submit : function(f, c) {
AIM.form(f, AIM.frame(c));
 if (c && typeof(c.onStart) == 'function') {
return c.onStart();
} else {
return true;
}
},

loaded : function(id) {
var i = document.getElementById(id);
if (i.contentDocument) {
var d = i.contentDocument;
} else if (i.contentWindow) {
var d = i.contentWindow.document;
} else {
var d = window.frames[id].document;
}
if (d.location.href == "about:blank") {
return;
}

if (typeof(i.onComplete) == 'function') {
i.onComplete(d.body.innerHTML);
}
}

}


function showStatus(newStatus)
{
if ($('messages') != null)
{
$('messages').style.display = 'none';
}

$('status').style.display = 'block';
$('statusMsg').innerHTML = newStatus;
}

function hideStatus()
{
if ($('messages') != null)
{
$('messages').style.display = 'none';
}

$('status').style.display = 'none';
}


function AjaxSavePage(properties)
{
var element;
var fCKeditor;
var data;
var formElements;


data = "websiteId=" + $F($('EditPageForm')['websiteId']);
data += "&pageId=" + $F($('EditPageForm')['pageId']);

formElements = $('EditPageForm').getElements();
for (var ii = 0; ii < formElements.length; ii++)
{
if (formElements[ii].name == 'subpageId')
{
data += "&subpageId=" + $F($('EditPageForm')['subpageId']);
}
}

for (var ii = 0; ii < properties.length; ii++)
{
fCKeditor = FCKeditorAPI.GetInstance(properties[ii]);

if (fCKeditor != undefined)
{
data += "&" + properties[ii] + "=" + escape(fCKeditor.GetHTML(false));
}
}

http.abort();
http.open("POST",
"/site/editPage.do",
true);
http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
http.send(data);
}


function AjaxSaveBlogEntry(properties)
{
var element;
var fCKeditor;
var data;
var formElements;


data = "websiteId=" + $F($('EditBlogEntryForm')['websiteId']);
data += "&pageId=" + $F($('EditBlogEntryForm')['pageId']);
data += "&entryId=" + $F($('EditBlogEntryForm')['entryId']);
data += "&method=Save";

for (var ii = 0; ii < properties.length; ii++)
{
fCKeditor = FCKeditorAPI.GetInstance(properties[ii]);

if (fCKeditor != undefined)
{
data += "&" + properties[ii] + "=" + escape(fCKeditor.GetHTML(false));
}
}

http.abort();
http.open("POST",
"/site/editBlogEntry.do",
true);
http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
http.send(data);
}

function rotateImage(websiteId, imageId, clockwise)
{
var ajaxParams = $H();
var imgSrc = $('img' + imageId).src

$('img' + imageId).src='images/v2/loading.gif';

ajaxParams.set("websiteId", websiteId);
ajaxParams.set("imageId", imageId);
ajaxParams.set("method", ((clockwise) ? "rotateClockwise" :
"rotateAnticlockwise"));

var req = new Ajax.Request(
'/site/editImages.do',
{
parameters: ajaxParams,
onSuccess: function(transport)
{
if (transport.responseText.match(/<!-- AJAXOK -->/))
{
$('img' + imageId).src = imgSrc.replace(/(_.\..*?)(|\?.*)$/,"$1?" + (new Date()).getTime());
}
else
{
alert('There was a problem rotating the photo.');
$('img' + imageId).src = imgSrc;
}
},
onFailure: function(transport)
{
alert('There was a problem rotating the photo.');
$('img' + imageId).src = imgSrc;
}
});
}

function rotateUploadedImage(websiteId, pageId, imageId, clockwise)
{
var ajaxParams = $H();
var imgSrc = $('img' + imageId).src

$('img' + imageId).src='images/v2/loading.gif';

ajaxParams.set("websiteId", websiteId);
ajaxParams.set("pageId", pageId);
ajaxParams.set("imageId", imageId);
ajaxParams.set("method", ((clockwise) ? "rotateClockwise" :
"rotateAnticlockwise"));

var req = new Ajax.Request(
'/site/editUploadedImagesAjax.do',
{
parameters: ajaxParams,
onSuccess: function(transport)
{
if (transport.responseText.match(/<!-- AJAXOK -->/))
{
$('img' + imageId).src = imgSrc.replace(/(_.\..*?)(|\?.*)$/,"$1?" + (new Date()).getTime());
$('img' + imageId + 'lightBox').href = $('img' + imageId + 'lightBox').href.replace(/(_.\..*?)(|\?.*)$/,"$1?" + (new Date()).getTime());
}
else
{
alert('There was a problem rotating the photo.');
$('img' + imageId).src = imgSrc;
}
},
onFailure: function(transport)
{
alert('There was a problem rotating the photo.');
$('img' + imageId).src = imgSrc;
}
});
}

