function pop_upwindow(url)
{
	var newwindow;
	newwindow=window.open(url,'Sale_Cards','height=350,width=550');
	if (window.focus) {newwindow.focus()}
}
function pop_upwindow(url)
{
	var newwindow;
	newwindow=window.open(url,'Sale_Cards','height=350,width=550');
	if (window.focus) {newwindow.focus()}
}
function submitenter(myfield,e){
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return true;

	if (keycode == 13)  {
		myfield.form.onsubmit();
 		return false;
 	}else{
		return true;
	}
}

function check()
{
	alert ("CHECKING");
}

hiddenSelects = new Array ();

function startDeckBuilder(act,game,deckid){
	var w, h , l , r ;
	var url = baseHref + 'deckbuilder/inaction/'+act+'/deckid/' + deckid + '/game/' + game ;
	w = 730;
	h = 470;
	l = (screen.width - w) / 2;
	t = (screen.height - h) / 2;
	deckBuilder=window.open (url ,'deckBuilder' ,'width='+w+',height='+h+',location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no,top='+t+',left='+l);
	if(!deckBuilder){
		gAlert('Deck window could not be opened.<br>Please disable any popup blocker you migh have installed and try again.');
	}else{
		deckBuilder.focus();
	}
}

// preload images
function preloadImages(imgArr){
	if (document.images) {
		var preloaded = new Array ();
		for (var i=0; i<imgArr.length;i++) {
			preloaded[i] = new Image () ;
			preloaded[i].src  = imgArr[i];
		}
	}
}



// begin menus
function initGMenus(){
	// paint menus off the screen , hide and position them
	for (var i = 0 ; i < GMenus.length ; i++) {
		var mid = document.getElementById ( 'gmenu_' +  GMenus[i] ) ;
		var button = document.getElementById ( 'button_' +  GMenus[i] ) ;
		mid.style.visibility = 'hidden' ; 
		//left
		mid.style.left = '0px' ;
		var offset = 0 ;
		if (gmenu_offsets[GMenus[i]]>0){
			offset = gmenu_offsets[GMenus[i]]
		}
		mid.style.left = (findPosX(button) -findPosX(mid) -offset ) + 'px'  ; 
		//top
		mid.style.top = (findPosY(button) + findHeight(button)) + 'px'  ; 
	} 
	gMenusInit = true ;
	window.document.onclick = destroyGMenu ;
}

function showGMenu(section) {
	if (!gMenusInit ) return false ;
	// destroy this menu 
	destroyGMenu(section) ;
	def_zIndex += 1 ;
	var mid = document.getElementById ('gmenu_' + section ) ;
	mid.style.visibility = 'visible' ;				
	mid.style.zIndex = def_zIndex
	// set image
	var button = document.getElementById ( 'button_' +  section ) ;
	button.className = button.className + '_hover'  ;	
	hiddenSelects = document.body.getElementsByTagName("select");
	if (document.all) {
		for (var i = 0 ; i < hiddenSelects.length ; i ++ ) {
			hiddenSelects[i].style.visibility='hidden' ;
		}
	}
}

function destroyGMenu() {
	if (!gMenusInit ) return false ;
	clearTimeout(menu_time)
	for (var i = 0 ; i < GMenus.length ; i++) {
		var mid = document.getElementById ('gmenu_' + GMenus[i]) ;
		mid.style.visibility = 'hidden' ;				
		var button = document.getElementById ( 'button_' +  GMenus[i] ) ;
		if (button.className.indexOf('_hover')) {
			 button.className = button.className.replace ('_hover' ,'') ;	
		}
	}
	if (document.all) {
		for (var i = 0 ; i < hiddenSelects.length ; i ++ ) {
			hiddenSelects[i].style.visibility='visible' ;
		}
	}
}

function menuExit (){
	menu_time = setTimeout ("destroyGMenu()" , def_menuTime  ) ;
}
//end menus




function findHeight(obj){
	var divHeight = 0;
	if(obj.offsetHeight) {
		divHeight = obj.offsetHeight;
	}else{
		divHeight = document.defaultView.getComputedStyle(obj, "").getPropertyValue("height");
	}
	return divHeight ;
}

