/*get the flash player*/
var objFlex;
var objFlexID = "configuratorSwf";
function thisMovie(movieName)
{ 
    if(navigator.appName.indexOf("Microsoft") != -1)
    {
        return window[movieName];
    }
    else
    {
        return document[movieName];
    }
}

// ------- Private vars -------

var jsEditFromCart = false;
function isEditFromCart()
{    
    return jsEditFromCart;
}

var jsReady = false;
function isReady()
{
    return jsReady;
}

$(document).ready(function(){
    jsReady = true;
    
    objFlex = thisMovie(objFlexID);
});  

function setSWFIsReady()
{    
   objFlex.callFlexByJs("this str is by js call. version is 0715.1000");
}  


function validate(p) {
	if (p == "CPU" || p == "FREEGAME") { checknero(); checkcov(); }
	if (p == "RAID" || p == "HDD" || p == "HDD2") checkraid(); 
	if (p == "OS" || p.substr(0, 4) == "SOFT" || p.substr(0, 6) == "MSGAME") checkms();
	if (p == "MOTHERBOARD" || p == "VIDEO" || p == "VIDEO2") checkcf();
	if (p == "MOTHERBOARD" || p == "VIDEO" || p == "VIDEO2" || p == "VIDEO3") checkvideo3();
	if (p == "OS" || p == "TVRC") checktvrc();
// Eric had asked to remove the Windows 7 Upgrade option on 12/30/2009 
//	if (p == "OS" || p == "OS_UPGRADE") checkos7_upgrade();
	if (p == "MONITOR" || p == "MONITOR2" || p == "COUPON_MN") checkcoupon_mn();
	if (p == "OS" || p == "VIDEO2" || p == "VIDEO3") checkvideoSliOS();
	if (p == "CPU" || p == "FREEBIE_CU") checkfreebie_cu();
	
	
    // this just for test.
	//alert(getsel("OS", "OS_PREMIUM","").name);		
	//setsel2("OS", "OS_PREMIUM", "OS32");	
	
	if (document.location.search.indexOf("test=test") == -1) return;

}


function checkvideoSliOS() {
     var ok = false;
    // check OS Selection and Video Card Selection
    parseval(getsel("VIDEO2", "", "VC_NONE")); 
    var vc2 = parseval_o;
    parseval(getsel("VIDEO3", "", "VC_NONE")); 
    var vc3 = parseval_o;
    parseval(getsel("OS","","OS_NONE")); 
    parseval(getsel("OS",parseval_o,"")); 
    
    ok |= (parseval_o.indexOf("OS64") == 0 || parseval_o.indexOf("OS32") == 0);

    if (!ok) {
    //No video 3
      if (vc2 == "FX9800GX21GB" && vc3 == "VC_NONE"){
	     displayalert("3 way SLI mode must use Window Vista Operating System"); setsel("VIDEO2", "VC_NONE");
      }
      else if (vc2 != "VC_NONE" && vc3 != "VC_NONE") {
	     displayalert("3 way SLI mode must use Window Vista Operating System"); setsel("VIDEO3", "VC_NONE");
      }
    }
}

function checknero() {
	parseval(getsel("CPU", "", "")); if (parseval_o.indexOf("_X2") == -1 && parseval_o.indexOf("_FX57") == -1 && parseval_o.indexOf("_FX60") == -1) {
		var ol = getselarr("FREEGAME"); for (var i = 0; i < ol.length; i++) { 
			parseval(ol[i]); if (parseval_o == "HL2_3") {
				displayalert("Nero 7 Ultra Edition is free only with a purchase of any AMD Athlon 64 X2 based PC."); 
				setUnCheck("FREEGAME", ol[i].id);	
			}	
		}
	}
}

