// Scripts for records.sostanze.it;
// Developed and mantained by Diego Caponera [diego.caponera@gmail.com];

//returns true or false wether given email address is valid or not
function isMailValid(mail){
	var objRegExp = new RegExp("([_\.0-9a-z-]+@)([0-9a-z][0-9a-z-]+\.)+([a-z]{2,3})");  
	return objRegExp.test(mail);
}

//returns true or false wether given url address is valid or not
function isUrlValid(url){
	var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
	return regexp.test(url);
}

//returns true or false wether given string is alphanumeric or not
function isAlphanumeric(string){
	var objRegExp = new RegExp("[_\.0-9a-z A-Z]");  
	return objRegExp.test(string);	
}

//returns true or false wether given string is numeric or not
function isNumeric(string){
	var objRegExp = new RegExp("[\.0-9]");  
	return objRegExp.test(string);	
}

//returns true or false wether given string is alphabetic or not
function isAlphabetic(string){
	var objRegExp = new RegExp("[a-z]");  
	return objRegExp.test(string);	
}

//returns true or false wether given string is a picture filename or not
function isPictureFile(string){
	var objRegExp = new RegExp("^([a-zA-Z].*|[1-9].*)\.(((j|J)(p|P)(g|G))|((p|P)(n|N)(g|G)))$");  
	return objRegExp.test(string);
}

// string check handler
function isValid(string,checkMode){
	var check=false;
	switch(checkMode){
		case "alphabetic":
			check=isAlphabetic(string);
			break;
		case "alphanumeric":
			check=isAlphanumeric(string);
			break;
		case "numeric":
			check=isNumeric(string);
			break;
		case "link":
			check=isUrlValid(string);
			break;
		case "email":
			check=isMailValid(string);
			break;
		case "picture":
			check=isPictureFile(string);
			break;
		case "positive":
			check=string>0;
			break;
		case "captcha":
			check=string.length==5;
			break;
		default:
			check=true;
			break;
	}
	return check;
}

// validates form
function validate(formId){
	$fields = $("#"+formId+" .formItem");
	var errCount=0;
	
	$.each($fields,function(k,v){
		$classes=$(v).attr('class').split(' ');
		
		if($(v).hasClass("text") && $classes[2]=="needed"){
			if(tinyMCE.get($(v).attr('id')).getContent()==""){
				errCount++;
				$('#'+formId+'_text').css("border","2px solid red");				
			}else
				$('#'+formId+'_'+$(v).attr('id')).css("border","2px solid green");
		}else{
			if(($classes[2]=="needed" && v.value=="") || (v.value!="" && !isValid(v.value,$classes[1]))){
				errCount++;
				$(v).removeClass('formValid').addClass('formAlert');
			}else{
				$(v).removeClass('formAlert').addClass('formValid');
			}			
		}	
	});
	
	if(errCount>0){
		$('#'+formId+' .formAlerts').show('slow');
		setTimeout(function(){$('#'+formId+' .formAlerts').fadeOut('slow');}, 5000);
	}
	return errCount==0;
}

function initTinyMCE(){
	tinyMCE.init({
		mode : "textareas",
		theme : "advanced",			
		plugins : "media",
		theme_advanced_disable : "styleselect ",
		theme_advanced_buttons1_add: "fontsizeselect, fontselect",
		theme_advanced_buttons2_add: "media",					
		theme_advanced_buttons3: "", 
		theme_advanced_blockformats : "pre,p,div,h1,h2,h3,h4,h5,h6,blockquote,code",
		theme_advanced_statusbar_location : "bottom",
		theme_advanced_resizing : true,
		theme_advanced_resize_horizontal : false,
		force_p_newlines : false,
		force_br_newlines : false,
		convert_newlines_to_brs : false,
		remove_linebreaks : false,
		paste_create_paragraphs : false,
		paste_create_linebreaks: true,
		paste_auto_cleanup_on_paste : true,	
		document_base_url : "http://records.sostanze.it",    
	    relative_urls : false, 
	    remove_script_host : false,						
	});	
}

function refreshCaptcha(id){
	var seed=Math.random();
	var pic="captcha/captcha.php?seed="+seed;
	$("#"+id+"_captcha").attr({ src : pic });
	$("#"+id+"_captchaSeed").val(seed);
}

