function onClickOrMoveMouseOverSeat(i){
//alert(i);
}

var ALLSTRING_RESERVED="";
function addReservedSeats(i,imageNo){
		var imageID=getImageID(i,imageNo); // we can make aoother
		ALLSTRING_RESERVED=ALLSTRING_RESERVED+imageID+",";
}


function C(obj){//click on cell;
if (movedObjIDs.split(",").length>=2) {movedObjIDs=";"; return;}
var id=obj.id.replace("A",""); //id like A0_1
var i,imageNo;
i=id.split("_")[0];
imageNo=id.split("_")[1];
var imageID=getImageID(i,imageNo);
if (ALLSTRING_RESERVED.indexOf(imageID+",")>=0){
alert("Sorry, the seats have been reserved already!");
return;
}

var x0, y0,x,y, x1,y1,x2,y2, w,h;
var map=obj.parentNode.name;

for(var m=0;m<document.images.length;m++){
var img=document.images[m];
if(img.useMap && img.useMap.indexOf(map)>=0) {
//alert(img.src+" "+img.useMap);
x0=nopx(img.style.left);
y0=nopx(img.style.top);
break;
}
} // end for finding for

var coords=obj.coords;
var arrCs=coords.split(",");

var lkk= new A();
lkk.addPoint(parseFloat(arrCs[0])+x0,parseFloat(arrCs[1])+y0);
lkk.addPoint(parseFloat(arrCs[2])+x0,parseFloat(arrCs[3])+y0);
lkk.addPoint(parseFloat(arrCs[4])+x0,parseFloat(arrCs[5])+y0);
lkk.addPoint(parseFloat(arrCs[6])+x0,parseFloat(arrCs[7])+y0);

x=lkk.getMidX();
y=lkk.getMidY();
x1=lkk.getMinX();
y1=lkk.getMinY();
x2=lkk.getMaxX();
y2=lkk.getMaxY();
w=(x2-x1);
h=(y2-y1);

//alert(img.id+" "+img.usemap);
var imageID=getImageID(i,imageNo);

//alert(ALLSTRING_RESERVED+"\n"+imageID);
var successAdded =false;
successAdded = addTohowManyIs(imageID);
if(successAdded ) // if true, image doesn't exist, added successful. 
//If Not, image has been existing then removeing it
	{
	var x3,y3,w3,h3;
	x3=x1;y3=y1;w3=w+1;h3=h+1;
	if (w>10 ) {w3=w-4;x3=x1+2} 
	if (h>10 ) {h3=h-4;y3=y1+2} 	
	addFlag(i,imageNo,x3,y3,w3,h3);
	}
else
	{
	switchFlagVisibility(imageID,i,imageNo);
	 } // first time	
	// add an image. Then click on that image. that image fire up ..display="none"
	// click one more time it will be coming here.	
setDisplayTicketsNumberPrice();	
}

var howManyIsArePassed="";
var movedObjIDs=";";
function addTohowManyIs(imageID){
	if (howManyIsArePassed.indexOf(imageID+",")<0) { 
		howManyIsArePassed=howManyIsArePassed+imageID+",";
		return true;
		}
	else
		return false;
}


function setDisplayTicketsNumberPrice(){
var oHowmany,oHowmuch
oHowmany=document.getElementById("howmany");
oHowmuch=document.getElementById("howmuch");
//oHowmany.innerHTML="2";
oHowmuch.innerHTML="3"
//alert(howManyIsArePassed);

//--Analyze the string 
var arr=howManyIsArePassed.split(",");
var imgNO,seatNO;
var totalNum,totalMoney;
totalNum=0;
totalMoney=0;
for(var i=0;i<arr.length;i++) {
if (arr[i]!="") {
		var arr2=arr[i].split("_");		
		imageNO=arr2[0];
		seatNO=arr2[1];
		var id=getImageID(seatNO,imageNO);
		var o=document.getElementById(id);				
		if(o.style.display=="block"){
		totalNum++;
		var iPrice=getStatus(seatNO,imageNO);
		totalMoney = totalMoney + parseFloat(getPrice(iPrice));
		}; // end if(o.style..
	}; // end if (arr[i]..
} //end for
oHowmany.innerHTML=totalNum;
oHowmuch.innerHTML=tomoney(totalMoney);
if(parent.acceptFireUp) {parent.acceptFireUp();}
}

