/**
 * @author <a href="http://meia5.com">Media5</a> - <a href="mailto:banzalik@media5.com">Бойченко Александр</a>
 * @description скрипты для m5 css framework
 */
 
 /**
 * @description полная загрузка страницы, картинки при этом уже загрузились
 */
window.onload=documentLoaded; // присваиваем функцию documentLoaded

/**
 * @description вызов функций при полной загрузке страницы, картинки при этом уже загрузились
 */
function documentLoaded(){
	
}


/**
 * @description вызов функций при полной загрузке DOM дерева, картинки при этом еще не загрузились
 */
$(document).ready(function(){
			autoclearInput(); // input/textarea clear script
			m5formsWidthNormalize();		 // 	
			faq();
			Fscroll();
})


/**
 * @description очистка инпутов, при клике на них
 */
function autoclearInput(){
	$("input.autoclear, textarea.autoclear").each(function(){
		var thisCache=$(this); // кешируем выборку
		thisCache.attr("defaultvalue",thisCache.attr("value")); // записываем в defaultvalue значение по умолчанию, необходимо для проверки нового стекста со старым
	});

	$("input.autoclear, textarea.autoclear").click(function(){ 
		var thisCache=$(this); // кешируем выборку
		if (thisCache.attr("value")==thisCache.attr("defaultvalue")) { // проверяем совпадают ли value и defaultvalue
			thisCache.attr("value", ""); // сбрасываем значение value
		}
	})
}


/**
 * @description выравнивание input[type=text], input[type=password], textarea
 */
function m5formsWidthNormalize(){
	var browserCache=$.browser;
	if (browserCache.msie && browserCache.version<7) {	
		$("select.m5formsNormalize").each(function(i){
			var thisCache=$(this); // кешируем выборку
			var m5formnormalizepadding=Math.ceil(Number(String(thisCache.css("padding-left")).slice(0,-2)))+Math.ceil(Number(String(thisCache.css("padding-right")).slice(0,-2))); // считаем padding
			var m5formnormalizeborder= Math.ceil(Number(String(thisCache.css("border-left-width")).slice(0,-2)))+Math.ceil(Number(String(thisCache.css("border-right-width")).slice(0,-2))); // считаем border
			var m5formnormalizewidth=Math.ceil(Number(thisCache.width()))+m5formnormalizepadding*6+m5formnormalizeborder*2;
			thisCache.width(m5formnormalizewidth);
		})			
	} else {		
		$("input[type=text].m5formsNormalize, input[type=password].m5formsNormalize, textarea.m5formsNormalize").each(function(i){	
			var thisCache=$(this);  // кешируем выборку
			var m5formnormalizepadding=Math.ceil(Number(String(thisCache.css("padding-left")).slice(0,-2)))+Math.ceil(Number(String(thisCache.css("padding-right")).slice(0,-2))); // считаем padding
			var m5formnormalizewidth=Math.ceil(Number(thisCache.width()))-m5formnormalizepadding;			
			thisCache.width(m5formnormalizewidth);
			})
		$("select.m5formsNormalize").each(function(i){		
			var thisCache=$(this);  // кешируем выборку				
			var m5formnormalizepadding=Math.ceil(Number(String(thisCache.css("padding-left")).slice(0,-2)))+Math.ceil(Number(String(thisCache.css("padding-right")).slice(0,-2))); // считаем padding
			var m5formnormalizeborder= Math.ceil(Number(String(thisCache.css("border-left-width")).slice(0,-2)))+Math.ceil(Number(String(thisCache.css("border-right-width")).slice(0,-2))); // считаем border
			var m5formnormalizewidth=Math.ceil(Number(thisCache.width()))+m5formnormalizepadding+m5formnormalizeborder;
			thisCache.width(m5formnormalizewidth);
		})		
	}
}

function faq(){
	$(".faq>li>a").click(function(){
					   $(this).parent().toggleClass('open');
					   return false;
					   }
	);
	
	
	$(".faqr>a").click(function(){
					   $(this).parent().toggleClass('open');
					   return false;
					   }
	);
	
}




function Fscroll(){
	$(".selectPhone").click(function(){
					$(".scroll").toggle();
					return false;
	})
	$(".scroll-pane a").live("click", function(){
					$(".scroll").toggle();					
					$(".selectPhone span").html($(this).text());
					var ajaxUrl=$(this).attr("href");
					var target=ajaxUrl+" body table";
					//console.log(target);
					$(".tariffCont").load(ajaxUrl);
					return false;
    });
}

function in_array(needle, haystack, argStrict) { 
    var key = '', strict = !!argStrict; 
    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) {
                return true;
            }
        }
    } else {
        for (key in haystack) {
            if (haystack[key] == needle) {
                return true;
            }
        }
    } 
    return false;
}

function in_array_count(needle, haystack, argStrict) { 
    var key = '', strict = !!argStrict; 
    var i=0;
    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) {
                i++;
            }
        }
    } else {
        for (key in haystack) {
            if (haystack[key] == needle) {
                i++;
            }
        }
    } 
    return i;
}