function findWidth(obj){
	var divWidth = 0;
	if(obj.offsetWidth) {
		divWidth = obj.offsetWidth;
	}else{
		divWidth = document.defaultView.getComputedStyle(obj, "").getPropertyValue("width");
	}
	return divWidth ;
}
function showOptions()
{
	gAlert("For Changing Mode -- Either clear the cart OR Complete the checkout process");
	return false;
}
function findPosX(obj){
	var curleft = 0;
	if (obj.offsetParent){
		while (obj.offsetParent){
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}else if (obj.x){
		curleft += obj.x;
	}
	return curleft;
}

function findPosY(obj){
	var curtop = 0;
	if (obj.offsetParent){
		while (obj.offsetParent){
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}else if (obj.y){
		curtop += obj.y;
	}
	return curtop;
}


function gAlert(msg){
	// paint shadow
	var y_offset , page_height;
	if (self.innerHeight) {
		page_height = self.innerHeight
		y_offset = self.pageYOffset;
	}else if (document.documentElement && document.documentElement.clientHeight){
		y_offset = document.documentElement.scrollTop;
		page_height = document.documentElement.clientHeight ;
	}else if (document.body){
		y_offset = document.body.scrollTop ;
		page_height = document.body.clientHeight ;
	}
	var undercover  = document.getElementById("undercover") ;
 	undercover.style.left = '-' +  ((document.body.clientWidth - 758 )/2 ) + 'px' ;
	undercover.style.height = ( page_height  + y_offset ) + 'px';
	undercover.style.width = document.body.scrollWidth +  'px';
	undercover.style.display='block';
	// move box
	var inside = document.getElementById("inside") ;
	inside.innerHTML = msg ;
	var agent = document.getElementById("agent") ; 
	agent.style.top = (y_offset + 200 ) + 'px';
	agent.style.display = 'block';
	
	hiddenSelects = document.body.getElementsByTagName("select");
	if (document.all) {
		for (var i = 0 ; i < hiddenSelects.length ; i ++ ) {
			hiddenSelects[i].style.visibility='hidden' ;
		}
	}
}
	

	
function gAllertCancel() {
	var undercover  = document.getElementById("undercover") ;
	undercover.style.display='none';
	var inside = document.getElementById("inside") ;
	inside.innerHTML = '' ;
	var agent = document.getElementById("agent") ; 
	agent.style.display = 'none';
	var aSelects = document.body.getElementsByTagName("select");
	if (document.all) {
		for (var i = 0 ; i < hiddenSelects.length ; i ++ ) {
			hiddenSelects[i].style.visibility='visible' ;
		}
	}
}


function showTerms(){
	var terms = window.open (baseHref + 'terms.php' , 'terms' , 'width=500,height=400,scrollbars=1,status=1,resizable=0') ;
	terms.focus();
}

function startHtmlArea(ed_type){
	if (!editorEnabled) return false ;
	switch (ed_type){
		case "forum_editor":
		var config = new HTMLArea.Config();
			config.registerButton("my-emoticons", "Emoticons", "images/icons/big_smile.gif", false, HAclickHandler);
			config.registerButton("my-quote", "Quote", "http://image.com.com/gamespot/shared/forum/wysiwyg/ed_emoticons.gif", false, HAclickHandler);
			config.width = '500px';
			config.height = '200px';
			config.toolbar = [
			[
				'bold', 'italic', 'underline',
				'space' ,'space', 'fontsize', 'space','space',
				 'forecolor',
				 'space','separator', 'space',
				'copy' ,'cut' , 'paste',
				 'space','separator', 'space',
				 'createlink' ,
				 'space','separator', 'space',
				 'my-emoticons'
				
			]
			];
			break;
	}
	HTMLArea.replace(ed_type, config);
}


function HAclickHandler(editor, buttonId) {
	switch (buttonId) {
		case "my-emoticons":
			editor._popupDialog("emoticons.html", function(sIconURL) {
				if (sIconURL && sIconURL != "") { // selection not canceled
					aEmoNames = ('big_smile,smile,sad,redface,surprised,shocked,confused,cool,lol,mad,razz,cry,evil,twisted,rolleyes,wink,wink,exclaim,question,idea,arrow,indifferent').split(",");
					aEmoSymbols = (':D,:),:(,:oops:,:o,:shock:,:?,8),:lol:,:x,:P,:cry:,:evil:,:twisted:,:roll:,:wink:,;),:!:,:question:,:idea:,:arrow:,:|').split(",");
					for (i = 0; i < aEmoNames.length; i++){
						if(sIconURL.indexOf("/" + aEmoNames[i] + ".gif") != -1){
							editor.insertHTML(aEmoSymbols[i]);
							break;
						}
					}
				}
			});	
		  break;
	}
}


function floatPopup (pic , content , target ){
	if (!gMenusInit ) return false ;

	// destroy this menu 
	destroyGMenu() ;
	def_zIndex += 1 ;
	var mid = document.getElementById ('gmenu_cardpopup' ) ;
	mid.style.display = 'block';
	// get position of target
	mid.style.left = '158px'  ; 
	//top
	mid.style.top = (findPosY(target)+ 20 )+ 'px'  ; 
//	mid.innerHTML = URLDecode(content) ;
	document.getElementById('cardpopup_pic').src= pic  ;
	var c_parts = content.split ('||||' ) ;
	for (var i  = 0; i < c_parts.length ; i++) {
		var c_cont = c_parts[i].split('||') ;
		document.getElementById('cardpopup_' + c_cont[0]).innerHTML = URLDecode(c_cont[1]) ;
	}
	var cur_height = findHeight(document.getElementById('cardpopup_frame'))  ;
	
	mid.style.visibility = 'visible' ;				
	mid.style.zIndex = def_zIndex ;
//	if ( cur_height <= 110 ){
		document.getElementById('cardpopup_frame').style.height = '110px';
//	}else{
//		document.getElementById('cardpopup_frame').style.height = 'auto';
//	}
	
}
	


function URLDecode(encoded ){
   // Replace + with ' '
   // Replace %xx with equivalent character
   // Put [ERROR] in output if %xx is invalid.
   var HEXCHARS = "0123456789ABCDEFabcdef"; 
   var plaintext = "";
   var i = 0;
   while (i < encoded.length) {
       var ch = encoded.charAt(i);
	   if (ch == "+") {
	       plaintext += " ";
		   i++;
	   } else if (ch == "%") {
			if (i < (encoded.length-2) 
					&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
					&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			} 
		} else {
		   plaintext += ch;
		   i++;
		}
	} // while
   return plaintext;
}



function scrollLink (url , offset ) {
	if (document.documentElement && document.documentElement.scrollTop)
		theTop = document.documentElement.scrollTop;
	else if (document.body)
		theTop = document.body.scrollTop	
	window.location = url + '&scrollTop=' + theTop ;
}


buyoptsTime = 0
function showBuyOptions(obj , anc , optnum , url ){

	if (!optnum || optnum == 0 ) {
		gAlert ('Item not in stock');
		return false ;
	}

	// random string
	var rand = new Date();
	url = baseHref  + url + '&r=' + rand.getTime () ;
	
	if (optnum  == 1 ) {
		scrollLink(url)
		return false ;
	}	

	clearTimeout (buyoptsTime) ;
	var def = document.getElementById ('price_table_def') ;
	if (!def ) return false ;
	var buy_str = '';
	for (var i = 1 ; i  <= optnum  ; i ++ ) { 
		buy_str += '<a href="#" class="buydrop_link" onclick="scrollLink(\''+url+'&quan='+i+'\');return false">BUY&nbsp;' + i + '</a>' ;
	}
	def.innerHTML = buy_str;
	def.style.position = 'absolute'; 
	def.style.top = (findPosY (obj) + 12 )+ 'px' ;
	def.style.left = findPosX (obj) - +  ((document.body.clientWidth - 758 )/2 +3 ) +   'px' ;
	def.style.visibility='visible' ;
	def.style.display='block' ;
	buyoptsTime = setTimeout ("destroyBuyOptions()" , 2000  ) ;
}


/*****New function added for the sale options to be shown in the dropdown****************/


buyoptsTime = 0
function showSaleOptions(obj , anc , optnum , url ){

	/*if (!optnum || optnum == 0 ) {
		gAlert ('Item not in stock');
		return false ;
	}*/

	if (!optnum || optnum == 0 ) {
		optnum=4;
	}

	// random string
	var rand = new Date();
	url = baseHref  + url + '&r=' + rand.getTime () ;
	
	if (optnum  == 1 ) {
		scrollLink(url)
		return false ;
	}	

	clearTimeout (buyoptsTime) ;
	var def = document.getElementById ('price_table_def') ;
	if (!def ) return false ;
	var buy_str = '';
	for (var i = 1 ; i  <= optnum  ; i ++ ) { 
		buy_str += '<a href="#" class="buydrop_link" onclick="scrollLink(\''+url+'&quan='+i+'\');return false">SALE&nbsp;' + i + '</a>' ;
	}
	def.innerHTML = buy_str;
	def.style.position = 'absolute'; 
	def.style.top = (findPosY (obj) + 12 )+ 'px' ;
	def.style.left = findPosX (obj) - +  ((document.body.clientWidth - 758 )/2 +3 ) +   'px' ;
	def.style.visibility='visible' ;
	def.style.display='block' ;
	buyoptsTime = setTimeout ("destroyBuyOptions()" , 2000  ) ;
}
/****************************************************************************************/
function destroyBuyOptions(){
	document.getElementById ('price_table_def').style.display='none' ; 
	clearTimeout (buyoptsTime) ;
}

function showHideBlock (block){
	var obj = document.getElementById (block) ;
	if(obj)obj.style.display = (obj.style.display == 'none' ) ? 'block' :  'none' ;
}
function testForm (ref,plain){
	var allforms = new Array () ;
	allforms['chshform'] = new Array (
		'email' , new Array ( 'is_email(value)' , '<b>Valid Email Address</b> is required' ) ,  
		'ship_first_name' , new Array ( 'trim(value).length > 0' , '<b>First Name</b> cannot be empty' ) ,  
		'ship_last_name' , new Array ( 'trim(value).length > 0' , '<b>Last Name</b> is missing' ) ,
		'ship_address1' , new Array ( 'trim(value).length > 0' , '<b>Shipping Address</b> is required' )  ,
		'ship_pobox' , new Array ('value.options[0].selected == false ' , 'Plese specify if this order is being shipped to <b>PO. BOX</b>' ) ,
		'ship_country' , new Array ('value.options[0].selected == false ' , 'Plese specify <b>Country</b>' ) ,
		'ship_province' , new Array (' ( f.ship_province.type==\'text\' && trim(value).length > 0  ) || ( f.ship_province.type.indexOf(\'select\') > -1 && value.options[0].selected == false )' , 'Plese specify <b>State or Province</b>' ) ,
		'ship_city' , new Array ( 'trim(value).length > 0' , '<b>City Name</b> is required' ) ,
		'ship_zip' , new Array ( 'trim(value).length > 0' , '<b>ZIP or Postal Code</b> is required' ) , 
		'ship_phone' , new Array ( 'trim(value).length > 7' , '<b>Phone Number</b> is required' ) ,
		'terms' , new Array ('value.checked == true ' , 'You must indicate that you agree to the Terms and Conditions' )
	);
	allforms['ch_cc'] = new Array (
		'pay_method' , new Array ( 'trim(value).length > 0' , '<b>Pay Method</b> is not selected' ) ,  
		'buyer_first_name' , new Array ( 'trim(value).length > 0' , '<b>First Name</b> cannot be empty' ) ,  
		'buyer_last_name' , new Array ( 'trim(value).length > 0' , '<b>Last Name</b> is missing' ) ,
		'buyer_address1' , new Array ( 'trim(value).length > 0' , '<b>Address</b> is required' )  ,
		'buyer_country' , new Array ('value.options[0].selected == false ' , 'Plese specify <b>Country</b>' ) ,
		'buyer_province' , new Array (' ( f.buyer_province.type==\'text\' && trim(value).length > 0  ) || ( f.buyer_province.type.indexOf(\'select\') > -1 && value.options[0].selected == false )' , 'Plese specify <b>State or Province</b>' ) ,
		'buyer_city' , new Array ( 'trim(value).length > 0' , '<b>City Name</b> is required' ) ,
		'buyer_zip' , new Array ( 'trim(value).length > 0' , '<b>ZIP or Postal Code</b> is required' ) , 
		'buyer_cctype' , new Array ( 'value.options[0].selected == false ' , 'Plese select <b>Credit Card Type</b>' ) ,
		'buyer_ccnumber' , new Array ( 'trim(value).length > 0' , '<b>Credit Card Number</b> is required' ) , 
		//'buyer_cvmvalue' , new Array ( 'trim(value).length > 0' , '<b>Credit Card Code</b> is required' ) ,
		'buyer_ccmonth' , new Array ('value.options[0].selected == false ' , '<b>Expiry Month</b> is not specified' ) ,
		'buyer_ccyear' , new Array ('value.options[0].selected == false ' , '<b>Expiry Year</b> is not specified' )
	);
	allforms['chform'] = new Array (
		'pay_method' , new Array ( 'trim(value).length > 0' , '<b>Pay Method</b> is not selected' ) ,  
		'ship_method' , new Array ( 'radiosAreChecked(f.ship_method) == true' , 'Please selelect <b>Shipping Option</b>' ) 
	);
	allforms['qsearch'] = new Array (
		'game' , new Array ( 'value.options[0].selected == false' , '<b>Please select game first</b>' ) ,  
		'search' , new Array ( 'trim(value).length > 2' , '<b>Please enter search word(s)</b>' )   
       );
	allforms['qsearch_in'] = new Array (
		'game' , new Array ( 'trim(value).length > 0' , '<b>Please select game first</b>' ) ,  
		'search' , new Array ( 'trim(value).length > 2' , '<b>Please enter search word(s)</b>' )   
       );
	 
	allforms['db_start'] = new Array (
		'game' , new Array ( 'value.options[0].selected == false' , 'Please select game first' )  
       );
	
	allforms['passrform'] = new Array (
		'email' , new Array ( 'is_email(value)' , '<b>Please enter valid email address</b>' )   
	);        
        
        var f = document[ref] ;
	var cond , valname;
	for (var i = 0 ; i < allforms[ref].length ; i += 2 ) {
		valname =  (!f[allforms[ref][i]].type || f[allforms[ref][i]].type.indexOf('select') > -1 || f[allforms[ref][i]].type.indexOf('checkbox') > -1) ? '' :'.value'  ;
		cond = allforms[ref][i+1][0].replace (/value/g , "f." + allforms[ref][i] + valname);
		//alert(allforms[ref][i])
		//alert (cond)
		//alert (f[allforms[ref][i]].type)
		if (!eval (cond)){
			if (!plain){
				gAlert (allforms[ref][i+1][1]);
			}else{
				alert (allforms[ref][i+1][1]);
			}
			return false ;
		}
	}
	return true ;
}
function radiosAreChecked(ref , min ){
	var found = 0 ;
	if (!min) min = 0 ;
	if (!ref.length) ref = new Array (ref);
	for (var i =0 ; i < ref.length  ; i++) {
		if (ref[i].checked == true) {
			found ++ ;
			if (found >= min) {
				return true ;
			}
		} 
	} 	
	return false ;
}

function trim (str){
	return str.replace(/^\s*|\s*$/g,"") ;
}

function is_email(str) {
	var str = trim (str) ;
	if (str.indexOf(" ") != -1 || str.indexOf("@") == -1 || str.indexOf("@") == 0 ||  str.indexOf("@") == (str.length-1))
		return false;
	var arrayString = str.split("@");
	if (arrayString[1].indexOf(".") == -1 || arrayString[1].indexOf(".") == 0 || arrayString[1].charAt(arrayString[1].length-1) == "." )
		return false;
	return true;
}






function copyFields (formRef, fieldsArr) {
	var f = document.getElementById(formRef) ;
	for (var i = 0 ; i < fieldsArr.length ; i+=2 ) {
		var ftype = f[fieldsArr[i]].type ;
		
		switch (ftype) {
			case "text":
			case "hidden":
				f[fieldsArr[i+1]].value = f[fieldsArr[i]].value
				break;
			case "select-one":
			case "select-multi":
				for (var j = 0 ; j < f[fieldsArr[i]].length ; j ++){
					if (f[fieldsArr[i]][j].selected == true){
						f[fieldsArr[i+1]][j].selected = true ;
					}
				}
				
				break;
		}
	}
}


function showHideBlock (block, elem , swaptext1 , swaptext2){
	var obj = document.getElementById (block) ;
	if(obj)obj.style.display = (obj.style.display == 'none' ) ? 'block' :  'none' ;
	document.getElementById(elem).innerHTML = ( document.getElementById(elem).innerHTML == swaptext1 ) ? swaptext2 : swaptext1 ;
}


function showOrder ( oid , neworder) {
	var neworder = (neworder ) ? '1' : 0 ;
	var w = 500 ;
	var h = 600 ;
	var winLeft = (screen.width - w) / 2; 
	var winUp = (screen.height - h) / 2;
	window.open ( baseHref + 'orderDetails.php?neworder=' + neworder + '&id='+ oid  ,'orderwin' ,'width='+w+',height='+h+',scrollbars=yes,left=' + winLeft + ',top='+winUp) 	
}