function getHowmany(){
var oHowmany;
oHowmany=document.getElementById("howmany");
return oHowmany.innerHTML;
}

function getHowmuch(){
var oHowmuch;
oHowmuch=document.getElementById("howmuch");
return oHowmuch.innerHTML;
}

function getImageID(i,imageNo){
var istatus=getStatus(i,imageNo);
var strDesign="";
if (window.getDesignID) {
strDesign="_"+getDesignID();
}
//else
//alert(getDesignID());
//return  imageNo+"_"+i+"_"+getPrice(istatus)+"_"+getRow(i,imageNo)+"_"+getSeatInRow(i,imageNo)+strDesign;
return  imageNo+"_"+i+"_"+getPrice(istatus)+ strDesign;
}

function addFlag(i,imageNo,x,y,w,h){
var img = document.createElement("IMG");
img.id=getImageID(i,imageNo);
img.src=GLOBAL_SELECTED_IMAGE;
img.width=8;
img.height=8;

img.style.position="absolute";
img.style.left=x;
img.style.top=y;
img.style.zIndex=100000;
img.style.display="block";
if(w) {img.width=w;} else {alert("no w");};
if(h) img.height=h;
//document.getElementById("lkk2").appendChild(img);
document.body.appendChild(img);
//document.attachEvent(img.onclick,
img.onclick=function(evt){
var evt = evt || window.event; // event object
var element = evt.target || window.event.srcElement; // event target
element.style.display="none";
setDisplayTicketsNumberPrice();
	} //CS(i,imageNo);
// Usually, you can call it by img.onclick(s,y)... the funciton () can carry parameter function(x,y)
//img.setAttribute("onClick","test()")
}


function switchFlagVisibility(imageID){
var os=document.getElementById(imageID).style;
//alert(os.display);
if(os.display=="block") os.display="none"; else os.display="block";
}


function getStatus(i,imageNo){
var statusID
statusID=eval("I"+imageNo+"["+i+"]"); // originally it is .status, in order to reduce size, dropped
return parseInt(statusID);
}
function nopx(s){
	if (s.indexOf("px")>0)
	{
		return parseInt(String(s).substring(0, s.indexOf('px'))); 
	}
	if (s.indexOf("pt")>0)
	{
		return parseInt(String(s).substring(0, s.indexOf('pt'))); 
	}
}
function getRow(i,imageNo){
var J
J=eval("I"+imageNo+"["+i+"].J");
return parseInt(J);
}

function getSeatInRow(i,imageNo){
var I
I=eval("I"+imageNo+"["+i+"].I");
return parseInt(I);
}

function init(){
var minX, minY;
minX=10000;
minY=10000;
var imgs =document.images;
for(var i=0;i<imgs.length;i++) {
	if(imgs[i].id.indexOf(prefix)>=0) { // it is what I want
	minX=Math.min(minX,nopx(imgs[i].style.left));
	minY=Math.min(minY,nopx(imgs[i].style.top));	
	} // end if
} // end for

var xd,yd;
xd=offsetX-minX;
yd=offsetY-minY;
for(var i=0;i<imgs.length;i++) {
	if(imgs[i].id.indexOf(prefix)>=0) { // it is what I want
	imgs[i].style.left=nopx(imgs[i].style.left)+xd;
	imgs[i].style.top =nopx(imgs[i].style.top) +yd;	
	} // end if
} // end for

dynamicAdd_RedFlags();	
	
}

function tomoney(s){
s=Math.round(parseFloat(s) * 100) /100; 
if (String(s).indexOf("$")<0) s="$"+s;
if (String(s).indexOf(".")<0) s=String(s)+".00";
return s;
}