function str_replace(search, replace, subject) {
    var f = search, r = replace, s = subject;
    var ra = r instanceof Array, sa = s instanceof Array, f = [].concat(f), r = [].concat(r), i = (s = [].concat(s)).length;
 
    while (j = 0, i--) {
        if (s[i]) {
            while (s[i] = (s[i]+'').split(f[j]).join(ra ? r[j] || "" : r[0]), ++j in f){};
        }
    };
 
    return sa ? s : s[0];
}

function urldecode( str ) {
    var hash_map = {}, ret = str.toString(), unicodeStr='', hexEscStr='';
    
    var replacer = function(search, replace, str) {
        var tmp_arr = [];
        tmp_arr = str.split(search);
        return tmp_arr.join(replace);
    };
    

    hash_map["'"]   = '%27';
    hash_map['(']   = '%28';
    hash_map[')']   = '%29';
    hash_map['*']   = '%2A';
    hash_map['~']   = '%7E';
    hash_map['!']   = '%21';
    hash_map['%20'] = '+';
    hash_map['\u00DC'] = '%DC';
    hash_map['\u00FC'] = '%FC';
    hash_map['\u00C4'] = '%D4';
    hash_map['\u00E4'] = '%E4';
    hash_map['\u00D6'] = '%D6';
    hash_map['\u00F6'] = '%F6';
    hash_map['\u00DF'] = '%DF';
    hash_map['\u20AC'] = '%80';
    hash_map['\u0081'] = '%81';
    hash_map['\u201A'] = '%82';
    hash_map['\u0192'] = '%83';
    hash_map['\u201E'] = '%84';
    hash_map['\u2026'] = '%85';
    hash_map['\u2020'] = '%86';
    hash_map['\u2021'] = '%87';
    hash_map['\u02C6'] = '%88';
    hash_map['\u2030'] = '%89';
    hash_map['\u0160'] = '%8A';
    hash_map['\u2039'] = '%8B';
    hash_map['\u0152'] = '%8C';
    hash_map['\u008D'] = '%8D';
    hash_map['\u017D'] = '%8E';
    hash_map['\u008F'] = '%8F';
    hash_map['\u0090'] = '%90';
    hash_map['\u2018'] = '%91';
    hash_map['\u2019'] = '%92';
    hash_map['\u201C'] = '%93';
    hash_map['\u201D'] = '%94';
    hash_map['\u2022'] = '%95';
    hash_map['\u2013'] = '%96';
    hash_map['\u2014'] = '%97';
    hash_map['\u02DC'] = '%98';
    hash_map['\u2122'] = '%99';
    hash_map['\u0161'] = '%9A';
    hash_map['\u203A'] = '%9B';
    hash_map['\u0153'] = '%9C';
    hash_map['\u009D'] = '%9D';
    hash_map['\u017E'] = '%9E';
    hash_map['\u0178'] = '%9F';
 
    for (unicodeStr in hash_map) {
        hexEscStr = hash_map[unicodeStr]; 
        ret = replacer(hexEscStr, unicodeStr, ret); 
    }    
    
    ret = decodeURIComponent(ret);
 
    return ret;
}

function urlencode( str ) {
                   
    var hash_map = {}, unicodeStr='', hexEscStr='';
    var ret = (str+'').toString();
    
    var replacer = function(search, replace, str) {
        var tmp_arr = [];
        tmp_arr = str.split(search);
        return tmp_arr.join(replace);
    };
    

    hash_map["'"]   = '%27';
    hash_map['(']   = '%28';
    hash_map[')']   = '%29';
    hash_map['*']   = '%2A';
    hash_map['~']   = '%7E';
    hash_map['!']   = '%21';
    hash_map['%20'] = '+';
    hash_map['\u00DC'] = '%DC';
    hash_map['\u00FC'] = '%FC';
    hash_map['\u00C4'] = '%D4';
    hash_map['\u00E4'] = '%E4';
    hash_map['\u00D6'] = '%D6';
    hash_map['\u00F6'] = '%F6';
    hash_map['\u00DF'] = '%DF';
    hash_map['\u20AC'] = '%80';
    hash_map['\u0081'] = '%81';
    hash_map['\u201A'] = '%82';
    hash_map['\u0192'] = '%83';
    hash_map['\u201E'] = '%84';
    hash_map['\u2026'] = '%85';
    hash_map['\u2020'] = '%86';
    hash_map['\u2021'] = '%87';
    hash_map['\u02C6'] = '%88';
    hash_map['\u2030'] = '%89';
    hash_map['\u0160'] = '%8A';
    hash_map['\u2039'] = '%8B';
    hash_map['\u0152'] = '%8C';
    hash_map['\u008D'] = '%8D';
    hash_map['\u017D'] = '%8E';
    hash_map['\u008F'] = '%8F';
    hash_map['\u0090'] = '%90';
    hash_map['\u2018'] = '%91';
    hash_map['\u2019'] = '%92';
    hash_map['\u201C'] = '%93';
    hash_map['\u201D'] = '%94';
    hash_map['\u2022'] = '%95';
    hash_map['\u2013'] = '%96';
    hash_map['\u2014'] = '%97';
    hash_map['\u02DC'] = '%98';
    hash_map['\u2122'] = '%99';
    hash_map['\u0161'] = '%9A';
    hash_map['\u203A'] = '%9B';
    hash_map['\u0153'] = '%9C';
    hash_map['\u009D'] = '%9D';
    hash_map['\u017E'] = '%9E';
    hash_map['\u0178'] = '%9F';
    

    ret = encodeURIComponent(ret);
 
    for (unicodeStr in hash_map) {
        hexEscStr = hash_map[unicodeStr];
        ret = replacer(unicodeStr, hexEscStr, ret); 
    }
    
 
    return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2) {
        return "%"+m2.toUpperCase();
    });
}

