/*
	tiebreakers.js
	2008, icograma.com
	requires: mootools
*/


/* debug functions */
var annoy=true;function debug(msg){if(annoy){annoy=confirm(msg);};};
function spot(obj){ $(obj).addClassName("spot");};


icgGlobals = new Object;


function pick(what){
	var what = $(what);
	var whatText = what.text;
	var whatInput = 1;
	debug( "text to set the input's value to:\n" + whatText );
}



function revealMsg(what,how){
	if(typeof(how)=="undefined"){ how = 2; }
	return hatch(what,how,'.item');
}


function rmHintEv(){ rmHint(this); }
function rmHint(what){
	if( !($(what)) ){ what=this; }
	
	if( $(what).hasClass('hint') ){
		what.value="";
		what.removeClassName('hint');
	}
}

function addHintEv(){ addHint(this); }
function addHint(what){
	if( !($(what)) ){ what=this; }
	if(what.title){
	if(what.title.indexOf("*")==0){
		var t = what.title.substring(1);
		if(what.value=="" || what.value == t){
			what.value = t;
			what.addClassName("hint");
		}
	}}
}

function dynLayoutEv(){
	alert('aca');
	if(icgGlobals.inited){
		dynLayout( window.getWidth() );
		};
	}
function dynLayout(w){
	if( w ){
		var b=document.getElementsByTagName("HTML")[0];
		/*
		b.className = w >= 960 ? "w1024" : (  w >= 760 ? "w800" : "w480" ) ;
		*/
      var sizes=new Array( 320, "w320", 580, "w640", 760, "w800", 960, "w1024" ); var sizeClass = sizes[1];
      for(var i=sizes.length-2;i>=0;i-=2){ if(w >= sizes[i] ){ sizeClass = sizes[i+1]; break;  } }
      b.className = sizeClass;
		Cookie.write("browserWidth",w,{path:"/"});
		}
	}

function icgInit(){
	if(icgGlobals.inited){ return false; }

	icgGlobals.inited = true; dynLayoutEv();        

	for( var f=0; f<document.forms.length; f++){

		var fs = document.forms[f].elements;
	
		for ( var j=0; j<fs.length; j++ ){
			if( $(fs[j]).type == "text" || $(fs[j]).type == "textarea" ){
				addHint( $(fs[j]) );
				$(fs[j]).addEvent( "blur", addHint );
				$(fs[j]).addEvent( "focus", rmHint );

			}//end type==text
		}//end j
	}//end f
	
	window.addEvent("resize",dynLayoutEv);
	
	
}//end icgInit
//window.onload = "dynLayoutEv()";
//window.addEvent('domready', icgInit); //ie goes nuts?
//window.addEvent('load', icgInit);




/* --- FORMS & DOM ---- */

function checkForm(f){ /* for mootools - 2007, icograma.com */

if(!document.getElementById){ return true; }
var oktosend=true; var fs=f.elements;

for(var i=0;i<fs.length;i++){
	if(fs[i].type&&fs[i].name){
	
	//get field value
	var ftype=fs[i].type; var efilter=false;
	if(ftype=="text"||ftype=="textarea"||ftype=="password"){
			v=fs[i].value && !$(fs[i]).hasClass("hint");
		}else if(ftype=="select-one"||ftype=="select-multiple"){
			v=fs[i][fs[i].selectedIndex].value;
		}else if(ftype=="checkbox"){
			v=fs[i].checked;
		}else{
			v="!";//other types, don't check
		}
		var isfilled = isvalid = (v!="");
	
	//special fields:
		if(fs[i].name&&fs[i].name.indexOf("mail")>-1){ ftype="email";efilter=true; }
		if(efilter){ isvalid=isValidField(fs[i].value,ftype); }
	
	//is required, or need to check if filled?
	var reqelm = FindTagClassUp(fs[i],".required","form");

	if( reqelm && fs[i].offsetWidth == 0 ){ //hidden elements can't be required
		reqelm = false;
	}else if(!reqelm&&efilter&&isfilled){
		reqelm=FindTagClassUp(fs[i],".field","form");
		if(!reqelm){reqelm=fs[i];}
	};
	
	if(!isvalid&&reqelm){
		if(oktosend&&(ftype.indexOf("mail")>-1||ftype.indexOf("text")>-1||ftype.indexOf("select")>-1) ){ fs[i].select(); }
		oktosend=false;
		fs[i].onclick=rmErrorClass; fs[i].onkeydown=rmErrorClass;
		reqelm.addClassName("error");
	}
	
	}//end filter fs
}//end for i in fs

return oktosend;
}


function FindTagClassUp(elm,tcsearch,tclimit){
var elm= $(elm);

var tc=( tcsearch+"." ).split("."); tc[0]=tc[0].toUpperCase();
if(!tclimit){tclimit="BODY";};
var tz=( tclimit+"." ).split("."); tz[0]=tz[0].toUpperCase();
	while( n = elm.nodeName ){
		
		if(tc[0]==""||n==tc[0]){
			if( tc[1]=="" || $(elm).hasClass(tc[1]) ){ return elm; }; };
		if(tz[0]==""||n==tz[0]){
			if( tz[1]=="" || $(elm).hasClass(tz[1]) ){ return false; }; };
		elm=elm.parentNode;
	};
	debug("No se pudo obtener NODENAME para: ",elm);
	return false;
};