function SHA1 (msg) {
 
	function rotate_left(n,s) {
		var t4 = ( n<<s ) | (n>>>(32-s));
		return t4;
	};
 
	function lsb_hex(val) {
		var str="";
		var i;
		var vh;
		var vl;
 
		for( i=0; i<=6; i+=2 ) {
			vh = (val>>>(i*4+4))&0x0f;
			vl = (val>>>(i*4))&0x0f;
			str += vh.toString(16) + vl.toString(16);
		}
		return str;
	};
 
	function cvt_hex(val) {
		var str="";
		var i;
		var v;
 
		for( i=7; i>=0; i-- ) {
			v = (val>>>(i*4))&0x0f;
			str += v.toString(16);
		}
		return str;
	};
 
 
	function Utf8Encode(string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	};
 
	var blockstart;
	var i, j;
	var W = new Array(80);
	var H0 = 0x67452301;
	var H1 = 0xEFCDAB89;
	var H2 = 0x98BADCFE;
	var H3 = 0x10325476;
	var H4 = 0xC3D2E1F0;
	var A, B, C, D, E;
	var temp;
 
	msg = Utf8Encode(msg);
 
	var msg_len = msg.length;
 
	var word_array = new Array();
	for( i=0; i<msg_len-3; i+=4 ) {
		j = msg.charCodeAt(i)<<24 | msg.charCodeAt(i+1)<<16 |
		msg.charCodeAt(i+2)<<8 | msg.charCodeAt(i+3);
		word_array.push( j );
	}
 
	switch( msg_len % 4 ) {
		case 0:
			i = 0x080000000;
		break;
		case 1:
			i = msg.charCodeAt(msg_len-1)<<24 | 0x0800000;
		break;
 
		case 2:
			i = msg.charCodeAt(msg_len-2)<<24 | msg.charCodeAt(msg_len-1)<<16 | 0x08000;
		break;
 
		case 3:
			i = msg.charCodeAt(msg_len-3)<<24 | msg.charCodeAt(msg_len-2)<<16 | msg.charCodeAt(msg_len-1)<<8	| 0x80;
		break;
	}
 
	word_array.push( i );
 
	while( (word_array.length % 16) != 14 ) word_array.push( 0 );
 
	word_array.push( msg_len>>>29 );
	word_array.push( (msg_len<<3)&0x0ffffffff );
 
 
	for ( blockstart=0; blockstart<word_array.length; blockstart+=16 ) {
 
		for( i=0; i<16; i++ ) W[i] = word_array[blockstart+i];
		for( i=16; i<=79; i++ ) W[i] = rotate_left(W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16], 1);
 
		A = H0;
		B = H1;
		C = H2;
		D = H3;
		E = H4;
 
		for( i= 0; i<=19; i++ ) {
			temp = (rotate_left(A,5) + ((B&C) | (~B&D)) + E + W[i] + 0x5A827999) & 0x0ffffffff;
			E = D;
			D = C;
			C = rotate_left(B,30);
			B = A;
			A = temp;
		}
 
		for( i=20; i<=39; i++ ) {
			temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff;
			E = D;
			D = C;
			C = rotate_left(B,30);
			B = A;
			A = temp;
		}
 
		for( i=40; i<=59; i++ ) {
			temp = (rotate_left(A,5) + ((B&C) | (B&D) | (C&D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff;
			E = D;
			D = C;
			C = rotate_left(B,30);
			B = A;
			A = temp;
		}
 
		for( i=60; i<=79; i++ ) {
			temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff;
			E = D;
			D = C;
			C = rotate_left(B,30);
			B = A;
			A = temp;
		}
 
		H0 = (H0 + A) & 0x0ffffffff;
		H1 = (H1 + B) & 0x0ffffffff;
		H2 = (H2 + C) & 0x0ffffffff;
		H3 = (H3 + D) & 0x0ffffffff;
		H4 = (H4 + E) & 0x0ffffffff;
 
	}
 
	var temp = cvt_hex(H0) + cvt_hex(H1) + cvt_hex(H2) + cvt_hex(H3) + cvt_hex(H4);
 
	return temp.toLowerCase();
 
}
