var allow_canvas_resize=true;
var ie=document.all;
var ns6=document.getElementById&&!document.all;

var dragapproved=false;
var z,x,y;
var im_start =new Object;
var im_map =new Object;
var im_map_copy =new Object;
var move_made =false;
var		itemCnt = 0 ;
var		topLayer = 1 ;

if(typeof HTMLElement!="undefined" && !
HTMLElement.prototype.insertAdjacentElement){
	HTMLElement.prototype.insertAdjacentElement = function
(where,parsedNode)
	{
		switch (where){
		case 'beforeBegin':
			this.parentNode.insertBefore(parsedNode,this)
			break;
		case 'afterBegin':
			this.insertBefore(parsedNode,this.firstChild);
			break;
		case 'beforeEnd':
			this.appendChild(parsedNode);
			break;
		case 'afterEnd':
			if (this.nextSibling) 
this.parentNode.insertBefore(parsedNode,this.nextSibling);
			else this.parentNode.appendChild(parsedNode);
			break;
		}
	}

	HTMLElement.prototype.insertAdjacentHTML = function
(where,htmlStr)
	{
		var r = this.ownerDocument.createRange();
		r.setStartBefore(this);
		var parsedHTML = r.createContextualFragment(htmlStr);
		this.insertAdjacentElement(where,parsedHTML)
	}


	HTMLElement.prototype.insertAdjacentText = function
(where,txtStr)
	{
		var parsedText = document.createTextNode(txtStr)
		this.insertAdjacentElement(where,parsedText)
	}
}

function buildMove(e){
	show_item_info(z);
	dragapproved=false;
}

function move(e){
	if (dragapproved){
		//show_item_info(z);
		z.style.left=ns6? temp1+e.clientX-x: temp1+event.clientX-x;
		z.style.top=ns6? temp2+e.clientY-y : temp2+event.clientY-y;

		z_x=parseInt(z.style.left+0);
		z_y=parseInt(z.style.top+0);

		//add image image object map to central map holder if nothing is there yet
		if (typeof im_map[z_id] == "undefined") im_map[z_id]=new Array;
		im_map[z_id].z_id=z_id;
		im_map[z_id].z_x=z_x;
		im_map[z_id].z_y=z_y;

		return false;
	}
}

function drags(e){
	if (!ie&&!ns6) return;
	var firedobj=ns6? e.target : event.srcElement;
	var topelement=ns6? "HTML" : "BODY";

	while (firedobj.tagName!=topelement&&firedobj.className!="drag"){
		firedobj=ns6? firedobj.parentNode : firedobj.parentElement;
	}

	if (firedobj.className=="drag"){
		var  helpMsg=new Array();
  		helpMsg[0]="you can double click the item to create a duplicate at the <i>Build Place</i>";
		helpMsg[1]="drag all the items to the <i>Build Place</i> and press red <b>Build</b> button when the doll is completed";
		helpMsg[2]="you can always click <b>+ Add Item</b> button to add items from the categories you did not include in original selection";
		helpMsg[3]="you can right click the item for advanced functionality if you have premium access";	
		helpMsg[4]="you can always move the item with keyboard arrow keys";
		set_help(helpMsg[Math.round(Math.random()*4)],0);
		
		show_item_info(firedobj);	
	
		allow_canvas_resize=false;
		dragapproved=true;
		z=firedobj;
		temp1=parseInt(z.style.left+0);
		temp2=parseInt(z.style.top+0);
		x=ns6? e.clientX: event.clientX;
		y=ns6? e.clientY: event.clientY;

		//rec starting position if it has not been recorded yet
		z_id=firedobj.id;
		if (typeof im_start[z_id] == "undefined"){
			//create image object map
			//alert(y);
			//alert(firedobj.offsetTop);
			var im = new Object;
			im.z_id=z_id;
			im.z_x=ns6? firedobj.offsetLeft + firedobj.scrollLeft : x-event.x+document.body.scrollLeft;
			im.z_y=ns6? firedobj.offsetTop + firedobj.scrollTop : y-event.y+document.body.scrollTop;

			im.z_x=im.z_x-2;
			im.z_y=im.z_y-2;

			//add image image object map to central map holder
			im_start[z_id]=im;
		}

		move_made=true;
		document.onmousemove=move;
		return false;
	}
}