function rmErrorClass(event){
var elm=this;var etag=FindTagClassUp(elm,".error","form");if(!etag){etag=FindTagClassUp(elm,".field","form");};if(!etag){etag=elm}
if(etag){etag.removeClassName("error");elm.onclick=null;elm.onfocus=null;elm.onkeyup=null}
}

function isValidField(t,k){
if(k=="email"){
	if( t.indexOf("@example.com")>-1){return false;};
	var emailFilter=/^.+@.+\..{2,}$/;
	var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
	if(!(emailFilter.test(t))||t.match(illegalChars)){return(false);}else{return (true);}
	return false
	}//end email
}

function rmHelpValue(t){var v=t.value;if(v.indexOf("@example.com")>-1){t.value="";};}



function cloneField(what){
	var what = $(what);
	var theField = $( what.getParent(".field") );
	
	var newField = DOMclone( theField );
	//TBD: add appear field effect
	
	$(newField).fade('hide');
	//$(newField).fade('in');
		
	return false;
}


function rmField(what,question){
	var what = $(what); var oktogo = true;
	if( question ){
		// oktogo = confirm ( "Are you sure that you want to " + (what.text).replace(/\s+$/,'') + '?' );
		oktogo = confirm ( question );
	}
	if(oktogo){
		var theField = $( what.getParent(".field") );
		//new Effect.Fade(theField);
		$(theField).FadeOut; setTimeout( function(){ DOMrm( theField ); }, 500 ); //TBD: use chain
	}
		
	return false;
}

function addLocationFrom(what){
	//FIXME? can mootools 1.2 element functions replace usage of $path?
	var what = $(what);
	var theField = $path(what, "<TABLE .field");
	var newField = DOMclone(theField);
	//FIXME: add appear field effect
	$(newField).fade('hide');
	//$(newField).fade('in');
	
	return false;
}



function DOMrm(elm){
	if( elm.parentNode ){ 
		return elm.parentNode.removeChild(elm);
		}
	}

function DOMclone(molde){
var parentobj = molde.parentNode;
var copia=molde.cloneNode(true);
var mid=molde.id;
var mida = mid.replace(/(\d+)/gi, "|$1|").split("|");
//loop until we find an unused ID
var midaz= Number(mida[mida.length-2]);var newid;
while(true){
	mida[mida.length-2] = midaz++;
	newid = mida.join("");
	if(!document.getElementById(newid)){
	break;
	};
	}
//assign new IDs to clone's ID & children elements
grepIDs(copia,new RegExp(mid, "gi"),newid);
		function grepIDs(e,oldid,newid){
		if(e.id){ e.id = e.id.replace(oldid,newid); };
		if(e.name){ e.name = e.name.replace(oldid,newid); };
		//gonna find childnodes
		var kids=e.childNodes;
		if(kids){//recursion for child nodes
				for(var i=0;i<kids.length;i++){
				grepIDs(kids[i],oldid,newid);
				};//end for
			};//end if kids
		};//end grepIDs
//add element to document
parentobj.appendChild(copia);
$(copia).removeClassName('first');

return $(copia);
};



function $path(e,c){
var e=$(e);
c=c.split(" ");

for(var i=0;i<c.length;i++){
	var cis = c[i].split(":")
	var num = cis[1]?cis[1]:"0"
	var ci=cis[0]

	if(ci=="<"){
		e=e.parentNode;
	}else if(ci.charAt(0)=="#"){
		e=document.getElementById( ci.substring(1) );
		if(!e){return false;};
	}else if(ci.charAt(0)=="."){
	var a=e.childNodes;var t=ci.substring(1);var d=false;
		for(var b=0;b<a.length;b++){
		if(a[b].nodeType == 1 && a[b].hasClass(t)){d=a[b];break;};
		};
		if(d){e=d;}else{return false;};
	}else if(ci.charAt(0)=="<"){
		e=FindTagClassUp(e.parentNode,ci.substring(1),"BODY");
		if(!e){return false;};
	}else{
	var a = e.getElementsByTagName( ci.toLowerCase() );
		if(a.length>0){
			if(num=="0"){e=a[0];
			}else if(num=="last"||num>a.length){
			e=a[a.length-1]
			}else{
			e=a[num]
			}
		}else{
			var a = document.getElementsByName(ci);
			if( a[0] ){ e=a[0]; }else{return false;};
		};
	};
	};
	return e;
};


function deleteGalleryPicture(what, question, pos){
	var oktogo = true;
		if( question ){
			// oktogo = confirm ( "Are you sure that you want to " + (what.text).replace(/\s+$/,'') + '?' );
			oktogo = confirm ( question );
		}
	if(oktogo){
		var theField = $ ( FindTagClassUp (what, 'li') );
		//handle ajax remove of image
		new Ajax.Request('../inc/ajax/eliminarimagenclub.php?pos='+pos);
		
		Effect.Fade( theField );
		setTimeout( function(){ DOMrm( theField ); }, 1010 ); //fixme: use chaining of events instead
	}
	return false;
}
