//-------------------------------------------------------------------
// areas.js
//
// 
// Author: Zenobia Liendo
// Created Date:  08/01/2005
//
// CardTypeCategories:
//  visa, mastercard, mc2, visamini, nonsecure
//-------------------------------------------------------------------



// ================================================================================================
// Size definitions for Card Types and its Categories
// ================================================================================================

// ||  cytpeCategory == "discover" || ctypeCategory == "discover2"
function setCardSize (ctypeCategory) {

if (ctypeCategory == "none" || ctypeCategory == "visa" || 
    ctypeCategory == "mastercard" || ctypeCategory =="mc2" || ctypeCategory == "discover" ||
    ctypeCategory == "nonsecure" ) {  
   dd.elements.card.resizeTo(272,173);    
}

if (ctypeCategory == "visamini" ) {
   dd.elements.card.resizeTo(208,129); 
}

}


function setDefaultSizePosition(ctypeCategory) {




 setCardSize (ctypeCategory);

   
 Card_category_size_selected = ctypeCategory;
 
 // logo area - left square
 dd.elements.area1.moveTo(dd.elements.card.x + 8,dd.elements.card.y + 8);
 // logo area - top square
 // photo area also
 dd.elements.area2.moveTo(dd.elements.card.x + 8,dd.elements.card.y + 8);
 //photo area
 dd.elements.area3.moveTo(dd.elements.card.x + 8,dd.elements.card.y + 8);

 if (ctypeCategory == "none" || ctypeCategory == "visa" || ctypeCategory == "mastercard" ||
     ctypeCategory == "mc2") {

    dd.elements.area1.resizeTo(180,85);
    dd.elements.area2.resizeTo(257,50); 
    dd.elements.area3.resizeTo(175,140);   

    dd.elements.text.moveTo(dd.elements.card.x + 23,dd.elements.card.y + 97); 
    dd.elements.chip.moveTo(dd.elements.card.x + 28,dd.elements.card.y + 52);
    dd.elements.chip_area.moveTo(dd.elements.chip.x - 5 ,dd.elements.chip.y - 5); 
  
  }  
  
  if (ctypeCategory == "discover" ) {
	dd.elements.area1.resizeTo(180,85);
    dd.elements.area2.resizeTo(257,50); 
    dd.elements.area3.resizeTo(175,140);   

    dd.elements.text.moveTo(dd.elements.card.x - 15,dd.elements.card.y - 5); 
    dd.elements.chip.moveTo(dd.elements.card.x + 28,dd.elements.card.y + 52);
    dd.elements.chip_area.moveTo(dd.elements.chip.x - 5 ,dd.elements.chip.y - 5);   
  }
  
  if (ctypeCategory == "visamini" ) {
    dd.elements.area1.resizeTo(136,56);
    dd.elements.area2.resizeTo(194,28); 
    dd.elements.area3.resizeTo(125,90); 
    
    dd.elements.text.moveTo(dd.elements.card.x ,dd.elements.card.y ); 
    dd.elements.ctype.moveTo(dd.elements.card.x ,dd.elements.card.y ); 
  
  }
  
  if (ctypeCategory == "nonsecure"  ) {

    dd.elements.area1.resizeTo(180,85);
    dd.elements.area2.resizeTo(257,85); 
    dd.elements.area3.resizeTo(175,140);   

    dd.elements.text.moveTo(dd.elements.card.x,dd.elements.card.y ); 
  
  }

}