function checkcov() {
	parseval(getsel("CPU", "", "")); if (parseval_o.indexOf("_920") == -1 && parseval_o.indexOf("_930") == -1 && parseval_o.indexOf("_940") == -1 && 
																				parseval_o.indexOf("_950") == -1 && parseval_o.indexOf("_955") == -1) {
		var ol = getselarr("FREEGAME"); for (var i = 0; i < ol.length; i++) { 
			parseval(ol[i]); if (parseval_o == "HL2_4") {
				displayalert("City of Villains is free only with a purchase of any Intel Pentium D Dual-Core processor."); 
				setUnCheck("FREEGAME", ol[i].id);
			}	
		}
	}
}

function checkraid() {
	parseval(getsel("RAID", "", "RAID_NONE")); if (parseval_o != "RAID_NONE") {
		parseval(getsel("HDD", "", "")); var hdd1 = parseval_o; parseval(getsel("HDD2", "", hdd1)); var hdd2 = parseval_o;
		if (hdd1 != hdd2) {
			displayalert("You must have 2 identical Serial ATA hard drives to have RAID function."); setsel("RAID", "RAID_NONE");
		}
	}
}

function check939() {
	parseval(getsel("CPU", "", "")); var cpu = parseval_o; parseval(getsel("MOTHERBOARD", "", "")); var mb = parseval_o;
	if ((cpu.substr(0, 2) == "A9" && mb.substr(0, 2) != "A9") || (cpu.substr(0, 2) != "A9" && mb.substr(0, 2) == "A9")) {
		displayalert("939-pin processors can only be used with 939-pin socket motherboards.");
	}
}

function checkquadcore() {
	parseval(getsel("CPU", "", "")); var cpu = parseval_o; parseval(getsel("MOTHERBOARD", "", "")); var mb = parseval_o;
	if (cpu.indexOf("_QX9650") == -1 && cpu.indexOf("_Q") > -1 && mb.indexOf("_Q") == -1) {
		displayalert("You must select a Quad-Core supporting motherboard for the CPU you choose.");
	}
}

function checkqx9650() {
	parseval(getsel("CPU", "", "")); var cpu = parseval_o; parseval(getsel("MOTHERBOARD", "", "")); var mb = parseval_o;
	if (cpu.indexOf("_QX9650") > -1 && mb.indexOf("_QX9650") == -1 && mb.indexOf("IMB_ASUS") == -1) {
		displayalert("You must select a QX9650 supporting motherboard for the CPU you choose.");
	}
}

function checkms_(p) {
	var ol = getselarr(p); for (var i = 0; i < ol.length; i++) {
		parseval(ol[i]); if (parseval_o.substr(0, 5) == "SW_MS" || parseval_o.substr(0, 7) == "GAME_MS") {
			displayalert("Purchase of " + parseval_n + " requires a purchase of any Microsoft Windows Operating System."); 
			setUnCheck(p, ol[i].id);		
		}
	}
}

function checkms() {
	parseval(getsel("OS", "", "OS_NONE")); if (parseval_o == "OS_NONE") {
		checkms_("SOFT"); checkms_("MSGAME");
	}
}

function checkcf() {
	parseval(getsel("VIDEO2", "", "VC_NONE")); var vc2 = parseval_o; 
	if (vc2 == "RX3450" || vc2 == "RX3650" || vc2=="RX3850256" || vc2=="RX3850512" || vc2 == "RX38501GB" || vc2=="RX3870" || vc2=="RX3870X2" ||
	    vc2=="RX4670512" || vc2=="RX4850" ||vc2=="RX4870512" || vc2=="RX4870X2") { 				
		parseval(getsel("MOTHERBOARD", "", "")); 
		if (parseval_o.indexOf("_CF") == -1) {
			displayalert("You must use a CrossFire supporting motherboard to have CrossFire videocards.\n" +
						"Please select the correct motherboard first and then reselect the second video card"); setsel("VIDEO2", "VC_NONE");
			return;
		}
		parseval(getsel("VIDEO", "", "VC_NONE")); var vc1 = parseval_o;
		if (
				(vc2 == "RX3450" && vc1 != "RX3450") ||
				(vc2 == "RX3650" && vc1 != "RX3650") || 
				(vc2 == "RX3850256" && vc1 != "RX3850256") || 
				(vc2 == "RX3850512" && vc1 != "RX3850512") || 
				(vc2 == "RX38501GB" && vc1 != "RX38501GB") || 
				(vc2 == "RX3870" && vc1 != "RX3870") || 
				(vc2 == "RX3870X2" && vc1 != "RX3870X2") || 
				(vc2 == "RX4670512" && vc1 != "RX4670512") || 
				(vc2 == "RX4850" && vc1 != "RX4850") || 
				(vc2 == "RX4870512" && vc1 != "RX4870512") ||
				(vc2 == "RX4870X2" && vc1 != "RX4870X2") ) {

			displayalert("The first video card is not compatible with " + getname("VIDEO2", vc2) + "\n" +
						"Please select the correct video card first and then reselect the second video card"); setsel("VIDEO2", "VC_NONE");
		}
	}
}

