/******************************************************************************
*
*                   INDIGEN SOLUTIONS CODE PROPERTY
*       The present javascript code is property of Indigen Solutions. This
*     code can only be used inside Internet/Intranet web sites located on
*  *web servers*, as the outcome of a licensed Indigen Solutions application
*  only. Any unauthorized use, reverse-engineering, alteration, transmission,
* transformation, facsimile, or copying of any means (electronic or not) is
*     strictly prohibited and will be prosecuted. Removal of the present
*              copyright notice is strictly prohibited
*         Copyright (c) 2004 Indigen Solutions. All Rights Reserved.
*
******************************************************************************/

var Order={}

/**
* Serialize the document HTML
*/
Order.serializeDocument=function() {
	return Order.serialize(document.documentElement,"");
}

/**
* HTML element attributes to be serialized
*/
Order.attributes=[
	"id",
	"name",
	"src",
	"title",
	"content",
	"http-equiv",
	"href",
	"type",
	"rel",
	"nowrap",
	"rowspan",
	"colspan"
];

/**
* CSS style properties to be serialized
*/
Order.styles=[
	{ name: "width", prop: "width" },
	{ name: "height", prop: "height" },
	{ name: "border", prop: "border" },
	{ name: "top", prop: "top" },
	{ name: "left", prop: "left" },
	{ name: "color", prop: "color" },
	{ name: "position", prop: "position" },
	{ name: "padding", prop: "padding" },
	{ name: "margin", prop: "margin" },
	{ name: "overflow", prop: "overflow" },
	{ name: "font-size", prop: "fontSize" },
	{ name: "vertical-align", prop: "verticalAlign" },
	{ name: "background-color", prop: "backgroundColor" },
	{ name: "background-image", prop: "backgroundImage" }
];

/**
* HTML elements containing closing slash
*/
Order.singleTags={
	"input": 1,
	"br": 1,
	"img": 1
}

/**
* Serialize a DOM node
*/
Order.serialize=function(node,indent) {
	if(node.nodeType==3) {
		var text=node.nodeValue;
		return Order.escape(text);
	}
	
	// elements that must not be serialized contain title attribute as dispose
	try {
		if(node.getAttribute("title")=="dispose")
        return "";
	} catch(e) {}

	var html=indent;

	var nodeName=node.nodeName.toLowerCase();

	html+="<"+node.nodeName;
	if(node.className!=null && node.className!="")
		html+=" class=\""+node.className+"\"";
	for(var i=0;i<Order.attributes.length;i++) {
		var attrv=node.getAttribute(Order.attributes[i]);
		if(attrv!=null && attrv!="")
			html+=" "+Order.attributes[i]+"=\""+Order.escape(attrv)+"\"";
	}
	var style="";
	for(var i=0;i<Order.styles.length;i++) {
		var name=Order.styles[i].name;
		var prop=Order.styles[i].prop;
		var val=node.style[prop].replace(/"/g,"'");
		if(val!=null && val!='')
			style+=name+":"+val+"; ";
	}
	if(style!="")
		html+=" style=\""+Order.escape(style)+"\"";
	if(node.nodeName.toLowerCase()=="input" && node.type!="hidden") {
        html+=" readonly=\"true\"";
		if(node.value!=null && node.value!="")
			html+=" value=\""+Order.escape(node.value)+"\"";
		if(node.checked==true)
			html+=" checked=\"on\"";
	}
	if(node.nodeName.toLowerCase()=="textarea") {
        html+=" readonly=\"true\"";
    }
    
	if(Order.singleTags[node.nodeName.toLowerCase()]!=null)
		html+="/>";
	else {
		html+=">";
		if(node.nodeName.toLowerCase()=="textarea") {
			if(node.value!=null)
				html+=Order.escape(node.value);
		}

		else if(node.nodeType==1) {
			var node0=node.firstChild;
			while(node0!=null) {
				html+=Order.serialize(node0,"");
				node0=node0.nextSibling;
			}
		}
	
		html+=indent+"</"+node.nodeName+">";
	}
	return html;
}

/**
* Calculates position of an element in the page
*/
Order.getElementPosition=function(elem) {
		var pos={x:-document.body.scrollLeft, y:-document.body.scrollTop};
		var node=elem;
		for (; node; node = node.offsetParent) {
				pos.x += parseInt(node.offsetLeft);
				pos.y += parseInt(node.offsetTop);
		}
		return pos;
}

/**
* Prepare form to be submitted. Serialize the HTML page and assign an hidden field with this value
*/
Order.submit=function() {
  var form = document.getElementById("order-form");
  var valid = true;
  if (form.order_veterinaire.value == "") {
    alert("Le champ Vétérinaire doit être saisi");
    return false;
  }
  try {
	var html=Order.serializeDocument();
	} catch(e) {
		alert(e);
		return false;
	}
	var htmlElem=document.getElementById("html");
	htmlElem.setAttribute("value",html);
	return true;
}

Order.escape=function(text) {
  text=text.replace(/&/g,"&amp;");
  text=text.replace(/</g,"&lt;");
  text=text.replace(/>/g,"&gt;");
  return text;
}