function changeValidArea (ctype) {
  if (ctype == "mc" || ctype == "mc_debit") {  
   dd.elements.area2.resizeTo(257,43); 
   return;
   }
   
  if (ctype == "maestro" || ctype == "newmc") {  
   dd.elements.area2.resizeTo(257,85);
   return;
   }
   
  if (ctype == "mc_high" ) {  
   dd.elements.area2.resizeTo(172,5);
   return;
   }
   
  if (ctype == "mc2"  || ctype == "mc2_chip" ) {  
   dd.elements.area2.resizeTo(172,5);
   return;
   }
 
  if (ctype == "visa") {  
   dd.elements.area2.resizeTo(257,45);
   return;
   }

  if (ctype == "visa_debit") {  
   dd.elements.area2.resizeTo(257,30);
   return;
   }
   
  if (ctype == "visa_electron" ) {  
   dd.elements.area2.resizeTo(257,85);  
   return;
   }
   
  if (ctype == "visa_highmarks") { 
    dd.elements.area2.resizeTo(175,5);
   return;
   }
   
  if (ctype == "newvisa_debit") {     
   dd.elements.area2.resizeTo(257,85); 
   return;
   }
   
  if (ctype == "newvisa") { 
   dd.elements.area2.resizeTo(257,85);
   return;
  }
  
  if (ctype == "visamini") { 
   dd.elements.area2.resizeTo(194,28); 
   return;
  }
  
  if (ctype == "visamini_debit") { 
   dd.elements.area2.resizeTo(194,18); 
   return;
  }
  
  if (ctype == "newvisamini_debit") { 
   dd.elements.area2.resizeTo(194,56); 
   return;
  }
  
  //hack emk
  if (ctype == "newvisamini_debit2") { 
   dd.elements.area2.resizeTo(194,56); 
   return;
  }
  
  if (ctype == "newvisamini") { 
   dd.elements.area2.resizeTo(194,56); 
   return;
  }
  
  if (ctype == "atm") { 
   dd.elements.area2.resizeTo(257,85); 
   return;
  }
  if (ctype == "giftcard") { 
   dd.elements.area2.resizeTo(257,155); 
   return;
  }
}

function notValidSize (obj) {
if  (obj.src ==  dd.elements.photo.src) { 
   if ( (obj.w <= 36 ) || (obj.h <=36) ||
        (obj.w > 175 ) || (obj.h > 140 ) )         
        return true;
   else return false;
   
   }
   
if  (obj.src ==  dd.elements.logo.src) { 
   if ( (obj.w <= 15) || (obj.h <=15) )        
        return true;
   else return false;
   
   }
   
if  (obj.src ==  dd.elements.antenna_movil.src) { 
   if ( (obj.w < 109) || (obj.h < 65) )        
        return true;
   else return false;
   
   }

}

function isMiniCard (ctypeCategory) {

if   ( ctypeCategory == "visamini" ) 
    return true;
    else return false;

}

function ClearingChip (ctypeCategory, Old_category_selected) {

if ( (ctypeCategory == "mc2") || (Old_category_selected == "mc2") )
   return true;
else {
  if (ctypeCategory == "nonsecure" )
       return true;
  if (ctypeCategory == "visamini" )
       return true;
  else return false;
}
}

function ClearingAntenna (ctypeCategory, Old_category_selected) {


  if (ctypeCategory == "mc2"  || ctypeCategory == "visamini")
       return true;
  else return false;


}

// ================================================================================================
// Generic validations
// ================================================================================================


function notWithinBox (obj, child_obj){
if (
     (obj.x > child_obj.x ) ||
     (obj.y > child_obj.y )   ||
     ( (obj.x + obj.w) < (child_obj.x + child_obj.w)) ||
     ( (obj.y + obj.h) < (child_obj.y + child_obj.h))
   )
  return true ;
  else false;
}



function Contains_part_of (boxa, boxb){
if (
       overobj(boxb.x, boxb.y, boxa) ||
       overobj(boxb.x + boxb.w, boxb.y , boxa) ||
       overobj(boxb.x + boxb.w, boxb.y + boxb.h, boxa) ||
       overobj(boxb.x, boxb.y + boxb.h, boxa) 
   )
  return true ;
  else {
  // boxb loop from x,y to x+w, y
  for (i = boxb.x; i <= boxb.x + boxb.w; i++)
   {
   if (overobj (i, boxb.y, boxa) )
      return true;
   }
  
  // boxb loop from x,y to x, y+h
  for (i = boxb.y; i <= boxb.y + boxb.h; i++)
   {
   if (overobj (boxb.x,i, boxa) )
      return true;
   }
  // boxb loop from x, y+h, x+w, y+h
    for (i = boxb.x; i <= boxb.x + boxb.w; i++)
   {
   if (overobj (i, boxb.y + boxb.h , boxa) )
      return true;
   }
  

  // boxb loop from, x+w, y to  x+w, y+h
     for (i = boxb.y; i <= boxb.y + boxb.h; i++)
   {
   if (overobj (boxb.x + boxb.w,i, boxa) )
      return true;
   } 
  
  return false;
  
  } 
}