function drop_item(cObject_id){
	move_made=true;
	if (!ie&&!ns6) return;

	var firedobj=document.getElementById(cObject_id);
	var topelement=ns6? "HTML" : "BODY";

	while (firedobj.tagName!=topelement&&firedobj.className!="drag"){
		firedobj=ns6? firedobj.parentNode : firedobj.parentElement;
	}	

	if (firedobj.className=="drag"){
		dragapproved=true;
		z=firedobj;

		//move object away
		z.style.left=-500;
		z.style.top=-500;

		var z_id = z.id;

		//check the starting position and populate it if not set
		//rec starting position if it has not been recorded yet
		if (typeof im_start[z_id] == "undefined"){
			//add image image object map to central map holder
			im_start[z_id]=new Object;
			im_start[z_id].z_id=z.id;
			im_start[z_id].z_x=-500;
			im_start[z_id].z_y=-500;
		}

		//populate the map
		//add image image object map to central map holder if nothing is there yet
		if (typeof im_map[z_id] == "undefined") im_map[z_id]=new Object;
		im_map[z_id].z_id=z_id;
		im_map[z_id].z_x=-500;
		im_map[z_id].z_y=-500;		

		dragapproved=false;

		//reset item id
		z=-1;

		//hide current item info
		hide_item_info();

		//set help		
		top.set_help('Selected item has been deleted',0);

		return false;
	}
}



function move_top(e){
	move_made=true;
	if (!ie&&!ns6) return;
	var firedobj=ns6? e.target : event.srcElement;
	var topelement=ns6? "HTML" : "BODY";

	while (firedobj.tagName!=topelement&&firedobj.className!="drag"){
		firedobj=ns6? firedobj.parentNode : firedobj.parentElement;
	}

	if (firedobj.className=="drag"){
		dragapproved=true;
		z=firedobj;

		topLayer++ ;
		itemCnt++ ;

		var		z_id = firedobj.id+'_'+itemCnt ; 
		var		innerHtml = '<img id="' + z_id + '" src="' + z.src + '" class="drag" style="position:absolute;top:0;left:0;z-index:'+ z.style.zIndex  +';" width="' + z.width + '" height="' + z.height + '">' ;
		document.getElementById("mrlayout").insertAdjacentHTML( "beforeEnd", innerHtml ) ;

		/*
		im_map_copy[im_map_copy.length] = new iteminfo(z_id, 0, 0 ) ;

		temp1=parseInt(z.style.left+0);
		temp2=parseInt(z.style.top+0);
		x=ns6? e.clientX: event.clientX;
		y=ns6? e.clientY: event.clientY;
		*/

		//check the starting position and populate it if not set
		//rec starting position if it has not been recorded yet
		if (typeof im_start[z_id] == "undefined"){
			//add image image object map to central map holder
			im_start[z_id]=new Object;
			im_start[z_id].z_id=z.id;
			im_start[z_id].z_x=0;
			im_start[z_id].z_y=0;
		}

		//populate the map
		//add image image object map to central map holder if nothing is there yet
		if (typeof im_map[z_id] == "undefined") im_map[z_id]=new Object;
		im_map[z_id].z_id=z_id;
		im_map[z_id].z_x=0;
		im_map[z_id].z_y=0;		

		dragapproved=false;

		//set proper id
		z=document.getElementById(z_id);
		show_item_info(z);

		return true;
	}
}