/* NOT USED */
function checkcfAttr() {
  
	parseval(getsel("VIDEO2", "", "VC_NONE")); var vc2 = parseval_o; 
	if ( vc2 == "RX3450" || vc2 == "RX3650" || vc2 == "RX3870_X2" ||
	     vc2 == "RX4670512" || vc2=="RX4850" || vc2=="RX4870512" || vc2=="RX4870X2" ||
	     vc2 == "RX4350512" || vc2=="RX4550512" || vc2 == "RX4650512" || vc2=="RX4670512" || vc2 == "RX4830512" || vc2 == "RX48501GB" ) { 				
		parseval(getsel("MOTHERBOARD", "", "")); 
		if (parseval_o.indexOf("_CF") == -1) {
			displayalert("You must use a CrossFire supporting motherboard to have CrossFire videocards.\n" +
						"Please select the correct motherboard first and then reselect the second video card"); setsel("VIDEO2", "VC_NONE");
			return;
		}
		parseval(getsel("VIDEO", "", "VC_NONE")); var vc1 = parseval_o;
		if ( 
				(vc2 == "RX3450" && vc1 != "RX3450") ||
				(vc2 == "RX3650" && vc1 != "RX3650") ||
				(vc2 == "RX3870_X2" && vc1 != "RX3870_X2") ||
				(vc2 == "RX4670512" && vc1 != "RX4670512") ||
				(vc2 == "RX4830512" && vc1 != "RX4830512") ||
				(vc2 == "RX4850" && vc1 != "RX4850") ||
				(vc2 == "RX48501GB" && vc1 != "RX48501GB") ||
				(vc2 == "RX4870512" && vc1 != "RX4870512") ||
				(vc2 == "RX4870X2" && vc1 != "RX4870X2") ||
				(vc2 == "RX4350512" && vc1 != "RX4350512") ||
				(vc2 == "RX4550512" && vc1 != "RX4550512") ||
				(vc2 == "RX4650512" && vc1 != "RX4650512") ||
				(vc2 == "RX4670512" && vc1 != "RX4670512") ||
				(vc2 == "RX4830512" && vc1 != "RX4830512") ||
				(vc2 == "RX48501GB" && vc1 != "RX48501GB") 				
				) {                              
			displayalert("The first video card is not compatible with " + getname("VIDEO2", vc2) + "\n" +
						"Please select the correct video card first and then reselect the second video card."); setsel("VIDEO2", "VC_NONE");
		}
		
		// else check both attributes
		else {
         //check attributes
         parseval(getsel("VIDEO", vc1, "")); var ok1 = parseval_o; 
         parseval(getsel("VIDEO2", vc2, "")); var ok2 = parseval_o; 

         if ( (vc1 == "RX3450" && vc2 == "RX3450") ||
	      (vc1 == "RX3650" && vc2 == "RX3650") || 
	      (vc1 == "RX3870_X2" && vc2 == "RX3870_X2")) {
              if ( (ok1 == "MAJOR" && ok2 != "MAJOR") ||
	           (ok1 == "PowerColor" && ok2 != "PowerColor") ||
              	   (ok1 == "Sapphire" && ok2 != "Sapphire") ) { 
			displayalert("The selections of the second video card you selected is not compatible with " + getname("VIDEO2", vc2) + "\n" +
			      "Please reselect the second video card.");  
	        setsel2("VIDEO2", vc2, ok1);
	        setsel("VIDEO2", "VC_NONE");
				return; 			
	      }              
         }


	}
   }
}