//============================================
function R(i,imageNo,buyer){

var img=document.getElementById("whatever"+imageNo);

var oArea=document.getElementById("A"+i+"_"+imageNo);
if (oArea==null) return;
var coords=oArea.coords;
var arrCs=coords.split(",");
var x=(parseFloat(arrCs[0])+parseFloat(arrCs[2])+parseFloat(arrCs[4])+parseFloat(arrCs[6]))/4.0;
var y=(parseFloat(arrCs[1])+parseFloat(arrCs[3])+parseFloat(arrCs[5])+parseFloat(arrCs[7]))/4.0;

var y0=nopx(img.style.top);
var x0=nopx(img.style.left);

var lkk= new A();
lkk.addPoint(parseFloat(arrCs[0])+x0,parseFloat(arrCs[1])+y0);
lkk.addPoint(parseFloat(arrCs[2])+x0,parseFloat(arrCs[3])+y0);
lkk.addPoint(parseFloat(arrCs[4])+x0,parseFloat(arrCs[5])+y0);
lkk.addPoint(parseFloat(arrCs[6])+x0,parseFloat(arrCs[7])+y0);

x=lkk.getMidX();
y=lkk.getMidY();
x1=lkk.getMinX();
y1=lkk.getMinY();
x2=lkk.getMaxX();
y2=lkk.getMaxY();
w=(x2-x1)-2;
h=(y2-y1)-2;
if(w<10) w=10;
if(h<10) h=10;

addRedCross(i,imageNo,x1+1,y1+1,buyer,w,h)
}

function point(x,y){
this.X=x;
this.Y=y;
}
	
function A()
{
this.addPoint=addPoint;
this.getMinX=getMinX;
this.getMinY=getMinY;
this.getMaxX=getMaxX;
this.getMaxY=getMaxY;
this.getMidX=getMidX;
this.getMidY=getMidY;
	
var index=0;
var POINTS=new Array(3);	

function addPoint(x,y){
POINTS[index]=new point(x,y);
index++;
}	

//get the distance given 2 points;
function getDistance(p1,p2){
var s;
s=((p1.Y-p2.Y)*(p1.Y-p2.Y)+(p1.X-p2.X)* (p1.X-p2.X));
return s;
}

function getMinX(){
var x=POINTS[0].X;
for(var i=1;i<POINTS.length;i++) { x=Math.min(x,POINTS[i].X) };
return x;
}

function getMinY(){
var y=POINTS[0].Y;
for(var i=1;i<POINTS.length;i++) { y=Math.min(y,POINTS[i].Y) };
return y;
}

function getMaxX(){
var x=POINTS[0].X;
for(var i=1;i<POINTS.length;i++) { x=Math.max(x,POINTS[i].X) };
return x;
}

function getMaxY(){
var y=POINTS[0].Y;
//alert(POINTS.length);
for(var i=1;i<POINTS.length;i++) { y=Math.max(y,POINTS[i].Y) };
return y;
}

function getMidX(){
var x=(parseFloat(POINTS[0].X)+parseFloat(POINTS[1].X)+parseFloat(POINTS[2].X)+parseFloat(POINTS[3].X))/4.0;
return x;
}
function getMidY(){
var y=(parseFloat(POINTS[0].Y)+parseFloat(POINTS[1].Y)+parseFloat(POINTS[2].Y)+parseFloat(POINTS[3].Y))/4.0;
return y;
}


}


function addRedCross(i,imageNo,x,y,buyer,w,h){
addReservedSeats(i,imageNo) // put the image to the reserved list, in order to not to reserved again
var img = document.createElement("IMG");
img.id=getImageID_redCross(i,imageNo);
if(buyer!="") {	
	img.src=GLOBAL_SOLD_IMAGE_BOXOFFICE;
	if (buyer.indexOf("!")>0) {img.src=GLOBAL_SOLD_IMAGE_INTERNET;buyer=buyer.replace("!","");}
	if (buyer.indexOf("@")>0) {img.src=GLOBAL_SOLD_IMAGE_BOXOFFICE;buyer=buyer.replace("@","");}
	if (buyer.indexOf("#")>0) {img.src=GLOBAL_RESERVED_IMAGE;buyer=buyer.replace("#","");}
	img.alt=buyer;
	}
 else {
 img.src=GLOBAL_SOLD_IMAGE_BOXOFFICE //GLOBAL_RESERVED_IMAGE;
}

img.style.position="absolute";
img.style.left=x;
img.style.top=y;
if(w) img.style.width=w;
if(h) img.style.height=h;
img.style.zIndex=100000;
img.style.display="block";
document.body.appendChild(img);
}

function getImageID_redCross(i,imageNo){
return  imageNo+"_red_"+i;
}