function Conflict (obj_a, obj_b){

if ( Contains_part_of (obj_a, obj_b) ||
     Contains_part_of (obj_b, obj_a) )     
 
  return true ;
  else false;
}

// ================================================================================================
// Specific Area validations
// ================================================================================================




function IsChip () {
if ((dd.elements.chip.w > 1) || (dd.elements.chip.h > 1))
     return true;
else return false;
}

function ConflictChip ( obj_b){
if ( Conflict (dd.elements.chip_area, obj_b) )  
  return true ;
  else false;
}

function getMaxWithWithinValidArea (obj) {

 if (obj.src ==  dd.elements.logo.src )
   var maxw = dd.elements.area1.x + dd.elements.area1.w -  obj.x - 5 ; 
   
 if ((obj.src ==  dd.elements.photo.src) ||  (obj.src ==  dd.elements.antenna_movil.src ) )
   var maxw = dd.elements.area3.x + dd.elements.area3.w -  obj.x - 5 ; 
 
 
 
 return maxw;
}

function getMaxHeightWithinValidArea (obj) {
if (obj.src ==  dd.elements.logo.src )
 var maxh =  dd.elements.area1.y +dd.elements.area1.h -  obj.y - 5; 
 
 if ((obj.src ==  dd.elements.photo.src ) ||  (obj.src ==  dd.elements.antenna_movil.src ))
 var maxh =  dd.elements.area3.y +dd.elements.area3.h -  obj.y - 5; 
 
 
 return maxh;
}


function defaultPosX (obj) {

  var posx = 0;
  var tt = obj.x - dd.elements.area1.x
  
  // antena
  if (obj.src ==  dd.elements.antenna_movil.src) {
   posx = dd.elements.area1.x;
  }
  
  // photo
  if   (obj.src ==  dd.elements.photo.src ) {
     if ( IsChip() &&  dd.elements.area2.y + obj.h > dd.elements.chip_area.y ){   
         // assuming the default posy = area2.y
         posx = dd.elements.chip_area.x + dd.elements.chip_area.w + 1;
     }
     else {
         posx = dd.elements.area1.x;
     }
}


//logo
if   (obj.src ==  dd.elements.logo.src){

     if (obj.h > dd.elements.area2.h) {
     // it position the element with reference to the right side of area1
     // it is aligned to the right
        posx = dd.elements.area1.x + dd.elements.area1.w - obj.w - 3;
     } else {
     // there is space for the logo to be placed in the most right position of area2
        posx = dd.elements.area2.x + dd.elements.area2.w - obj.w;
     }
    
     if (posx < dd.elements.area1.x)
        posx = dd.elements.area1.x;
      
    //if there is a chip, and the default posx happens to conflicting with the chip
    // then position to the right side of the chip      
    if ( IsChip() &&  
       ( dd.elements.area2.y + obj.h > dd.elements.chip_area.y  ) &&
       ( posx < dd.elements.chip_area.x + dd.elements.chip_area.w ) ){
       // assuming the default posy = area2.y
      posx = dd.elements.chip_area.x + dd.elements.chip_area.w + 1;
    }
   
  }

return posx;

}

function defaultPosY (obj) {

var posy = 0;

//photo and logo and all
posy = dd.elements.area2.y;
 
return posy;
}

function  notWithinValidarea (obj)  {

 setZ_movil_objects();

// photo could be placed on area3
if  ( (obj.src ==  dd.elements.photo.src) &&
     (   ( notWithinBox (dd.elements.area3, obj) &&    notWithinBox (dd.elements.area2, obj) )    ||    
     (IsChip() &&  ConflictChip(obj))       )    
    )
     return true;

// logo could be placed on area1^area2 (member identification area)
if  ( (obj.src ==  dd.elements.logo.src) &&
     (( notWithinBox (dd.elements.area1, obj) &&  notWithinBox (dd.elements.area2, obj) )  ||
    ( IsChip() &&  ConflictChip( obj) ) )    
    )
     return true;
     
// antenna could be placed on area1^area2 (member identification area)
if  ( (obj.src ==  dd.elements.antenna_movil.src) &&
     (( notWithinBox (dd.elements.area1, obj) &&  notWithinBox (dd.elements.area2, obj) )  
//     || ( IsChip() &&  ConflictChip( obj) ) 
     )    
    )
     return true;
   
return false;
}