function checkvideo3() {
	parseval(getsel("VIDEO3", "", "VC_NONE")); var vc3 = parseval_o; if (vc3 != "VC_NONE") {
		parseval(getsel("MOTHERBOARD", "", "")); if (parseval_o.indexOf("_3WAY") == -1) { 
			displayalert("Your selection of motherboard does not support three video cards."); setsel("VIDEO3", "VC_NONE"); return;
		}
		parseval(getsel("VIDEO", "", "VC_NONE")); var vc1 = parseval_o;
		parseval(getsel("VIDEO2", "", "VC_NONE")); var vc2 = parseval_o;
		if (vc1 != vc3 && vc2 != vc3) {
			displayalert("You must select three identical video cards for 3-way SLI."); setsel("VIDEO3", "VC_NONE");
		}
	}
}

function checktvrc() {
	parseval(getsel("TVRC", "", "TVRC_NONE")); if (parseval_o != "TVRC_NONE") {
		parseval(getsel("OS", "", "OS_NONE")); if (parseval_o.substr(0, 6) != "OS_MCE" && parseval_o.substr(0, 10) != "OS_PREMIUM" && parseval_o.substr(0, 11) != "OS_ULTIMATE" && parseval_o.substr(0, 13) != "WIN7_ULTIMATE" && parseval_o.substr(0, 8) != "WIN7_PRO" && parseval_o.substr(0, 12) != "WIN7_PREMIUM") { 
			displayalert("Your selection of Operating System is not eligible for purchasing any Media Center item."); setsel("TVRC", "TVRC_NONE");
		}
	}
}

function checkcoupon_mn() {
	var ol = getselarr("COUPON_MN"); for (var i = 0; i < ol.length; i++) { 
		parseval(ol[i]); if (parseval_o == "COUPON05") {
			var mn1ok = false;
			parseval(getsel("MONITOR", "", "MONITOR_NONE"));
			if (parseval_o == "LCD075" || parseval_o == "LCD085")
				mn1ok = true;
			var mn2ok = false;
			parseval(getsel("MONITOR2", "", "MONITOR_NONE"));
			if (parseval_o == "LCD075" || parseval_o == "LCD085")
				mn2ok = true;
			if (!mn1ok && !mn2ok) {
				displayalert("MIR coupon is only available on systems configured with ViewSonic VA1912WB or VX2025WM."); 
				setUnCheck("COUPON_MN", ol[i].id);
			} else if (mn1ok && mn2ok) {
				displayalert("Please note that only 1 MIR coupon will be sent out per customer."); 
			}
		}
	}
}

function checkfreebie_cu() {
	var ol = getselarr("FREEBIE_CU"); for (var i = 0; i < ol.length; i++) { 
		parseval(ol[i]); if (parseval_o == "FREEAOE3" || parseval_o == "FREEROL") {
			var n = parseval_n;
			parseval(getsel("CPU", "", "CPU_NONE")); if (parseval_o.indexOf("_ZM") == -1 && parseval_o.indexOf("_X4") == -1 && parseval_o.indexOf("_X2") == -1 && parseval_o.indexOf("_FX") == -1 && parseval_o.indexOf("_QFX") == -1 && parseval_o.indexOf("_MT") == -1 && parseval_o.indexOf("_ML") == -1 && parseval_o.indexOf("_TL") == -1) {
				displayalert(n + " is only available on systems configured with X4, X2, FX, or Turion CPU."); 
				setUnCheck("FREEBIE_CU", ol[i].id);
			}
		}
	} 
}