function checkInput_checkout(obj){
var s;
s=document.getElementById("howmuch").innerHTML;
s=parseFloat(s.replace("$","").replace("&nbsp;",""));
if (s==0) {alert("You must select at least one seat!");return false;}
document.checkout.amount.value=s;
document.checkout.howManyIsArePassed.value=getHowmanySeatsClicked();
return true;
}

function getHowmanySeatsClicked(){
var imgs = document.images;
s="";
for(var i=0;i<imgs.length;i++) {
if (imgs[i].src.indexOf(GLOBAL_SELECTED_IMAGE)>=0) { // qualified
if(imgs[i].style.display!="none") s=s+imgs[i].id+"," // if visible, that is qualified
} // if (imgs[i]
}
return s; //howManyIsArePassed;
//alert(document.checkout.howManyIsArePassed.value);
}

function programSubmit_checkout(){
if (!checkInput_checkout()) return;
var hi=450+47*parseInt(document.getElementById("howmany").innerHTML);
//if (hi>document.body.clientHeight-100) hi=document.body.clientHeight-100;
//alert(hi);
openedWindowForPricingUpdate=window.open("", "tinyWindow", "width=700,height="+ hi+", left=230,top=250,resizable,scrollbars") ;
openedWindowForPricingUpdate.focus();
document.checkout.target="tinyWindow";
document.checkout.submit();

}

function clearForNextQuickAction(isReserve){
	howManyIsArePassed="";
	setDisplayTicketsNumberPrice();

	var imgs = document.images;	
	for(var i=0;i<imgs.length;i++) {
	if (imgs[i].src.indexOf(GLOBAL_SELECTED_IMAGE)>=0) { // qualified
	  
	  if(imgs[i].style.display!="none") { 
	   if (isReserve)
	     imgs[i].src=GLOBAL_RESERVED_IMAGE;	   
	   else
	     imgs[i].src=GLOBAL_SOLD_IMAGE_BOXOFFICE;
	     
	     if (isReserve)
		 imgs[i].onclick=function(evt){alert("This seat has been reserved")}
		 else
		 imgs[i].onclick=function(evt){alert("This seat has been sold")}
		 addReservedSeats(imgs[i].id.split("_")[1],imgs[i].id.split("_")[0])
	  } //!="none"	  
	} // if (imgs[i]
	} // end for
}

function noseats(){alert("Tickets in this area cannot be sold online at this moment!")}


//================================================================

N = (document.all) ? 0 : 1;
var mousePressed=false;
var startX, startY,endX,endY;

function AttachMousePropertiesToPicture(){
for(var m=0;m<document.images.length;m++){
var img=document.images[m];
if(img.useMap ) {
img.onmouseup = MU;
img.onmousedown = MD;
img.onmousemove = MM;
}
} // end for finding for
}

function MD(e) {
startX=event.clientX+document.body.scrollLeft;
startY=event.clientY+document.body.scrollTop;
mousePressed=true;
movedObjIDs=";";
return false;
}

function MM(e) {
return false;
}

function MU(e) {
endX=event.clientX+document.body.scrollLeft;
endY=event.clientY+document.body.scrollTop;
if(mousePressed)
{
 if (movedObjIDs.split(",").length>=2) StartProcess();
 // why, since it is 0 or 1, it will be only one cell, it is click. no need to StartProcess;
}
mousePressed=false;
return true;
}
function M(obj){
if(mousePressed) {
if(movedObjIDs.indexOf(obj.id)<0) movedObjIDs=movedObjIDs+obj.id+",";
}
}
function StartProcess(){
var x0, y0,x1,y1;
for(var m=0;m<document.images.length;m++){
var img=document.images[m];
if(img.useMap ) {
//alert(img.src+" "+img.useMap);
x0=nopx(img.style.left);
y0=nopx(img.style.top);
x1=x0+nopx(img.style.width);
y1=y0+nopx(img.style.height);
var bIncluded=ImageIncludedInClickedRectangle(x0,y0,x1,y1);
if(bIncluded) {
ProcessCellsForSelected(img);
} // end for Image included ;
} // end if(img.useMap);
} // end for finding for
//alert("dd");
setDisplayTicketsNumberPrice();	
}

function ImageIncludedInClickedRectangle(x1,y1,x2,y2){
if (pointIncludedInRectangle(startX,startY,x1,y1,x2,y2)) return true;
if (pointIncludedInRectangle(endX,endY,x1,y1,x2,y2)) return true;
return false;
}