function move_top_sub(e, cObject){
	if (move_top_sub.arguments.length==3){
		var pMaxLayer=true;
	} else {
		var pMaxLayer=false;
	}


	move_made=true;
	if (!ie&&!ns6) return;
	var firedobj=cObject
	var topelement=ns6? "HTML" : "BODY";

	while (firedobj.tagName!=topelement&&firedobj.className!="drag"){
		firedobj=ns6? firedobj.parentNode : firedobj.parentElement;
	}

	if (firedobj.className=="drag"){
		dragapproved=true;
		z=firedobj;
		topLayer++ ;
		itemCnt++ ;

		var		z_id = firedobj.id+'_'+itemCnt ;
		
		var z_layer=z.style.zIndex;
		if (pMaxLayer) {
						maxLayer++;
			z_layer=maxLayer;			
		}
	
		var		innerHtml = '<img id="' + z_id + '" src="' + z.src + '" class="drag" style="position:absolute;top:0;left:0;z-index:'+ z_layer +';" width="' + z.width + '" height="' + z.height + '">' ;
		document.getElementById("mrlayout").insertAdjacentHTML( "beforeEnd", innerHtml) ;
				
		//check the starting position and populate it if not set
		//rec starting position if it has not been recorded yet
		if (typeof im_start[z_id] == "undefined"){
			//add image image object map to central map holder
			im_start[z_id]=new Object;
			im_start[z_id].z_id=z.id;
			im_start[z_id].z_x=0;
			im_start[z_id].z_y=0;
		}

		//populate the map
		//add image image object map to central map holder if nothing is there yet
		if (typeof im_map[z_id] == "undefined") im_map[z_id]=new Object;
		im_map[z_id].z_id=z_id;
		im_map[z_id].z_x=0;
		im_map[z_id].z_y=0;		

		dragapproved=false;

		//set proper id
		z=document.getElementById(z_id);
		show_item_info(z);
		top.document.getElementById("swidth").focus();

		top.set_help('After item appears in "Build Place" (at the top of the screen) you can use mouse or keyboard to drag the item into the position.',0);

		return true;
	}
}

function _onSubmit(){
	if (!move_made){
		alert('Please drag items on top of the "Build Place" to create your doll.\nAfter the doll is created press "Build" button to "Build \& Save" it.');
		return false;
	}
	if (!ie&&!ns6) return;

	//prep result
  	var result="";
	var item_counter=0;
	for (im in im_map)
	{
	  item_counter++;
	  ieffect=0;

		if (im_map[im].z_x!=-500 && im_map[im].z_y!=-500){
			if (ie){
				if (document.getElementById(im_map[im].z_id).style.filter=="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)")  ieffect=1;
				if (document.getElementById(im_map[im].z_id).style.filter=="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)")  ieffect=2;
				if (document.getElementById(im_map[im].z_id).style.filter=="progid:DXImageTransform.Microsoft.BasicImage(rotation=0)")  ieffect=0;
				if (document.getElementById(im_map[im].z_id).style.filter=="progid:DXImageTransform.Microsoft.BasicImage(rotation=1)")  ieffect=3;
				if (document.getElementById(im_map[im].z_id).style.filter=="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)")  ieffect=4;
				if (document.getElementById(im_map[im].z_id).style.filter=="progid:DXImageTransform.Microsoft.BasicImage(rotation=3)")  ieffect=5;
			}		

			result += "##"+im_map[im].z_id + "**" + (im_start[im].z_x+im_map[im].z_x) + "**"+ (im_start[im].z_y+im_map[im].z_y) + "**" + (document.getElementById(im_map[im].z_id).style.zIndex) + "**" + ieffect;
		}
	}

	//remove first "##"
	result=result.substring(2,result.length);
	
	//alert(result);
	//return false;

	//embed the value into the form	
	document.form1.images.value = result;
	
	//try to post without popup
	inWidth=parseInt(document.form1.swidth.options[document.form1.swidth.selectedIndex].value)+100>400?parseInt(document.form1.swidth.options[document.form1.swidth.selectedIndex].value)+100:400;

	tryWindowPost("cframe", "_blank", document.form1, inWidth,parseInt(document.form1.sheight.options[document.form1.sheight.selectedIndex].value)+370);

	playSound();

		if (document.getElementById("tdpAd2")){
		var k=document.getElementById("tdpAd2").src;

		var d = new Date();
		var curr_msec = d.getMilliseconds();
		rExp = /rubish=/gi;
		var kPos=k.search(rExp);
		if (kPos>0){
			k=k.substring(0,kPos)+"rubish="+ curr_msec;
		} else {
			k+="?rubish="+ curr_msec;
		}
		document.getElementById("tdpAd2").src=k;
	}

	return true;
}