function checkos7_upgrade () {
       parseval(getsel("OS","","OS_NONE")); var osid = parseval_o;

       parseval(getsel("OS",parseval_o,"")); var ok = parseval_o; 
       
       parseval(getsel("OS_UPGRADE","","OS7_NONE")); var upgradeid = parseval_o;  

       parseval(getsel("OS_UPGRADE",parseval_o,"")); var upgradeopt = parseval_o;

	 if ( upgradeid != "OS7_NONE" ) {	       
       if ( ( osid == "WIN7_PREMIUM" && upgradeid != "OS7_NONE" ) || ( osid == "WIN7_PRO" && upgradeid != "OS7_NONE" ) || ( osid == "WIN7_ULTIMATE" && upgradeid != "OS7_NONE" ) || ( osid == "OS_PREMIUM" && upgradeid != "OS7_PREMIUM" ) || (osid == "OS_BUZ" && upgradeid != "OS7_PRO" ) || ( osid == "OS_ULTIMATE" && upgradeid != "OS7_ULTIMATE" ) || ( osid == "OS_NONE" && upgradeid != "OS7_NONE" ) || ( osid == "OS_XPPROSP3" && upgradeid != "OS7_NONE" ) || ( osid == "OS_BASIC" && upgradeid != "OS7_NONE" ) || ( osid == "OS_XPHOMESP3" && upgradeid != "OS7_NONE" ) ) {
          displayalert( " * Vista Home Premium can only upgrade to Windows 7 Home Premium " + "\n" + " * Vista Business can only upgrade to Windows 7 Professional " + "\n" + " * Vista Ultimate can only upgrade to Windows 7 Ultimate " );  
          setsel("OS_UPGRADE", "OS7_NONE");
       } 
       else if ( ( osid == "OS_PREMIUM" && upgradeid == "OS7_PREMIUM" ) || ( osid == "OS_BUZ" && upgradeid == "OS7_PRO" ) || ( osid == "OS_ULTIMATE" && upgradeid == "OS7_ULTIMATE" ) ) 
       {
          //check OS bit
          if ( upgradeopt != ok ) 
          {
            displayalert( "* Vista 32-bit OS can only upgrade to Windows 7 32-bit OS" + "\n" + "* Vista 64-bit OS can only upgrade to Windows 7 64-bit OS" ); 
      			setsel2("OS_UPGRADE", upgradeid, ok);
            setsel("OS_UPGRADE", "OS7_NONE");          
          }
          
          else
          {
            //alert("ok");
          }
          return;
       }
    }
}

function checkos7_preinstall () {
       parseval(getsel("WIN7_PREINSTALL","","WIN7_NONE")); var osid = parseval_o;
       
       parseval(getsel("OS_UPGRADE","","OS7_NONE")); var upgradeid = parseval_o;  

//alert(upgradeid);
//alert(osid);

	if ( upgradeid == "OS7_NONE" && ( osid == "WIN7_YES" || osid == "WIN7_NO" ) ) {	       
          alert( " Windows 7 Upgrade Option Service is only available to those who choose Windows 7 Upgrade coupon. " );  
          setsel("WIN7_PREINSTALL", "WIN7_NONE");
  }
}



/*  flex   */

var parseval_p, parseval_o, parseval_n;
function parseval(obj) {
	parseval_p = 0; parseval_o = ""; parseval_n = "";

    parseval_o = obj.id;
    parseval_n = obj.name;

}

function getsel(p, o, def) {  
    var sJSON = objFlex.getsel(p, o, def);  
   
    var objArray = eval("("+sJSON+")") ; 
   
    return objArray[0];
}

function getselarr(p)
{
    var sJSON = objFlex.getsel(p);  
   
    var objArray = eval("("+sJSON+")") ; 
    
    return objArray;  
}

function displayalert(s)
{
    objFlex.displayalert(s);  
}

function setUnCheck(sectionID, partID)
{
    objFlex.setUnCheck(sectionID, partID);  
}

function setsel(sectionID, partID)
{
    objFlex.setsel(sectionID, partID);  
}

function setsel2(sectionID, partID, attrID)
{
    objFlex.setsel2(sectionID, partID, attrID);  
}


function getname(sectionID, partID) 
{   
    return objFlex.getname(sectionID, partID);  
}


function edit(p, o, a) {
	objFlex.edit(p, o, a);
}