function pointIncludedInRectangle(x,y,x1,y1,x2,y2){
var x_min=Math.min(x1,x2);
var x_max=Math.max(x1,x2);
var y_min=Math.min(y1,y2);
var y_max=Math.max(y1,y2);

if(x>=x_min && x<=x_max && y>=y_min && y<=y_max) return true;
return false;
}

function ProcessCellsForSelected(img){
var mapName =img.useMap.replace("#","");
var allMaps=document.getElementsByTagName("map");
var x0=nopx(img.style.left);
var y0=nopx(img.style.top);

for(var i2=0 ;i2<allMaps.length;i2++) {
if (allMaps[i2].name==mapName) {
var areas=allMaps[i2].areas;

for(var i=0; i<areas.length;i++) {
var x1,y1,x2,y2,x3,y3,x4,y4,x_min,y_min,x_max;
var coords=areas[i].coords.split(",");
x1=parseInt(coords[0])+x0;
x2=parseInt(coords[2])+x0;
x3=parseInt(coords[4])+x0;
x4=parseInt(coords[6])+x0;
y1=parseInt(coords[1])+y0;
y2=parseInt(coords[3])+y0;
y3=parseInt(coords[5])+y0;
y4=parseInt(coords[7])+y0;

var bIncluded=false;
var obj=areas[i];
if (movedObjIDs.indexOf(obj.id)>0) { bIncluded=true;}
var id=obj.id.replace("A",""); //id like A0_1
if(!bIncluded) bIncluded =pointIncludedInRectangle(x1,y1, startX, startY, endX, endY);
if(!bIncluded) bIncluded =pointIncludedInRectangle(x2,y2, startX, startY, endX, endY);
if(!bIncluded) bIncluded =pointIncludedInRectangle(x3,y3, startX, startY, endX, endY);
if(!bIncluded) bIncluded =pointIncludedInRectangle(x4,y4, startX, startY, endX, endY);
//alert(areas.length);
if(bIncluded) { 
	var i3,imageNo;
	i3=id.split("_")[0];
	imageNo=id.split("_")[1];
	var imageID=getImageID(i3,imageNo);
	
	//alert("y3="+y3+",y2="+y2+", i3="+ i3);	
	addImageFromXY_i_imageNo(x1,y1,x2,y2,x3,y3,x4,y4,i3,imageNo);
	} // end of bIncluded
}; // end for all areas;
} // allMaps[i].name==mapName)
} // for(var i=0 ;i<allMaps
}

function addImageFromXY_i_imageNo(x1,y1,x2,y2,x3,y3,x4,y4,i,imageNo){
//alert(" *** y2="+y2+" y1="+y1+" i="+i);	
var w,h;
var lkk2= new A();
lkk2.addPoint(x1,y1);
lkk2.addPoint(x2,y2);
lkk2.addPoint(x3,y3);
lkk2.addPoint(x4,y4);
x=lkk2.getMidX();
y=lkk2.getMidY();
x1=lkk2.getMinX();
y1=lkk2.getMinY();
x2=lkk2.getMaxX();
y2=lkk2.getMaxY();
w=(x2-x1);
h=(y2-y1);

//alert(img.id+" "+img.usemap);
var imageID=getImageID(i,imageNo);
var successAdded =false;
successAdded = addTohowManyIs(imageID);
//setDisplayTicketsNumberPrice();	
if(successAdded) // if true, image doesn't exist, added successful. If Not, image has been existing then removeing it
	{
	x3=x1;y3=y1;w3=w+1;h3=h+1;
	if (w>10 ) {w3=w-4;x3=x1+2} 
	if (h>10 ) {h3=h-4;y3=y1+2} 	

	addFlag(i,imageNo,x3,y3,w3,h3);
	}
}

function refreshW(){
	howManyIsArePassed="";
	setDisplayTicketsNumberPrice();

	var imgs = document.images;	
	for(var i=0;i<imgs.length;i++) {
	if (imgs[i].src.indexOf(GLOBAL_SELECTED_IMAGE)>=0) { // qualified
	  //alert("ee");
	  if(imgs[i].style.display!="none") { 
	imgs[i].style.display="none"
	  } //!="none"	  
	} // if (imgs[i]
	} // end for
}

setTimeout("AttachMousePropertiesToPicture()",250);