function CheckNumber(field)
{
	var reg = /^[0-9]*$/;
	if (!field.match(reg))
		return false;
	return true;	
}

function translite(tex,direction){
	var lat=new Array("jo","zh","i'","ch","sh","xh","je","ju","ja","a","b","v","g","d","e","z","i","k","l","m","n","o","p","r","s","t","u","f","x","c","'","      y","`","j","h");
	var cyr=new Array("ё","ж","й","ч","ш","щ","э","ю","я","а","б","в","г","д","е","з","и","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ь","ы","ъ","ж      ","х");
	
	var latcap=new Array("JO","Jo","ZH","Zh","I'","Ch","CH","Sh","SH","Xh","XH","Je","JE","Ju","JU","Ja","JA","A","B","V","G","D","E","Z","I","K","L","M","N","      O","P","R","S","T","U","F","X","C","Y","J","H");
	var cyrcap=new Array("Ё","Ё","Ж","Ж","Й","Ч","Ч","Ш","Ш","Щ","Щ","Э","Э","Ю","Ю","Я","Я","А","Б","В","Г","Д","Е","З","И","К","Л","М","Н","О","П","Р","С","Т      ","У","Ф","Х","Ц","Ы","Ж","Х");


	var buf=tex;
	var i;
	switch(direction){
		case "cyr":
			for (i=0;i<latcap.length;i++)
			        {
			        buf=replace(buf,latcap[i],cyrcap[i],1,0);
			        }
			
			for (i=0;i<lat.length;i++)
			        {
			        buf=replace(buf,lat[i],cyr[i],1,0);
			        }
			break;
		case "lat":
			for (i=0;i<latcap.length;i++)
			        {
			        buf=replace(buf,cyrcap[i],latcap[i],1,0);
			        }
			
			for (i=0;i<lat.length;i++)
			        {
			        buf=replace(buf,cyr[i],lat[i],1,0);
			        }
			break;
	}
	tex=buf;
	return tex;
}

function replace(target,oldTerm,newTerm,caseSens,wordOnly) {
        var work = target;
        var ind = 0;
        var next = 0;

        if (!caseSens) {
          oldTerm = oldTerm.toLowerCase();
          work = target.toLowerCase();
        }

        while ((ind = work.indexOf(oldTerm,next)) >= 0) {
          if (wordOnly) {
            var before = ind - 1;
            var after = ind + oldTerm.length;
            if (!(space(work.charAt(before)) && space(work.charAt(after)))) {
              next = ind + oldTerm.length;
              continue;
            }
          }
          target = target.substring(0,ind) + newTerm +
          target.substring(ind+oldTerm.length,target.length);
          work = work.substring(0,ind) + newTerm +
          work.substring(ind+oldTerm.length,work.length);
          next = ind + newTerm.length;
          if (next >= work.length) { break; }
        }		
        return target;		
}


function strip_tags (str, allowed_tags) {

    var key = '', allowed = false;
    var matches = [];
    var allowed_array = [];
    var allowed_tag = '';
    var i = 0;
    var k = '';
    var html = '';
 
    var replacer = function (search, replace, str) {
        return str.split(search).join(replace);
    };
 
    // Build allowes tags associative array
    if (allowed_tags) {
        allowed_array = allowed_tags.match(/([a-zA-Z0-9]+)/gi);
    }
 
    str += '';
 
    // Match tags
    matches = str.match(/(<\/?[\S][^>]*>)/gi);
 
    // Go through all HTML tags
    for (key in matches) {
        if (isNaN(key)) {
            // IE7 Hack
            continue;
        }
 
        // Save HTML tag
        html = matches[key].toString();
 
        // Is tag not in allowed list? Remove from str!
        allowed = false;
 
        // Go through all allowed tags
        for (k in allowed_array) {
            // Init
            allowed_tag = allowed_array[k];
            i = -1;
 
            if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+'>');}
            if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+' ');}
            if (i != 0) { i = html.toLowerCase().indexOf('</'+allowed_tag)   ;}
 
            // Determine
            if (i == 0) {
                allowed = true;
                break;
            }
        }
 
        if (!allowed) {
            str = replacer(html, "", str); // Custom replace. No regexing
        }
    }
}

